diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index df15747..8b988db 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -30,7 +30,6 @@ jobs: run: | go install golang.org/x/tools/cmd/goimports@latest go install honnef.co/go/tools/cmd/staticcheck@latest - go install github.com/beeper/pre-commit-go/bridgelint@latest export PATH="$HOME/go/bin:$PATH" - name: Run pre-commit diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f1fe9c..c9cc6a3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,10 +22,7 @@ repos: # TODO: reenable this and fix all the problems - repo: https://github.com/beeper/pre-commit-go - rev: v0.5.0 + rev: v0.4.2 hooks: - id: zerolog-ban-msgf - id: zerolog-use-stringer - - id: bridgelint - language: system - verbose: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e00a62..a0d718c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,38 +1,7 @@ -# v26.11 (unreleased) - -* Updated libsignal to v0.106.1. -* Added support for sending more than 2048 characters of text to Signal by - uploading the rest of the text as an attachment, like official clients do. -* Added automatic retrying of group message sends if the server returns a 500 - or 503 error. -* Added support for encrypting direct media with FLOE ([MSC4571]). -* Fixed memory leak in libsignal store implementation. - -[MSC4571]: https://github.com/matrix-org/matrix-spec-proposals/pull/4571 - -# v26.10 - -* Updated libsignal to v0.105.0. -* Added support for phonenumberless accounts. -* Added support for starting chats with usernames and username links. -* Added support for blocking and unblocking users on Signal. -* Added support for new view-limited media interface in bridgev2. -* Added proper sender certificate validation. -* Changed storage sync to only sync once if repeated fetch latest notices are - received. -* Fixed contact syncs not happening even when `sync_contacts_on_startup` was - set to true. -* Fixed Signal encryption using wrong timestamp precision for session expiry. -* Fixed sender key sharing not handling removed users properly. -* Fixed handling retry receipts with no sender key info. -* Fixed deadlock in prekey upload loop if the client gets logged out. -* Fixed infinite loop when importing sticker packs with duplicate emoji - shortcuts. - # v26.09 * Bumped minimum Go version to 1.26. -* Updated libsignal to v0.102.2. +* Updated libsignal to v1.102.2. * Fixed handling messages with invalid values in formatting body ranges. * Fixed websocket request retrying not working correctly if the first attempt times out. diff --git a/cmd/mautrix-signal/legacyprovision.go b/cmd/mautrix-signal/legacyprovision.go new file mode 100644 index 0000000..c9061ac --- /dev/null +++ b/cmd/mautrix-signal/legacyprovision.go @@ -0,0 +1,147 @@ +// mautrix-signal - A Matrix-Signal puppeting bridge. +// Copyright (C) 2024 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is istributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package main + +import ( + "encoding/json" + "fmt" + "net/http" + + "github.com/rs/zerolog" + "maunium.net/go/mautrix" + "maunium.net/go/mautrix/bridgev2" + "maunium.net/go/mautrix/id" +) + +func legacyResolveIdentifierOrStartChat(w http.ResponseWriter, r *http.Request, create bool) { + login := m.Matrix.Provisioning.GetLoginForRequest(w, r) + if login == nil { + return + } + api := login.Client.(bridgev2.IdentifierResolvingNetworkAPI) + phonenum := r.PathValue("phonenum") + resp, err := api.ResolveIdentifier(r.Context(), phonenum, create) + if err != nil { + zerolog.Ctx(r.Context()).Err(err).Msg("Failed to resolve identifier") + JSONResponse(w, http.StatusInternalServerError, &Error{ + Error: fmt.Sprintf("Failed to resolve identifier: %v", err), + ErrCode: "M_UNKNOWN", + }) + return + } else if resp == nil { + JSONResponse(w, http.StatusNotFound, &Error{ + ErrCode: mautrix.MNotFound.ErrCode, + Error: "User not found on Signal", + }) + return + } + status := http.StatusOK + apiResp := &ResolveIdentifierResponse{ + ChatID: ResolveIdentifierResponseChatID{ + UUID: string(resp.UserID), + Number: phonenum, + }, + } + if resp.Ghost != nil { + if resp.UserInfo != nil { + resp.Ghost.UpdateInfo(r.Context(), resp.UserInfo) + } + apiResp.OtherUser = &ResolveIdentifierResponseOtherUser{ + MXID: resp.Ghost.Intent.GetMXID(), + DisplayName: resp.Ghost.Name, + AvatarURL: resp.Ghost.AvatarMXC.ParseOrIgnore(), + } + } + if resp.Chat != nil { + if resp.Chat.Portal == nil { + resp.Chat.Portal, err = m.Bridge.GetPortalByKey(r.Context(), resp.Chat.PortalKey) + if err != nil { + zerolog.Ctx(r.Context()).Err(err).Msg("Failed to get portal") + JSONResponse(w, http.StatusInternalServerError, &mautrix.RespError{ + Err: "Failed to get portal", + ErrCode: "M_UNKNOWN", + }) + return + } + } + if create && resp.Chat.Portal.MXID == "" { + apiResp.JustCreated = true + status = http.StatusCreated + err = resp.Chat.Portal.CreateMatrixRoom(r.Context(), login, resp.Chat.PortalInfo) + if err != nil { + zerolog.Ctx(r.Context()).Err(err).Msg("Failed to create portal room") + JSONResponse(w, http.StatusInternalServerError, &mautrix.RespError{ + Err: "Failed to create portal room", + ErrCode: "M_UNKNOWN", + }) + return + } + } + apiResp.RoomID = resp.Chat.Portal.MXID + } + JSONResponse(w, status, &Response{ + Success: true, + Status: "ok", + ResolveIdentifierResponse: apiResp, + }) +} + +func legacyProvResolveIdentifier(w http.ResponseWriter, r *http.Request) { + legacyResolveIdentifierOrStartChat(w, r, false) +} + +func legacyProvPM(w http.ResponseWriter, r *http.Request) { + legacyResolveIdentifierOrStartChat(w, r, true) +} + +func JSONResponse(w http.ResponseWriter, status int, response any) { + w.Header().Add("Content-Type", "application/json") + w.WriteHeader(status) + _ = json.NewEncoder(w).Encode(response) +} + +type Error struct { + Success bool `json:"success"` + Error string `json:"error"` + ErrCode string `json:"errcode"` +} + +type Response struct { + Success bool `json:"success"` + Status string `json:"status"` + + // For response in ResolveIdentifier + *ResolveIdentifierResponse +} + +type ResolveIdentifierResponse struct { + RoomID id.RoomID `json:"room_id"` + ChatID ResolveIdentifierResponseChatID `json:"chat_id"` + JustCreated bool `json:"just_created"` + OtherUser *ResolveIdentifierResponseOtherUser `json:"other_user,omitempty"` +} + +type ResolveIdentifierResponseChatID struct { + UUID string `json:"uuid"` + Number string `json:"number"` +} + +type ResolveIdentifierResponseOtherUser struct { + MXID id.UserID `json:"mxid"` + DisplayName string `json:"displayname"` + AvatarURL id.ContentURI `json:"avatar_url"` +} diff --git a/cmd/mautrix-signal/main.go b/cmd/mautrix-signal/main.go index b5eda11..703d779 100644 --- a/cmd/mautrix-signal/main.go +++ b/cmd/mautrix-signal/main.go @@ -37,7 +37,7 @@ var m = mxmain.BridgeMain{ Name: "mautrix-signal", URL: "https://github.com/mautrix/signal", Description: "A Matrix-Signal puppeting bridge.", - Version: "26.10", + Version: "26.09", SemCalVer: true, Connector: &connector.SignalConnector{}, @@ -45,6 +45,12 @@ var m = mxmain.BridgeMain{ func main() { web.UserAgent = fmt.Sprintf("mautrix-signal/%s %s", m.Version, web.BaseUserAgent) + m.PostStart = func() { + if m.Matrix.Provisioning != nil { + m.Matrix.Provisioning.Router.HandleFunc("GET /v2/resolve_identifier/{phonenum}", legacyProvResolveIdentifier) + m.Matrix.Provisioning.Router.HandleFunc("POST /v2/pm/{phonenum}", legacyProvPM) + } + } m.InitVersion(Tag, Commit, BuildTime) m.Run() } diff --git a/go.mod b/go.mod index 2847afc..93eb572 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.mau.fi/mautrix-signal go 1.26.0 -toolchain go1.27.2 +toolchain go1.27.1 tool go.mau.fi/util/cmd/maubuild @@ -13,16 +13,16 @@ require ( github.com/mattn/go-pointer v0.0.1 github.com/rs/zerolog v1.35.1 github.com/stretchr/testify v1.12.0 - github.com/tidwall/gjson v1.20.0 - go.mau.fi/util v0.11.0 - golang.org/x/crypto v0.58.0 - golang.org/x/exp v0.0.0-20261014143641-f0251eb4aa3e - golang.org/x/net v0.61.0 - golang.org/x/sync v0.24.0 - google.golang.org/grpc v1.84.0 + github.com/tidwall/gjson v1.19.0 + go.mau.fi/util v0.10.1 + golang.org/x/crypto v0.57.0 + golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba + golang.org/x/net v0.59.0 + golang.org/x/sync v0.23.0 + google.golang.org/grpc v1.83.2 google.golang.org/protobuf v1.36.12 gopkg.in/yaml.v3 v3.0.1 - maunium.net/go/mautrix v0.32.1-0.20261026145030-920bc073ba8d + maunium.net/go/mautrix v0.31.0 ) require ( @@ -33,7 +33,7 @@ require ( github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v1.14.52 // indirect - github.com/petermattis/goid v0.0.0-20260918085751-abfca077860b // indirect + github.com/petermattis/goid v0.0.0-20260820044319-269ab09b5261 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/rs/xid v1.6.0 // indirect github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect @@ -42,10 +42,10 @@ require ( github.com/tidwall/sjson v1.2.5 // indirect github.com/yuin/goldmark v1.8.6 // indirect go.mau.fi/zeroconfig v0.2.0 // indirect - golang.org/x/mod v0.42.0 // indirect - golang.org/x/sys v0.49.0 // indirect - golang.org/x/text v0.43.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800 // indirect + golang.org/x/mod v0.41.0 // indirect + golang.org/x/sys v0.48.0 // indirect + golang.org/x/text v0.42.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect maunium.net/go/mauflag v1.0.0 // indirect diff --git a/go.sum b/go.sum index 0da95ea..606a4ad 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= 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/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coder/websocket v1.8.15 h1:6B2JPeOGlpff2Uz6vOEH1Vzpi0iUz20A+lPVhPHtNUA= github.com/coder/websocket v1.8.15/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= @@ -9,6 +11,10 @@ github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/emersion/go-vcard v0.0.0-20241024213814-c9703dde27ff h1:4N8wnS3f1hNHSmFD5zgFkWCyA4L1kCDkImPAtK7D6tg= github.com/emersion/go-vcard v0.0.0-20241024213814-c9703dde27ff/go.mod h1:HMJKR5wlh/ziNp+sHEDV2ltblO4JD2+IdDOWtGcQBTM= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -32,8 +38,8 @@ github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/mattn/go-sqlite3 v1.14.52 h1:wVbm2Qnf4OXkqhBTSPuCRZDRnxfbVrrmiCEroVdog8U= github.com/mattn/go-sqlite3 v1.14.52/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9sB6w= -github.com/petermattis/goid v0.0.0-20260918085751-abfca077860b h1:OzNsuVdSWGwXvWKTtChx9ve89k4cFJ6NxYM4Aw4/f+E= -github.com/petermattis/goid v0.0.0-20260918085751-abfca077860b/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20260820044319-269ab09b5261 h1:lcWAnrqr2nNfDiArwFNHCE4787Mw2tCdVSOXCru0/0E= +github.com/petermattis/goid v0.0.0-20260820044319-269ab09b5261/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= @@ -47,8 +53,8 @@ github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDq github.com/stretchr/testify v1.12.0 h1:K6Mr6jO9JICuend/5xzTM03ydSV3vdNRYAdPSukj8uI= github.com/stretchr/testify v1.12.0/go.mod h1:bOYBZb5qJ00vPzWfIqBUZPaxK8jWiXc6d3ErP4Ca9Gw= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.20.0 h1:+agJ3rEzKcCXKDKo0ml26UROcpcAlnZyjq+TjbY5Fto= -github.com/tidwall/gjson v1.20.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= @@ -59,31 +65,43 @@ 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/yuin/goldmark v1.8.6 h1:d0VcaP1sx9GkFVkoW+KtggpGi2KZ965i14b0+bDQST4= github.com/yuin/goldmark v1.8.6/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= -go.mau.fi/util v0.11.0 h1:JNEpkVRxfTdJUC0DIGKiRlLKzl4G/qLX/eVzoP7QuwY= -go.mau.fi/util v0.11.0/go.mod h1:04AEFVsc4zNdIkDC1gkdqbg/nZFolHY50pyXh2DSy7s= +go.mau.fi/util v0.10.1 h1:1oSqb4TwzLA0cUDY0aomyBPFKkZ3J5fqCmrXV3VH3GQ= +go.mau.fi/util v0.10.1/go.mod h1:40TDo7/ekSeOjgr8KAmX31Yf4zrOF94j83WQB+u5ZPc= go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU= go.mau.fi/zeroconfig v0.2.0/go.mod h1:J0Vn0prHNOm493oZoQ84kq83ZaNCYZnq+noI1b1eN8w= -golang.org/x/crypto v0.58.0 h1:COkYLr4k7nDI4r6QtMML2AfzeIswWHAJthLS6K/M/54= -golang.org/x/crypto v0.58.0/go.mod h1:Xh+kl5A+M0gMiWDytH2Hhr5Z7WbNCpv/eB/EFgfSk+w= -golang.org/x/exp v0.0.0-20261014143641-f0251eb4aa3e h1:HgI6W1OolKK6tcV74is+rl9SMT0njsHlp0TbQiGXI/A= -golang.org/x/exp v0.0.0-20261014143641-f0251eb4aa3e/go.mod h1:DBoxwWhjaW8DJJw/YeM4zpeOKMC1FMXSblsYy+1mFSw= -golang.org/x/mod v0.42.0 h1:ICeL3t2L30ljSPHHxDnR4fqVcBt/zR2zJAb9juavmQg= -golang.org/x/mod v0.42.0/go.mod h1:u5fzIrRInkL8MaO1cbRkUHT64v303YIT5KEqpNr7jRs= -golang.org/x/net v0.61.0 h1:RR+6j/BTBCrggOLugxa+66R8FvoN6MHlzDlZIbN9YFw= -golang.org/x/net v0.61.0/go.mod h1:WgDCOTH8iwtB66T4/GfI94AHo/hhdb7Hah9NDseQfiI= -golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA= -golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= +go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= +go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= +go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= +go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= +go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= +go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI= +go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= +go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= +go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= +golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M= +golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA= +golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba h1:Ck8QetSgk912qxWLMCKxd0in+aiyBQyDSMae6e/xmpU= +golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba/go.mod h1:50RgIsmK7OwqzTTeqcSXQW8SswW0o8fRcDxmqGluJ8E= +golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c= +golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= +golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk= +golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA= -golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= -golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc= -golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= +golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800 h1:qEHAMpSaUhtD0p3NbEEI83HwNGFxEwaSJ1G9PLnCBZE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260706201446-f0a921348800/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= -google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= -google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= +google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -95,5 +113,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 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/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= -maunium.net/go/mautrix v0.32.1-0.20261026145030-920bc073ba8d h1:DsMn0i7cBKcQZ0AVxJm9hfWAu6xJdjRrf457EtXxyNY= -maunium.net/go/mautrix v0.32.1-0.20261026145030-920bc073ba8d/go.mod h1:tZSwPzw+/0pa0dxGufkh0uJqM84BNxB6e2I0+S0UyjU= +maunium.net/go/mautrix v0.31.0 h1:x6XNBSa0kOaBgcleI+ZBLkGvBdHIE0qdeY6TZ4wWUeI= +maunium.net/go/mautrix v0.31.0/go.mod h1:vfPYtoGAjlTnIF+W8tl+rjX3yB4PEfqYR2sDXvQo4Co= diff --git a/pkg/connector/backfill.go b/pkg/connector/backfill.go index b566850..b7b2a23 100644 --- a/pkg/connector/backfill.go +++ b/pkg/connector/backfill.go @@ -77,8 +77,8 @@ func (s *SignalClient) FetchMessages(ctx context.Context, params bridgev2.FetchM } // GetBackupChatItems returns in reverse chronological order, so flip the list slices.Reverse(items) + var firstDirectionfulProcessed bool var isRead bool - var readUpTo time.Time convertedMessages := make([]*bridgev2.BackfillMessage, 0, len(items)) attMap := make(msgconv.AttachmentMap) recipientMap := make(map[uint64]*backuppb.Recipient) @@ -123,17 +123,20 @@ func (s *SignalClient) FetchMessages(ctx context.Context, params bridgev2.FetchM case *backuppb.ChatItem_Incoming: streamOrder = int64(dt.Incoming.GetDateServerSent()) prevStreamOrder = streamOrder - isRead = dt.Incoming.Read - if isRead { - readUpTo = time.UnixMilli(int64(item.DateSent)) + if !firstDirectionfulProcessed { + firstDirectionfulProcessed = true + isRead = dt.Incoming.Read } case *backuppb.ChatItem_Outgoing: streamOrder = int64(item.GetDateSent()) // Ensure stream order is higher than previous incoming item, but lower than next incoming item streamOrder = min(streamOrder, findNextStreamOrder(i+1)-1) streamOrder = max(streamOrder, prevStreamOrder+1) - isRead = true - readUpTo = time.UnixMilli(int64(item.DateSent)) + + if !firstDirectionfulProcessed { + firstDirectionfulProcessed = true + isRead = true + } } if len(attMap) > 0 { clear(attMap) @@ -175,15 +178,11 @@ func (s *SignalClient) FetchMessages(ctx context.Context, params bridgev2.FetchM Reactions: convertedReactions, }) } - if isRead { - readUpTo = time.Time{} - } return &bridgev2.FetchMessagesResponse{ Messages: convertedMessages, HasMore: len(items) >= params.Count, Forward: params.Forward, MarkRead: isRead, - ReadUpTo: readUpTo, ApproxTotalCount: chat.TotalMessages, CompleteCallback: func() { // When reaching the last backwards backfill batch, delete the chat from the backup store. diff --git a/pkg/connector/capabilities.go b/pkg/connector/capabilities.go index 4ff4b3c..228ac94 100644 --- a/pkg/connector/capabilities.go +++ b/pkg/connector/capabilities.go @@ -23,13 +23,11 @@ import ( "go.mau.fi/util/ffmpeg" "go.mau.fi/util/jsontime" "go.mau.fi/util/ptr" + "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/database" "maunium.net/go/mautrix/bridgev2/networkid" "maunium.net/go/mautrix/event" - - "go.mau.fi/mautrix-signal/pkg/libsignalgo" - "go.mau.fi/mautrix-signal/pkg/signalid" ) func supportedIfFFmpeg() event.CapabilitySupportLevel { @@ -40,7 +38,7 @@ func supportedIfFFmpeg() event.CapabilitySupportLevel { } func capID() string { - base := "fi.mau.signal.capabilities.2026_10_21" + base := "fi.mau.signal.capabilities.2026_07_22" if ffmpeg.Supported() { return base + "+ffmpeg" } @@ -48,7 +46,7 @@ func capID() string { } const MaxFileSize = 100 * 1024 * 1024 -const MaxTextLength = 64 * 1024 +const MaxTextLength = 2000 var signalCaps = &event.RoomFeatures{ ID: capID(), @@ -83,7 +81,6 @@ var signalCaps = &event.RoomFeatures{ }, MaxWidth: 4096, MaxHeight: 4096, - ViewLimitedTypes: []*event.BeeperViewLimitedMedia{{Type: "count", Count: 1}}, MaxSize: MaxFileSize, Caption: event.CapLevelFullySupported, MaxCaptionLength: MaxTextLength, @@ -94,7 +91,6 @@ var signalCaps = &event.RoomFeatures{ "video/ogg": event.CapLevelFullySupported, "video/webm": event.CapLevelFullySupported, }, - ViewLimitedTypes: []*event.BeeperViewLimitedMedia{{Type: "count", Count: 1}}, MaxSize: MaxFileSize, Caption: event.CapLevelFullySupported, MaxCaptionLength: MaxTextLength, @@ -105,8 +101,6 @@ var signalCaps = &event.RoomFeatures{ "audio/mpeg": event.CapLevelFullySupported, "audio/mp3": event.CapLevelFullySupported, "audio/flac": event.CapLevelFullySupported, - "audio/mp4": event.CapLevelFullySupported, - "audio/wav": event.CapLevelFullySupported, }, MaxSize: MaxFileSize, }, @@ -160,7 +154,7 @@ var signalCaps = &event.RoomFeatures{ event.MemberActionBan: event.CapLevelFullySupported, event.MemberActionKick: event.CapLevelFullySupported, }, - MaxTextLength: MaxTextLength, + MaxTextLength: MaxTextLength, // TODO support arbitrary sized text messages with files LocationMessage: event.CapLevelPartialSupport, Poll: event.CapLevelFullySupported, PollEnd: event.CapLevelUnsupported, @@ -198,7 +192,6 @@ var signalDisappearingCap = &event.DisappearingTimerCapability{ var signalCapsNoteToSelf *event.RoomFeatures var signalCapsDM *event.RoomFeatures -var signalCapsPNIDM *event.RoomFeatures func init() { signalCapsDM = ptr.Clone(signalCaps) @@ -207,16 +200,7 @@ func init() { signalCapsDM.State = event.StateFeatureMap{ event.StateBeeperDisappearingTimer.Type: {Level: event.CapLevelFullySupported}, } - - signalCapsPNIDM = ptr.Clone(signalCapsDM) - signalCapsPNIDM.ID += "+pni" - - signalCapsDM.BlockUser = true - signalCapsDM.ReportSpam = true - signalCapsNoteToSelf = ptr.Clone(signalCapsDM) - signalCapsNoteToSelf.BlockUser = false - signalCapsNoteToSelf.ReportSpam = false signalCapsNoteToSelf.EditMaxAge = nil signalCapsNoteToSelf.DeleteMaxAge = nil signalCapsNoteToSelf.ID = capID() + "+note_to_self" @@ -226,10 +210,6 @@ func (s *SignalClient) GetCapabilities(ctx context.Context, portal *bridgev2.Por if portal.Receiver == s.UserLogin.ID && portal.ID == networkid.PortalID(s.UserLogin.ID) { return signalCapsNoteToSelf } else if portal.RoomType == database.RoomTypeDM { - userID, _, _ := signalid.ParsePortalID(portal.ID) - if userID.Type == libsignalgo.ServiceIDTypePNI { - return signalCapsPNIDM - } return signalCapsDM } return signalCaps @@ -244,7 +224,7 @@ var signalGeneralCaps = &bridgev2.NetworkGeneralCapabilities{ ResolveIdentifier: bridgev2.ResolveIdentifierCapabilities{ CreateDM: true, LookupPhone: true, - LookupUsername: true, + LookupUsername: false, // TODO implement ContactList: true, }, GroupCreation: map[string]bridgev2.GroupTypeCapabilities{ @@ -265,5 +245,5 @@ func (s *SignalConnector) GetCapabilities() *bridgev2.NetworkGeneralCapabilities } func (s *SignalConnector) GetBridgeInfoVersion() (info, capabilities int) { - return 1, 15 + return 1, 11 } diff --git a/pkg/connector/chatinfo.go b/pkg/connector/chatinfo.go index 669c015..0d48c45 100644 --- a/pkg/connector/chatinfo.go +++ b/pkg/connector/chatinfo.go @@ -75,7 +75,7 @@ func (s *SignalClient) GetUserInfoWithRefreshAfter(ctx context.Context, ghost *b if userID.Type != libsignalgo.ServiceIDTypePNI && (!s.Main.Config.UseOutdatedProfiles && meta.ProfileFetchedAt.After(contact.Profile.FetchedAt)) { return nil, nil } - return s.contactToUserInfo(ctx, contact, meta.Username, false) + return s.contactToUserInfo(ctx, contact) } func (s *SignalClient) GetUserInfo(ctx context.Context, ghost *bridgev2.Ghost) (*bridgev2.UserInfo, error) { @@ -99,7 +99,7 @@ func (s *SignalClient) GetChatInfo(ctx context.Context, portal *bridgev2.Portal) } } -func (s *SignalClient) contactToUserInfo(ctx context.Context, contact *types.Recipient, username string, saveUsername bool) (*bridgev2.UserInfo, error) { +func (s *SignalClient) contactToUserInfo(ctx context.Context, contact *types.Recipient) (*bridgev2.UserInfo, error) { isBot := false ui := &bridgev2.UserInfo{ IsBot: &isBot, @@ -110,25 +110,17 @@ func (s *SignalClient) contactToUserInfo(ctx context.Context, contact *types.Rec changed = meta.ProfileFetchedAt.IsZero() && !contact.Profile.FetchedAt.IsZero() meta.ProfileFetchedAt.Time = contact.Profile.FetchedAt } - if saveUsername && username != "" && meta.Username != username { - meta.Username = username - changed = true - } - return + return false }, } if contact.E164 != "" { ui.Identifiers = append(ui.Identifiers, "tel:"+contact.E164) } - if username != "" { - ui.Identifiers = append(ui.Identifiers, "signal:"+username) - } - name := s.Main.Config.FormatDisplayname(contact, username) + name := s.Main.Config.FormatDisplayname(contact) ui.Name = &name - contactAvatarID := networkid.AvatarID("hash:" + contact.ContactAvatar.Hash) - if s.Main.Config.UseContactAvatars && contact.ContactAvatar.Hash != "" && s.canUseContactAvatar(ctx, contact, contactAvatarID) { + if s.Main.Config.UseContactAvatars && contact.ContactAvatar.Hash != "" { ui.Avatar = &bridgev2.Avatar{ - ID: contactAvatarID, + ID: networkid.AvatarID("hash:" + contact.ContactAvatar.Hash), Get: func(ctx context.Context) ([]byte, error) { if contact.ContactAvatar.Image == nil { return nil, fmt.Errorf("contact avatar not available") @@ -173,20 +165,6 @@ func (s *SignalClient) contactToUserInfo(ctx context.Context, contact *types.Rec return ui, nil } -func (s *SignalClient) canUseContactAvatar(ctx context.Context, contact *types.Recipient, avatarID networkid.AvatarID) bool { - if contact.ContactAvatar.Image != nil { - return true - } else if contact.ACI == uuid.Nil { - return false - } - ghost, err := s.Main.Bridge.GetExistingGhostByID(ctx, signalid.MakeUserID(contact.ACI)) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to get ghost to check contact avatar") - return true - } - return ghost != nil && ghost.AvatarID == avatarID && ghost.AvatarMXC != "" && ghost.AvatarSet -} - func (s *SignalConnector) ValidateUserID(id networkid.UserID) bool { _, err := signalid.ParseUserIDAsServiceID(id) return err == nil @@ -217,93 +195,45 @@ func (s *SignalClient) CreateChatWithGhost(ctx context.Context, ghost *bridgev2. return resp.Chat, nil } -func (s *SignalClient) resolvePhone(ctx context.Context, number string) (aci, pni uuid.UUID, e164Number uint64, recipient *types.Recipient, err error) { - number, err = bridgev2.CleanPhoneNumber(number) - if err != nil { - err = bridgev2.WrapRespErr(err, mautrix.MInvalidParam) - return - } - e164Number, err = strconv.ParseUint(strings.TrimPrefix(number, "+"), 10, 64) - if err != nil { - err = bridgev2.WrapRespErr(fmt.Errorf("error parsing phone number: %w", err), mautrix.MInvalidParam) - return - } - e164String := fmt.Sprintf("+%d", e164Number) - if recipient, err = s.Client.ContactByE164(ctx, e164String); err != nil { - err = fmt.Errorf("error looking up number in local contact list: %w", err) - } else if recipient != nil && (recipient.ACI == uuid.Nil || !s.Client.Store.RecipientStore.IsUnregistered(ctx, libsignalgo.NewACIServiceID(recipient.ACI))) { - aci = recipient.ACI - pni = recipient.PNI - } else if resp, lookupErr := s.Client.LookupPhone(ctx, e164Number); lookupErr != nil { - err = wrapRespError(fmt.Errorf("error looking up number on server: %w", lookupErr)) - } else { - aci = resp[e164Number].ACI - pni = resp[e164Number].PNI - if aci == uuid.Nil && pni == uuid.Nil { - recipient = nil - return - } - recipient, err = s.Client.Store.RecipientStore.UpdateRecipientE164(ctx, aci, pni, e164String) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to save recipient entry after looking up phone") - } - aci, pni = recipient.ACI, recipient.PNI - if aci != uuid.Nil { - s.Client.Store.RecipientStore.MarkUnregistered(ctx, libsignalgo.NewACIServiceID(aci), false) - } - } - return -} - -func (s *SignalClient) resolveUsername(ctx context.Context, username string) (aci, pni uuid.UUID, err error) { - serviceID, err := s.Client.ResolveUsername(ctx, username) - if err != nil { - err = wrapRespError(fmt.Errorf("error looking up username on server: %w", err)) - return - } - aci, pni = serviceID.ToACIAndPNI() - return -} - -const signalUserLinkPrefix = "https://signal.me/#eu/" - -func (s *SignalClient) resolveLink(ctx context.Context, linkHandle string) (aci, pni uuid.UUID, username string, err error) { - username, err = s.Client.ResolveUsernameLink(ctx, linkHandle) - if err != nil { - err = bridgev2.WrapRespErr(err, mautrix.MInvalidParam) - return - } else if username == "" { - return - } - aci, pni, err = s.resolveUsername(ctx, username) - return -} - func (s *SignalClient) ResolveIdentifier(ctx context.Context, number string, _ bool) (*bridgev2.ResolveIdentifierResponse, error) { var aci, pni uuid.UUID var e164Number uint64 var recipient *types.Recipient - var username string serviceID, err := signalid.ParseUserIDAsServiceID(networkid.UserID(number)) - if err == nil { - aci, pni = serviceID.ToACIAndPNI() - } else if strings.HasPrefix(number, "+") { - aci, pni, e164Number, recipient, err = s.resolvePhone(ctx, number) - } else if signalmeow.SignalUsernameRegex.MatchString(number) { - username = strings.TrimPrefix(number, "@") - aci, pni, err = s.resolveUsername(ctx, number) - } else if handle, ok := strings.CutPrefix(number, signalUserLinkPrefix); ok { - aci, pni, username, err = s.resolveLink(ctx, handle) - } else { - err = bridgev2.RespError(mautrix.MInvalidParam.WithMessage("Input must be an international phone number, username, link or user ID")) - } if err != nil { - return nil, err - } - if recipient == nil { - if aci == uuid.Nil && pni == uuid.Nil { - return nil, nil + number, err = bridgev2.CleanPhoneNumber(number) + if err != nil { + return nil, bridgev2.WrapRespErr(err, mautrix.MInvalidParam) } + e164Number, err = strconv.ParseUint(strings.TrimPrefix(number, "+"), 10, 64) + if err != nil { + return nil, bridgev2.WrapRespErr(fmt.Errorf("error parsing phone number: %w", err), mautrix.MInvalidParam) + } + e164String := fmt.Sprintf("+%d", e164Number) + if recipient, err = s.Client.ContactByE164(ctx, e164String); err != nil { + return nil, fmt.Errorf("error looking up number in local contact list: %w", err) + } else if recipient != nil && (recipient.ACI == uuid.Nil || !s.Client.Store.RecipientStore.IsUnregistered(ctx, libsignalgo.NewACIServiceID(recipient.ACI))) { + aci = recipient.ACI + pni = recipient.PNI + } else if resp, err := s.Client.LookupPhone(ctx, e164Number); err != nil { + return nil, fmt.Errorf("error looking up number on server: %w", err) + } else { + aci = resp[e164Number].ACI + pni = resp[e164Number].PNI + if aci == uuid.Nil && pni == uuid.Nil { + return nil, nil + } + recipient, err = s.Client.Store.RecipientStore.UpdateRecipientE164(ctx, aci, pni, e164String) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to save recipient entry after looking up phone") + } + aci, pni = recipient.ACI, recipient.PNI + if aci != uuid.Nil { + s.Client.Store.RecipientStore.MarkUnregistered(ctx, libsignalgo.NewACIServiceID(aci), false) + } + } + } else { + aci, pni = serviceID.ToACIAndPNI() recipient, err = s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aci, pni, nil) if err != nil { return nil, fmt.Errorf("error loading recipient: %w", err) @@ -315,7 +245,7 @@ func (s *SignalClient) ResolveIdentifier(ctx context.Context, number string, _ b Stringer("pni", pni). Msg("Found resolve identifier target user") - userInfo, err := s.contactToUserInfo(ctx, recipient, username, true) + userInfo, err := s.contactToUserInfo(ctx, recipient) if err != nil { return nil, fmt.Errorf("failed to convert contact: %w", err) } @@ -404,7 +334,7 @@ func (s *SignalClient) CreateGroup(ctx context.Context, params *bridgev2.GroupCr } group.AvatarPath, err = s.Client.UploadGroupAvatar(ctx, avatarBytes, group.GroupIdentifier, group.GroupMasterKey) if err != nil { - return nil, wrapRespError(fmt.Errorf("failed to upload avatar: %w", err)) + return nil, fmt.Errorf("failed to upload avatar: %w", err) } } portal, err := s.Main.Bridge.GetPortalByKey(ctx, s.makePortalKey(string(group.GroupIdentifier))) @@ -434,7 +364,7 @@ func (s *SignalClient) CreateGroup(ctx context.Context, params *bridgev2.GroupCr } resp, err := s.Client.CreateGroup(ctx, group) if err != nil { - return nil, wrapRespError(fmt.Errorf("failed to create group: %w", err)) + return nil, fmt.Errorf("failed to create group: %w", err) } if params.RoomID != "" { // UpdateMatrixRoomID could do this for us if we passed ChatInfoSource to it, @@ -460,32 +390,23 @@ func (s *SignalClient) GetContactList(ctx context.Context) ([]*bridgev2.ResolveI } resp := make([]*bridgev2.ResolveIdentifierResponse, len(recipients)) for i, recipient := range recipients { - if err = ctx.Err(); err != nil { - return nil, err + userInfo, err := s.contactToUserInfo(ctx, recipient) + if err != nil { + return nil, fmt.Errorf("failed to convert contact: %w", err) + } + recipientResp := &bridgev2.ResolveIdentifierResponse{ + UserInfo: userInfo, + Chat: s.makeCreateDMResponse(ctx, recipient, nil), } - recipientResp := &bridgev2.ResolveIdentifierResponse{} - var username string if recipient.ACI != uuid.Nil { - recipientResp.Chat = &bridgev2.CreateChatResponse{ - PortalKey: s.makeDMPortalKey(libsignalgo.NewACIServiceID(recipient.ACI)), - } recipientResp.UserID = signalid.MakeUserID(recipient.ACI) ghost, err := s.Main.Bridge.GetGhostByID(ctx, recipientResp.UserID) if err != nil { return nil, fmt.Errorf("failed to get ghost for %s: %w", recipient.ACI, err) } recipientResp.Ghost = ghost - username = ghost.Metadata.(*signalid.GhostMetadata).Username } else { - pniServiceID := libsignalgo.NewPNIServiceID(recipient.PNI) - recipientResp.Chat = &bridgev2.CreateChatResponse{ - PortalKey: s.makeDMPortalKey(pniServiceID), - } - recipientResp.UserID = signalid.MakeUserIDFromServiceID(pniServiceID) - } - recipientResp.UserInfo, err = s.contactToUserInfo(ctx, recipient, username, false) - if err != nil { - return nil, fmt.Errorf("failed to convert contact: %w", err) + recipientResp.UserID = signalid.MakeUserIDFromServiceID(libsignalgo.NewPNIServiceID(recipient.PNI)) } resp[i] = recipientResp } @@ -520,7 +441,7 @@ func (s *SignalClient) makeCreateDMResponse(ctx context.Context, recipient *type var serviceID libsignalgo.ServiceID var avatar *bridgev2.Avatar if recipient.ACI == uuid.Nil { - namePtr = ptr.Ptr(s.Main.Config.FormatDisplayname(recipient, "")) + namePtr = ptr.Ptr(s.Main.Config.FormatDisplayname(recipient)) serviceID = libsignalgo.NewPNIServiceID(recipient.PNI) } else { if backupChat == nil { @@ -559,7 +480,6 @@ func (s *SignalClient) makeCreateDMResponse(ctx context.Context, recipient *type Members: members, Type: ptr.Ptr(database.RoomTypeDM), - UserBlocked: ptr.Ptr(recipient.Blocked), MessageRequest: ptr.Ptr(recipient.ACI != uuid.Nil && recipient.ProbablyMessageRequest()), CanBackfill: backupChat != nil, ExtraUpdates: updatePortalSyncMeta, diff --git a/pkg/connector/chatsync.go b/pkg/connector/chatsync.go index ec05b36..47963d7 100644 --- a/pkg/connector/chatsync.go +++ b/pkg/connector/chatsync.go @@ -19,7 +19,6 @@ package connector import ( "context" "encoding/base64" - "errors" "time" "github.com/google/uuid" @@ -29,7 +28,6 @@ import ( "go.mau.fi/mautrix-signal/pkg/libsignalgo" "go.mau.fi/mautrix-signal/pkg/signalid" - "go.mau.fi/mautrix-signal/pkg/signalmeow" "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/backuppb" "go.mau.fi/mautrix-signal/pkg/signalmeow/types" ) @@ -50,15 +48,7 @@ func (s *SignalClient) syncChats(ctx context.Context, cancel context.CancelFunc) if s.Client.Store.EphemeralBackupKey != nil { zerolog.Ctx(ctx).Info().Msg("Fetching transfer archive before syncing chats") meta, err := s.Client.WaitForTransfer(ctx) - if errors.Is(err, signalmeow.ErrTransferTimedOut) { - zerolog.Ctx(ctx).Warn().Msg("Transfer archive wasn't uploaded in time, giving up") - s.UserLogin.Metadata.(*signalid.UserLoginMetadata).ChatsSynced = true - err = s.UserLogin.Save(ctx) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to save user login metadata after transfer archive timed out") - } - return - } else if err != nil { + if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to request transfer archive") return } else if meta.Error != "" { diff --git a/pkg/connector/client.go b/pkg/connector/client.go index b5531b5..4fcf188 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -40,9 +40,8 @@ type SignalClient struct { Client *signalmeow.Client Ghost *bridgev2.Ghost - recentMessageRooms *exsync.RingBuffer[networkid.MessageID, networkid.PortalKey] - queueEmptyWaiter *exsync.Event - cancelChatSync atomic.Pointer[context.CancelFunc] + queueEmptyWaiter *exsync.Event + cancelChatSync atomic.Pointer[context.CancelFunc] } var ( @@ -182,9 +181,9 @@ func (s *SignalClient) bridgeStateLoop(statusChan <-chan signalmeow.SignalConnec peekedConnectionStatus.Event == signalmeow.SignalConnectionEventNone { s.UserLogin.Log.Debug().Msg("Sending TransientDisconnect BridgeState") if err == nil { - s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "signal-disconnected"}) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect}) } else { - s.UserLogin.BridgeState.Send(connectionErrorState(err)) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "unknown-websocket-error", Message: err.Error()}) } } } @@ -192,7 +191,11 @@ func (s *SignalClient) bridgeStateLoop(statusChan <-chan signalmeow.SignalConnec case signalmeow.SignalConnectionEventLoggedOut: s.stopChatSync() s.UserLogin.Log.Debug().Msg("Sending BadCredentials BridgeState") - s.sendLoggedOutState(err) + if err == nil { + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: "You have been logged out of Signal, please reconnect"}) + } else { + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: err.Error()}) + } err = s.Client.ClearKeysAndDisconnect(context.TODO()) if err != nil { s.UserLogin.Log.Error().Err(err).Msg("Failed to clear keys and disconnect") @@ -200,18 +203,18 @@ func (s *SignalClient) bridgeStateLoop(statusChan <-chan signalmeow.SignalConnec case signalmeow.SignalConnectionEventError: s.UserLogin.Log.Debug().Msg("Sending TransientDisconnect BridgeState") - s.UserLogin.BridgeState.Send(connectionErrorState(err)) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "unknown-websocket-error", Message: err.Error()}) case signalmeow.SignalConnectionEventFatalError: s.UserLogin.Log.Debug().Msg("Sending UnknownError BridgeState") - s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateUnknownError, Error: "signal-connection-failed", Info: map[string]any{"go_error": err.Error()}}) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateUnknownError, Error: "unknown-websocket-error", Message: err.Error()}) case signalmeow.SignalConnectionCleanShutdown: if s.Client.IsLoggedIn() { s.UserLogin.Log.Debug().Msg("Clean Shutdown - sending no BridgeState") } else { s.UserLogin.Log.Debug().Msg("Clean Shutdown, but logged out - Sending BadCredentials BridgeState") - s.sendLoggedOutState(nil) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: "You have been logged out of Signal, please reconnect"}) } } } @@ -219,10 +222,7 @@ func (s *SignalClient) bridgeStateLoop(statusChan <-chan signalmeow.SignalConnec func (s *SignalClient) Connect(ctx context.Context) { if s.Client == nil { - s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Error: "signal-not-logged-in", UserAction: status.UserActionRelogin}) - return - } else if !s.Client.IsLoggedIn() { - s.sendLoggedOutState(nil) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: "You're not logged into Signal"}) return } s.updateRemoteProfile(ctx, false) @@ -230,9 +230,6 @@ func (s *SignalClient) Connect(ctx context.Context) { } func (s *SignalClient) ConnectBackground(ctx context.Context, _ *bridgev2.ConnectBackgroundParams) error { - if !s.IsLoggedIn() { - return bridgev2.ErrNotLoggedIn - } s.queueEmptyWaiter.Clear() ch, unauthCh, err := s.Client.StartWebsockets(ctx) if err != nil { @@ -253,11 +250,6 @@ func (s *SignalClient) ConnectBackground(ctx context.Context, _ *bridgev2.Connec log.Err(status.Err).Msg("Authed websocket disconnected") case web.SignalWebsocketConnectionEventLoggedOut: log.Err(status.Err).Msg("Authed websocket logged out") - s.sendLoggedOutState(status.Err) - err = s.Client.ClearKeysAndDisconnect(ctx) - if err != nil { - log.Err(err).Msg("Failed to clear keys and disconnect") - } return fmt.Errorf("authed websocket logged out: %w", status.Err) case web.SignalWebsocketConnectionEventError, web.SignalWebsocketConnectionEventFatalError: log.Err(status.Err).Msg("Authed websocket error") @@ -322,7 +314,7 @@ func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSy ch, err := s.Client.StartReceiveLoops(ctx) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to start receive loops") - s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "signal-connect-failed", Info: map[string]any{"go_error": err.Error()}}) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "unknown-websocket-error", Message: err.Error()}) retryInSeconds := 2 << retryCount if retryInSeconds > 150 { retryInSeconds = 150 @@ -350,7 +342,7 @@ func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSy if s.Client.Store.EphemeralBackupKey != nil { go func() { if s.Client.Store.MasterKey != nil { - s.Client.StorageSync(ctx) + s.Client.SyncStorage(ctx) } else { s.UserLogin.Log.Warn().Msg("No master key for storage sync before backup sync") } @@ -359,7 +351,7 @@ func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSy } else { cancel() if s.Client.Store.MasterKey != nil { - s.Client.QueueStorageSync(ctx) + go s.Client.SyncStorage(ctx) } } } diff --git a/pkg/connector/config.go b/pkg/connector/config.go index 9a0d65a..232571f 100644 --- a/pkg/connector/config.go +++ b/pkg/connector/config.go @@ -41,8 +41,8 @@ type SignalConfig struct { DeviceName string `yaml:"device_name"` NoteToSelfAvatar id.ContentURIString `yaml:"note_to_self_avatar"` LocationFormat string `yaml:"location_format"` + DisappearViewOnce bool `yaml:"disappear_view_once"` ExtEvPolls bool `yaml:"extev_polls"` - IdentityChangeNotices bool `yaml:"identity_change_notices"` displaynameTemplate *template.Template `yaml:"-"` } @@ -75,16 +75,13 @@ type DisplaynameParams struct { AboutEmoji string } -func (c *SignalConfig) FormatDisplayname(contact *types.Recipient, username string) string { - if username != "" && !strings.HasPrefix(username, "@") { - username = "@" + username - } +func (c *SignalConfig) FormatDisplayname(contact *types.Recipient) string { var nameBuf strings.Builder err := c.displaynameTemplate.Execute(&nameBuf, &DisplaynameParams{ ProfileName: contact.Profile.Name, ContactName: contact.ContactName, Nickname: contact.Nickname, - Username: username, + Username: "", PhoneNumber: contact.E164, UUID: contact.ACI.String(), ACI: contact.ACI.String(), @@ -106,8 +103,8 @@ func upgradeConfig(helper up.Helper) { helper.Copy(up.Str, "device_name") helper.Copy(up.Str, "note_to_self_avatar") helper.Copy(up.Str, "location_format") + helper.Copy(up.Bool, "disappear_view_once") helper.Copy(up.Bool, "extev_polls") - helper.Copy(up.Bool, "identity_change_notices") } func (s *SignalConnector) GetConfig() (string, any, up.Upgrader) { diff --git a/pkg/connector/connector.go b/pkg/connector/connector.go index 3a3823a..0343d02 100644 --- a/pkg/connector/connector.go +++ b/pkg/connector/connector.go @@ -20,7 +20,6 @@ import ( "context" "fmt" "strconv" - "sync" "time" "github.com/google/uuid" @@ -45,9 +44,6 @@ type SignalConnector struct { Store *store.Container Bridge *bridgev2.Bridge Config SignalConfig - - lastTxnTS int64 - lastTxnTSLock sync.Mutex } var _ bridgev2.NetworkConnector = (*SignalConnector)(nil) @@ -70,6 +66,7 @@ func (s *SignalConnector) Init(bridge *bridgev2.Bridge) { s.Bridge = bridge s.MsgConv = msgconv.NewMessageConverter(bridge) s.MsgConv.LocationFormat = s.Config.LocationFormat + s.MsgConv.DisappearViewOnce = s.Config.DisappearViewOnce s.MsgConv.ExtEvPolls = s.Config.ExtEvPolls bridge.Commands.(*commands.Processor).AddHandlers(CmdDiscardSenderKey) } @@ -94,11 +91,8 @@ func (s *SignalConnector) ResetHTTPTransport() { settings = hs.GetHTTPClientSettings() } oldClient := web.SignalHTTPClient - oldUploadClient := web.SignalUploadHTTPClient web.SignalHTTPClient = settings.WithTLSConfig(web.SignalTLSConfig).Compile() - web.SignalUploadHTTPClient = settings.WithTLSConfig(web.SignalTLSConfig).WithResponseHeaderTimeout(2 * time.Minute).Compile() oldClient.CloseIdleConnections() - oldUploadClient.CloseIdleConnections() } func (s *SignalConnector) ResetNetworkConnections() { @@ -123,8 +117,7 @@ func (s *SignalConnector) LoadUserLogin(ctx context.Context, login *bridgev2.Use Main: s, UserLogin: login, - recentMessageRooms: exsync.NewRingBuffer[networkid.MessageID, networkid.PortalKey](32), - queueEmptyWaiter: exsync.NewEvent(), + queueEmptyWaiter: exsync.NewEvent(), } if device != nil { sc.Client = signalmeow.NewClient( @@ -140,8 +133,5 @@ func (s *SignalConnector) LoadUserLogin(ctx context.Context, login *bridgev2.Use } func (s *SignalConnector) GenerateTransactionID(userID id.UserID, roomID id.RoomID, eventType event.Type) networkid.RawTransactionID { - s.lastTxnTSLock.Lock() - defer s.lastTxnTSLock.Unlock() - s.lastTxnTS = max(time.Now().UnixMilli(), s.lastTxnTS+1) - return networkid.RawTransactionID(strconv.FormatInt(s.lastTxnTS, 10)) + return networkid.RawTransactionID(strconv.FormatInt(time.Now().UnixMilli(), 10)) } diff --git a/pkg/connector/directmedia.go b/pkg/connector/directmedia.go index 82ed16d..05e2a07 100644 --- a/pkg/connector/directmedia.go +++ b/pkg/connector/directmedia.go @@ -79,7 +79,7 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI rawDataResp, err = client.Client.DownloadGroupAvatar(ctx, info.GroupAvatarPath, groupMasterKey) if err != nil { log.Err(err).Msg("Direct download failed") - return nil, wrapDirectMediaError(err) + return nil, err } case *signalid.DirectMediaProfileAvatar: log.Info(). @@ -107,7 +107,7 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI rawDataResp, err = client.Client.DownloadUserAvatar(ctx, info.ProfileAvatarPath, *profileKey) if err != nil { log.Err(err).Msg("Direct download failed") - return nil, wrapDirectMediaError(err) + return nil, err } case *signalid.DirectMediaSticker: log.Info(). @@ -118,7 +118,7 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI rawDataResp, err = signalmeow.DownloadStickerPackItem(ctx, info.PackID, info.PackKey, info.StickerID) if err != nil { log.Err(err).Msg("Direct download failed") - return nil, wrapDirectMediaError(err) + return nil, err } default: return nil, fmt.Errorf("no downloader for direct media type: %T", info) diff --git a/pkg/connector/errors.go b/pkg/connector/errors.go deleted file mode 100644 index 65b7cb5..0000000 --- a/pkg/connector/errors.go +++ /dev/null @@ -1,196 +0,0 @@ -// mautrix-signal - A Matrix-Signal puppeting bridge. -// Copyright (C) 2026 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package connector - -import ( - "errors" - "fmt" - "net/http" - - "google.golang.org/grpc/codes" - grpcstatus "google.golang.org/grpc/status" - "maunium.net/go/mautrix" - "maunium.net/go/mautrix/bridgev2" - "maunium.net/go/mautrix/bridgev2/status" - "maunium.net/go/mautrix/event" - - "go.mau.fi/mautrix-signal/pkg/signalmeow" - "go.mau.fi/mautrix-signal/pkg/signalmeow/web" -) - -func init() { - status.BridgeStateHumanErrors.Update(status.BridgeStateErrorMap{ - "signal-logged-out": "You have been logged out of Signal, please reconnect", - "signal-not-logged-in": "You're not logged into Signal", - "signal-disconnected": "Disconnected from Signal, reconnecting", - "signal-connection-error": "Connection to Signal failed, reconnecting", - "signal-server-error": "Signal server error, reconnecting", - "signal-rate-limited": "Rate limited by Signal, reconnecting", - "signal-connect-failed": "Failed to connect to Signal, retrying", - "signal-connection-failed": "Connection to Signal failed", - "signal-idle-primary-device": "Signal hasn't seen your phone in a long time. The bridge is still connected, " + - "but Signal will unlink it if you don't open Signal on your phone soon.", - }) -} - -var _ status.BridgeStateFiller = (*SignalClient)(nil) - -func (s *SignalClient) FillBridgeState(state status.BridgeState) status.BridgeState { - if state.StateEvent == status.StateConnected && s.Client != nil && s.Client.AuthedWS.PrimaryDeviceIdle() { - state.StateEvent = status.StateTransientDisconnect - state.Error = "signal-idle-primary-device" - state.UserAction = status.UserActionOpenNative - } - return state -} - -var ( - errEditOthersMessage = bridgev2.WrapErrorInStatus(errors.New("you can only edit your own messages")). - WithErrorAsMessage(). - WithErrorReason(event.MessageStatusNoPermission). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - errDeleteOthersMessage = bridgev2.WrapErrorInStatus(errors.New("you can only delete your own messages")). - WithErrorAsMessage(). - WithErrorReason(event.MessageStatusNoPermission). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - errInviteToDM = bridgev2.WrapErrorInStatus(errors.New("can't invite more users to Signal DMs")). - WithErrorAsMessage(). - WithErrorReason(event.MessageStatusUnsupported). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - errUnsupportedDisappearingType = bridgev2.WrapErrorInStatus(errors.New("only disappearing timers that start after reading are supported on Signal")). - WithErrorAsMessage(). - WithErrorReason(event.MessageStatusUnsupported). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) -) - -func wrapConversionError(err error) error { - if err == nil || errors.As(err, &bridgev2.MessageStatus{}) { - return err - } - return bridgev2.WrapErrorInStatus(err). - WithMessage("failed to convert message for Signal"). - WithIsCertain(true). - WithSendNotice(true) -} - -func wrapSendError(err error) error { - if err == nil || errors.As(err, &bridgev2.MessageStatus{}) { - return err - } - switch { - case errors.Is(err, signalmeow.ErrUnregisteredUser): - return bridgev2.WrapErrorInStatus(err). - WithMessage("recipient isn't registered on Signal"). - WithErrorReason(event.MessageStatusNetworkError). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - case errors.Is(err, signalmeow.ErrRateLimited), errors.Is(err, signalmeow.RateLimitError): - return bridgev2.WrapErrorInStatus(err). - WithMessage("rate limited by Signal, try again later"). - WithErrorReason(event.MessageStatusNetworkError). - WithIsCertain(true). - WithSendNotice(true) - case errors.Is(err, signalmeow.AuthorizationFailedError): - return bridgev2.WrapErrorInStatus(err). - WithMessage("you don't have permission to do that in this Signal group"). - WithErrorReason(event.MessageStatusNoPermission). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - case errors.Is(err, signalmeow.GroupPatchNotAcceptedError): - return bridgev2.WrapErrorInStatus(err). - WithMessage("Signal rejected the group change"). - WithErrorReason(event.MessageStatusNetworkError). - WithStatus(event.MessageStatusFail). - WithIsCertain(true). - WithSendNotice(true) - default: - return bridgev2.WrapErrorInStatus(err). - WithMessage("failed to send to Signal"). - WithSendNotice(true) - } -} - -func wrapRespError(err error) error { - var mapped bridgev2.RespError - var cdsRateLimit signalmeow.ContactDiscoveryRateLimitError - switch { - case errors.As(err, &cdsRateLimit), errors.Is(err, signalmeow.RateLimitError), errors.Is(err, signalmeow.ErrRateLimited), - grpcstatus.Code(err) == codes.ResourceExhausted: - mapped = bridgev2.RespError(mautrix.MLimitExceeded.WithMessage("Rate limited by Signal, please try again later").WithStatus(http.StatusBadRequest)) - case errors.Is(err, signalmeow.AuthorizationFailedError): - mapped = bridgev2.RespError(mautrix.MForbidden.WithMessage("Signal denied the request")) - default: - mapped = bridgev2.RespError(mautrix.MUnknown.WithMessage("Request to Signal failed")) - } - return fmt.Errorf("%w: %w", mapped, err) -} - -func wrapDirectMediaError(err error) error { - var statusErr web.HTTPStatusError - if !errors.As(err, &statusErr) { - return err - } - switch statusErr.StatusCode { - case http.StatusNotFound, http.StatusGone: - return mautrix.MNotFound.WithMessage("Media not found on Signal") - case http.StatusUnauthorized, http.StatusForbidden: - return mautrix.MForbidden.WithMessage("Signal denied access to the media") - case http.StatusTooManyRequests: - return mautrix.MLimitExceeded.WithMessage("Rate limited by Signal, please try again later").WithCanRetry(true) - default: - return mautrix.MUnknown.WithMessage("Unexpected response from Signal").WithStatus(http.StatusBadGateway).WithCanRetry(true) - } -} - -func connectionErrorState(err error) status.BridgeState { - state := status.BridgeState{ - StateEvent: status.StateTransientDisconnect, - Error: "signal-connection-error", - Info: map[string]any{"go_error": err.Error()}, - } - var statusErr web.HTTPStatusError - if errors.As(err, &statusErr) { - if statusErr.StatusCode == http.StatusTooManyRequests { - state.Error = "signal-rate-limited" - } else if statusErr.StatusCode >= 500 { - state.Error = "signal-server-error" - } - } - return state -} - -func (s *SignalClient) sendLoggedOutState(err error) { - state := status.BridgeState{ - StateEvent: status.StateBadCredentials, - Error: "signal-logged-out", - UserAction: status.UserActionRelogin, - } - if err != nil { - state.Info = map[string]any{"go_error": err.Error()} - } - s.UserLogin.BridgeState.Send(state) -} diff --git a/pkg/connector/example-config.yaml b/pkg/connector/example-config.yaml index 0a818d1..25fe035 100644 --- a/pkg/connector/example-config.yaml +++ b/pkg/connector/example-config.yaml @@ -2,11 +2,10 @@ # {{.ProfileName}} - The Signal profile name set by the user. # {{.ContactName}} - The name for the user from your phone's contact list. This is not safe on multi-user instances. # {{.Nickname}} - The nickname set for the user in the native Signal app. This is not safe on multi-user instances. -# {{.Username}} - The username of the user. Only applicable when starting chats. # {{.PhoneNumber}} - The phone number of the user. # {{.UUID}} - The UUID of the Signal user. # {{.AboutEmoji}} - The emoji set by the user in their profile. -displayname_template: '{{or .ProfileName .PhoneNumber .Username "Unknown user"}}' +displayname_template: '{{or .ProfileName .PhoneNumber "Unknown user"}}' # Should avatars from the user's contact list be used? This is not safe on multi-user instances. use_contact_avatars: false # Should the bridge request the user's contact list from the phone on startup? @@ -23,7 +22,7 @@ note_to_self_avatar: mxc://maunium.net/REBIVrqjZwmaWpssCZpBlmlL # Google Maps: 'https://www.google.com/maps/place/%[1]s,%[2]s' # OpenStreetMap: 'https://www.openstreetmap.org/?mlat=%[1]s&mlon=%[2]s' location_format: 'https://www.google.com/maps/place/%[1]s,%[2]s' +# Should view-once messages disappear shortly after sending a read receipt on Matrix? +disappear_view_once: false # Should polls be sent using unstable MSC3381 event types? extev_polls: false -# Should another user's safety number changing send a message to Matrix? -identity_change_notices: false diff --git a/pkg/connector/groupinfo.go b/pkg/connector/groupinfo.go index 634d696..d958463 100644 --- a/pkg/connector/groupinfo.go +++ b/pkg/connector/groupinfo.go @@ -39,7 +39,6 @@ import ( var defaultPL = 0 var moderatorPL = 50 -var terminatedPL = 100 func roleToPL(role signalmeow.GroupMemberRole) *int { switch role { @@ -58,9 +57,6 @@ func applyAnnouncementsOnly(plc *bridgev2.PowerLevelOverrides, announcementsOnly } else { plc.EventsDefault = &defaultPL } - plc.Events[event.EventReaction] = defaultPL - plc.Events[event.EventRedaction] = defaultPL - plc.Events[event.EventUnstablePollResponse] = defaultPL } func applyAttributesAccess(plc *bridgev2.PowerLevelOverrides, attributeAccess signalmeow.AccessControl) { @@ -74,21 +70,6 @@ func applyAttributesAccess(plc *bridgev2.PowerLevelOverrides, attributeAccess si plc.Events[event.StateBeeperDisappearingTimer] = attributePL } -func applyTerminated(plc *bridgev2.PowerLevelOverrides) { - plc.EventsDefault = &terminatedPL - plc.StateDefault = &terminatedPL - plc.Invite = &terminatedPL - plc.Kick = &terminatedPL - plc.Ban = &terminatedPL - plc.Redact = &terminatedPL - for _, evtType := range []event.Type{ - event.EventReaction, event.EventRedaction, event.EventUnstablePollResponse, event.StatePowerLevels, event.StateRoomName, - event.StateRoomAvatar, event.StateTopic, event.StateBeeperDisappearingTimer, - } { - plc.Events[evtType] = terminatedPL - } -} - func applyMembersAccess(plc *bridgev2.PowerLevelOverrides, memberAccess signalmeow.AccessControl) { if memberAccess == signalmeow.AccessControl_ADMINISTRATOR { plc.Invite = &moderatorPL @@ -142,9 +123,6 @@ func (s *SignalClient) wrapGroupInfo(ctx context.Context, groupInfo *signalmeow. applyMembersAccess(members.PowerLevels, groupInfo.AccessControl.Members) joinRule = inviteLinkToJoinRule(groupInfo.AccessControl.AddFromInviteLink) } - if groupInfo.Terminated { - applyTerminated(members.PowerLevels) - } for _, member := range groupInfo.RequestingMembers { members.MemberMap.Set(bridgev2.ChatMember{ EventSender: s.makeEventSender(member.ACI), @@ -204,12 +182,9 @@ func addMemberToMap(mc map[networkid.UserID]bridgev2.ChatMember, member bridgev2 mc[member.EventSender.Sender] = member } -const currentPortalInfoVersion = 3 - func updatePortalSyncMeta(ctx context.Context, portal *bridgev2.Portal) bool { meta := portal.Metadata.(*signalid.PortalMetadata) meta.LastSync = jsontime.UnixNow() - meta.InfoVersion = currentPortalInfoVersion return true } @@ -285,8 +260,7 @@ func (s *SignalClient) groupChangeToChatInfoChange(ctx context.Context, groupID var pls *bridgev2.PowerLevelOverrides if groupChange.ModifyAnnouncementsOnly != nil || groupChange.ModifyAttributesAccess != nil || - groupChange.ModifyMemberAccess != nil || - groupChange.TerminateGroup { + groupChange.ModifyMemberAccess != nil { pls = &bridgev2.PowerLevelOverrides{Events: make(map[event.Type]int)} if groupChange.ModifyAnnouncementsOnly != nil { applyAnnouncementsOnly(pls, *groupChange.ModifyAnnouncementsOnly) @@ -297,9 +271,6 @@ func (s *SignalClient) groupChangeToChatInfoChange(ctx context.Context, groupID if groupChange.ModifyMemberAccess != nil { applyMembersAccess(pls, *groupChange.ModifyMemberAccess) } - if groupChange.TerminateGroup { - applyTerminated(pls) - } } if groupChange.ModifyAddFromInviteLinkAccess != nil { ic.ChatInfo.JoinRule = &event.JoinRulesEventContent{ diff --git a/pkg/connector/handlematrix.go b/pkg/connector/handlematrix.go index ca7af09..009943a 100644 --- a/pkg/connector/handlematrix.go +++ b/pkg/connector/handlematrix.go @@ -37,29 +37,25 @@ import ( "maunium.net/go/mautrix/event" "go.mau.fi/mautrix-signal/pkg/libsignalgo" - "go.mau.fi/mautrix-signal/pkg/msgconv" "go.mau.fi/mautrix-signal/pkg/signalid" "go.mau.fi/mautrix-signal/pkg/signalmeow" "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/signalpb" - "go.mau.fi/mautrix-signal/pkg/signalmeow/types" ) var ( - _ bridgev2.EditHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.ReactionHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.RedactionHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.ReadReceiptHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.TypingHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.RoomNameHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.RoomAvatarHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.RoomTopicHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.ChatViewingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.DisappearTimerChangingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.DeleteChatHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.PollHandlingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.MessageRequestAcceptingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.UserBlockingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.ViewLimitedMediaHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.EditHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.ReactionHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.RedactionHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.ReadReceiptHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.TypingHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.RoomNameHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.RoomAvatarHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.RoomTopicHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.ChatViewingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.DisappearTimerChangingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.DeleteChatHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.PollHandlingNetworkAPI = (*SignalClient)(nil) + _ bridgev2.MessageRequestAcceptingNetworkAPI = (*SignalClient)(nil) ) func (s *SignalClient) sendMessage(ctx context.Context, portalID networkid.PortalID, content *signalpb.Content) error { @@ -82,7 +78,7 @@ func (s *SignalClient) sendMessage(ctx context.Context, portalID networkid.Porta log.Debug().Msg("No successes or failures - Probably sent to myself") } else if len(result.SuccessfullySentTo) == 0 { log.Error().Msg("Failed to send event to all members of Signal group") - return fmt.Errorf("failed to send to any members of Signal group: %w", result.FailureError()) + return errors.New("failed to send to any members of Signal group") } else if len(result.SuccessfullySentTo) < totalRecipients { if len(result.FailedToSendTo) > 0 { log.Warn().Msg("Failed to send event to some members of Signal group") @@ -96,10 +92,7 @@ func (s *SignalClient) sendMessage(ctx context.Context, portalID networkid.Porta } else { res := s.Client.SendMessage(ctx, userID, content) if !res.WasSuccessful { - if res.Error != nil { - return res.Error - } - return errors.New("failed to send message") + return res.Error } return nil } @@ -124,11 +117,10 @@ func (s *SignalClient) HandleMatrixMessage(ctx context.Context, msg *bridgev2.Ma ctx, s.Client, msg.Portal, msg.Event, msg.Content, msg.OrigSender != nil, msg.ReplyTo, ) if err != nil { - return nil, wrapConversionError(err) + return nil, err } return s.doSendMessage(ctx, msg, converted, &signalid.MessageMetadata{ - ContainsAttachments: msgconv.ContainsAttachments(converted), - ViewOnce: converted.GetIsViewOnce(), + ContainsAttachments: len(converted.Attachments) > 0, }) } @@ -147,7 +139,7 @@ func (s *SignalClient) doSendMessage( msg.AddPendingToIgnore(networkid.TransactionID(msgID)) err := s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(converted)) if err != nil { - return nil, wrapSendError(err) + return nil, bridgev2.WrapErrorInStatus(err).WithSendNotice(true) } dbMsg := &database.Message{ ID: msgID, @@ -161,34 +153,12 @@ func (s *SignalClient) doSendMessage( }, nil } -func (s *SignalClient) HandleMatrixViewLimitedMedia(ctx context.Context, msg *bridgev2.MatrixViewLimitedMedia) error { - meta, ok := msg.Message.Metadata.(*signalid.MessageMetadata) - if !ok || !meta.ViewOnce || !meta.ContainsAttachments || msg.Content == nil || *msg.Content != (event.BeeperViewLimitedMedia{Type: "count", Count: 1}) { - return bridgev2.ErrUnsupportedViewLimitedType - } - sender, timestamp, err := signalid.ParseMessageID(msg.Message.ID) - if err != nil { - return err - } - return wrapSendError(s.sendMessage(ctx, signalid.MakeDMPortalID(libsignalgo.NewACIServiceID(sender)), &signalpb.Content{ - Content: &signalpb.Content_ReceiptMessage{ - ReceiptMessage: &signalpb.ReceiptMessage{ - Type: signalpb.ReceiptMessage_VIEWED.Enum(), - Timestamp: []uint64{timestamp}, - }, - }, - })) -} - func (s *SignalClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.MatrixEdit) error { - if msg.Content.BeeperViewLimited != nil || msg.EditTarget.Metadata.(*signalid.MessageMetadata).ViewOnce { - return fmt.Errorf("%w of view-once media", bridgev2.ErrEditsNotSupported) - } _, targetSentTimestamp, err := signalid.ParseMessageID(msg.EditTarget.ID) if err != nil { return fmt.Errorf("failed to parse target message ID: %w", err) } else if msg.EditTarget.SenderID != signalid.MakeUserID(s.Client.Store.ACI) { - return errEditOthersMessage + return fmt.Errorf("cannot edit other people's messages") } var replyTo *database.Message if msg.EditTarget.ReplyTo.MessageID != "" { @@ -199,7 +169,7 @@ func (s *SignalClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.Matri } converted, err := s.Main.MsgConv.ToSignal(ctx, s.Client, msg.Portal, msg.Event, msg.Content, msg.OrigSender != nil, replyTo) if err != nil { - return wrapConversionError(err) + return err } ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) converted.Timestamp = &ts @@ -208,11 +178,11 @@ func (s *SignalClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.Matri DataMessage: converted, })) if err != nil { - return wrapSendError(err) + return bridgev2.WrapErrorInStatus(err).WithSendNotice(true) } prevID := msg.EditTarget.ID msg.EditTarget.ID = signalid.MakeMessageID(s.Client.Store.ACI, ts) - msg.EditTarget.Metadata = &signalid.MessageMetadata{ContainsAttachments: msgconv.ContainsAttachments(converted)} + msg.EditTarget.Metadata = &signalid.MessageMetadata{ContainsAttachments: len(converted.Attachments) > 0} msg.EditTarget.EditCount++ if prevID != msg.EditTarget.ID { err = s.Main.Bridge.DB.DoTxn(ctx, nil, func(ctx context.Context) error { @@ -277,7 +247,7 @@ func (s *SignalClient) HandleMatrixReaction(ctx context.Context, msg *bridgev2.M }, })) if err != nil { - return nil, wrapSendError(err) + return nil, err } return &database.Reaction{}, nil } @@ -298,52 +268,30 @@ func (s *SignalClient) HandleMatrixReactionRemove(ctx context.Context, msg *brid TargetSentTimestamp: proto.Uint64(targetSentTimestamp), }, })) - return wrapSendError(err) + if err != nil { + return err + } + return nil } func (s *SignalClient) HandleMatrixMessageRemove(ctx context.Context, msg *bridgev2.MatrixMessageRemove) error { - targetAuthorACI, targetSentTimestamp, err := signalid.ParseMessageID(msg.TargetMessage.ID) + _, targetSentTimestamp, err := signalid.ParseMessageID(msg.TargetMessage.ID) if err != nil { return fmt.Errorf("failed to parse target message ID: %w", err) + } else if msg.TargetMessage.SenderID != signalid.MakeUserID(s.Client.Store.ACI) { + return fmt.Errorf("cannot delete other people's messages") } - dm := &signalpb.DataMessage{ - Timestamp: proto.Uint64(getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender)), - } - if msg.TargetMessage.SenderID == signalid.MakeUserID(s.Client.Store.ACI) { - dm.Delete = &signalpb.DataMessage_Delete{ + ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) + err = s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(&signalpb.DataMessage{ + Timestamp: proto.Uint64(ts), + Delete: &signalpb.DataMessage_Delete{ TargetSentTimestamp: proto.Uint64(targetSentTimestamp), - } - } else if isAdmin, err := s.isGroupAdmin(ctx, msg.Portal); err != nil { - return wrapSendError(err) - } else if !isAdmin { - return errDeleteOthersMessage - } else { - dm.AdminDelete = &signalpb.DataMessage_AdminDelete{ - TargetAuthorAciBinary: targetAuthorACI[:], - TargetSentTimestamp: proto.Uint64(targetSentTimestamp), - } - } - err = s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(dm)) - return wrapSendError(err) -} - -func (s *SignalClient) isGroupAdmin(ctx context.Context, portal *bridgev2.Portal) (bool, error) { - _, groupID, err := signalid.ParsePortalID(portal.ID) + }, + })) if err != nil { - return false, err - } else if groupID == "" { - return false, nil + return err } - group, _, err := s.Client.RetrieveGroupByID(ctx, groupID, portal.Metadata.(*signalid.PortalMetadata).Revision) - if err != nil { - return false, fmt.Errorf("failed to get group info: %w", err) - } - for _, member := range group.Members { - if member.ACI == s.Client.Store.ACI { - return member.Role == signalmeow.GroupMember_ADMINISTRATOR, nil - } - } - return false, nil + return nil } func (s *SignalClient) HandleMatrixReadReceipt(ctx context.Context, receipt *bridgev2.MatrixReadReceipt) error { @@ -426,7 +374,7 @@ func (s *SignalClient) handleMatrixRoomMeta(ctx context.Context, portal *bridgev gc.Revision = portal.Metadata.(*signalid.PortalMetadata).Revision + 1 revision, err := s.Client.UpdateGroup(ctx, gc, groupID) if err != nil { - return false, wrapSendError(err) + return false, err } if gc.ModifyTitle != nil { portal.Name = *gc.ModifyTitle @@ -468,7 +416,7 @@ func (s *SignalClient) HandleMatrixRoomAvatar(ctx context.Context, msg *bridgev2 avatarHash = sha256.Sum256(data) avatarPath, err = s.Client.UploadGroupAvatar(ctx, data, groupID, "") if err != nil { - return false, wrapSendError(fmt.Errorf("failed to reupload avatar: %w", err)) + return false, fmt.Errorf("failed to reupload avatar: %w", err) } } return s.handleMatrixRoomMeta(ctx, msg.Portal, &signalmeow.GroupChange{ @@ -495,7 +443,7 @@ func (s *SignalClient) HandleMatrixMembership(ctx context.Context, msg *bridgev2 if msg.Portal.RoomType == database.RoomTypeDM { switch msg.Type { case bridgev2.Invite: - return nil, errInviteToDM + return nil, fmt.Errorf("cannot invite additional user to dm") default: return nil, nil } @@ -624,7 +572,7 @@ func (s *SignalClient) HandleMatrixMembership(ctx context.Context, msg *bridgev2 gc.Revision = msg.Portal.Metadata.(*signalid.PortalMetadata).Revision + 1 revision, err := s.Client.UpdateGroup(ctx, gc, groupID) if err != nil { - return nil, wrapSendError(err) + return nil, err } if (msg.Type == bridgev2.Invite || msg.Type == bridgev2.AcceptKnock) && targetSignalID.Type != libsignalgo.ServiceIDTypePNI { err = targetIntent.EnsureJoined(ctx, msg.Portal.MXID) @@ -695,7 +643,7 @@ func (s *SignalClient) HandleMatrixPowerLevels(ctx context.Context, msg *bridgev } revision, err := s.Client.UpdateGroup(ctx, gc, groupID) if err != nil { - return false, wrapSendError(err) + return false, err } msg.Portal.Metadata.(*signalid.PortalMetadata).Revision = revision return true, nil @@ -746,7 +694,7 @@ func (s *SignalClient) HandleMatrixViewingChat(ctx context.Context, msg *bridgev func (s *SignalClient) HandleMatrixDisappearingTimer(ctx context.Context, msg *bridgev2.MatrixDisappearingTimer) (bool, error) { if msg.Content.Type != event.DisappearingTypeAfterRead && msg.Content.Timer.Duration != 0 { - return false, errUnsupportedDisappearingType + return false, fmt.Errorf("unsupported disappearing timer type: %s", msg.Content.Type) } userID, groupID, err := signalid.ParsePortalID(msg.Portal.ID) if err != nil { @@ -773,7 +721,7 @@ func (s *SignalClient) HandleMatrixDisappearingTimer(ctx context.Context, msg *b ExpireTimer: ptr.Ptr(uint32(msg.Content.Timer.Seconds())), })) if !res.WasSuccessful { - return false, wrapSendError(res.Error) + return false, res.Error } msg.Portal.Disappear = newSetting return true, nil @@ -786,29 +734,11 @@ func (s *SignalClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2 return fmt.Errorf("failed to parse portal ID: %w", err) } - if groupID != "" { - memberInfo, err := s.Main.Bridge.Matrix.GetMemberInfo(ctx, msg.Portal.MXID, s.UserLogin.UserMXID) - if err != nil { - return fmt.Errorf("failed to get own member info: %w", err) - } else if memberInfo.Membership == event.MembershipJoin { - portalMeta := msg.Portal.Metadata.(*signalid.PortalMetadata) - ownACI := s.Client.Store.ACI - revision, err := s.Client.UpdateGroup(ctx, &signalmeow.GroupChange{ - DeleteMembers: []*uuid.UUID{&ownACI}, - Revision: portalMeta.Revision + 1, - }, groupID) - if err != nil { - return wrapSendError(fmt.Errorf("failed to leave group before deleting chat: %w", err)) - } - portalMeta.Revision = revision - } - } - if msg.Content.FromMessageRequest { // TODO block and delete support? err = s.syncMessageRequestResponse(ctx, msg.Portal, signalpb.SyncMessage_MessageRequestResponse_DELETE) if err != nil { - return wrapSendError(fmt.Errorf("failed to send message request delete sync: %w", err)) + return fmt.Errorf("failed to send message request delete sync: %w", err) } } @@ -886,7 +816,7 @@ func (s *SignalClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2 Msg("Sent conversation deletion to Signal") if !result.WasSuccessful { - return wrapSendError(fmt.Errorf("failed to send delete conversation sync message: %w %s %s", result.Error, userID, groupID)) + return fmt.Errorf("failed to send delete conversation sync message: %w %s %s", result.Error, userID, groupID) } return nil @@ -990,7 +920,7 @@ func (s *SignalClient) HandleMatrixAcceptMessageRequest(ctx context.Context, msg } err = s.syncMessageRequestResponse(ctx, msg.Portal, signalpb.SyncMessage_MessageRequestResponse_ACCEPT) if err != nil { - return wrapSendError(fmt.Errorf("failed to sync message request acceptance: %w", err)) + return fmt.Errorf("failed to sync message request acceptance: %w", err) } if userID.Type == libsignalgo.ServiceIDTypeACI { profileKey, err := s.Client.ProfileKeyForSignalID(ctx, s.Client.Store.ACI) @@ -998,7 +928,7 @@ func (s *SignalClient) HandleMatrixAcceptMessageRequest(ctx context.Context, msg return fmt.Errorf("failed to get own profile key: %w", err) } var pniSig *signalpb.PniSignatureMessage - if s.Client.Store.PNI != uuid.Nil && s.Client.Store.AccountRecord.GetPhoneNumberSharingMode() == signalpb.AccountRecord_EVERYBODY { + if s.Client.Store.AccountRecord.GetPhoneNumberSharingMode() == signalpb.AccountRecord_EVERYBODY { sig, err := s.Client.Store.PNIIdentityKeyPair.SignAlternateIdentity(s.Client.Store.ACIIdentityKeyPair.GetIdentityKey()) if err != nil { return fmt.Errorf("failed to generate PNI signature: %w", err) @@ -1019,74 +949,9 @@ func (s *SignalClient) HandleMatrixAcceptMessageRequest(ctx context.Context, msg PniSignatureMessage: pniSig, }) if !res.WasSuccessful { - return wrapSendError(fmt.Errorf("failed to share profile key to accept message request: %w", res.Error)) + return fmt.Errorf("failed to share profile key to accept message request: %w", res.Error) } // TODO send read receipts too? } return nil } - -func (s *SignalClient) HandleMatrixBlockUser(ctx context.Context, msg *bridgev2.MatrixBlockUser) error { - if s.Client == nil { - return bridgev2.ErrNotLoggedIn - } - userID, groupID, err := signalid.ParsePortalID(msg.Portal.ID) - if err != nil { - return err - } - if groupID != "" { - return bridgev2.ErrNonDMBlockUser - } - aci, pni := userID.ToACIAndPNI() - if aci == uuid.Nil { - return fmt.Errorf("blocking requires a known ACI") - } - respType := signalpb.SyncMessage_MessageRequestResponse_ACCEPT - if msg.Content.Block { - respType = signalpb.SyncMessage_MessageRequestResponse_BLOCK - } - if msg.Content.ReportSpam { - if err = s.reportSpam(ctx, msg.Portal, aci); err != nil { - return err - } - if msg.Content.Block { - respType = signalpb.SyncMessage_MessageRequestResponse_BLOCK_AND_SPAM - } else { - respType = signalpb.SyncMessage_MessageRequestResponse_SPAM - } - } - if err = s.syncMessageRequestResponse(ctx, msg.Portal, respType); err != nil { - return wrapSendError(err) - } - _, err = s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aci, pni, func(recipient *types.Recipient) (bool, error) { - changed := recipient.Blocked != msg.Content.Block - recipient.Blocked = msg.Content.Block - return changed, nil - }) - return err -} - -func (s *SignalClient) reportSpam(ctx context.Context, portal *bridgev2.Portal, aci uuid.UUID) error { - messages, err := s.Main.Bridge.DB.Message.GetLastNInPortal(ctx, portal.PortalKey, 100) - if err != nil { - return err - } - seen := make(map[string]bool) - for _, message := range messages { - meta := message.Metadata.(*signalid.MessageMetadata) - if message.SenderID != signalid.MakeUserID(aci) || meta.ServerGUID == "" || seen[meta.ServerGUID] { - continue - } - if err = s.Client.ReportSpam(ctx, aci, meta.ServerGUID, meta.ReportingToken); err != nil { - return wrapSendError(err) - } - seen[meta.ServerGUID] = true - if len(seen) == 3 { - break - } - } - if len(seen) == 0 { - return fmt.Errorf("no received messages with server GUIDs available to report") - } - return nil -} diff --git a/pkg/connector/handlesignal.go b/pkg/connector/handlesignal.go index b6e746f..fce7f2c 100644 --- a/pkg/connector/handlesignal.go +++ b/pkg/connector/handlesignal.go @@ -17,7 +17,6 @@ package connector import ( - "cmp" "context" "encoding/base64" "fmt" @@ -34,6 +33,7 @@ import ( "maunium.net/go/mautrix/bridgev2/database" "maunium.net/go/mautrix/bridgev2/networkid" "maunium.net/go/mautrix/bridgev2/simplevent" + "maunium.net/go/mautrix/bridgev2/status" "maunium.net/go/mautrix/event" "go.mau.fi/mautrix-signal/pkg/libsignalgo" @@ -47,17 +47,11 @@ import ( func (s *SignalClient) handleSignalEvent(rawEvt events.SignalEvent) bool { switch evt := rawEvt.(type) { case *events.ChatEvent: - wrapped := &Bv2ChatEvent{ChatEvent: evt, s: s} - if msg, ok := evt.Event.(*signalpb.DataMessage); ok && msg.GetIsViewOnce() { - s.recentMessageRooms.Push(wrapped.GetID(), wrapped.GetPortalKey()) - } - return s.Main.Bridge.QueueRemoteEvent(s.UserLogin, wrapped).Success + return s.Main.Bridge.QueueRemoteEvent(s.UserLogin, &Bv2ChatEvent{ChatEvent: evt, s: s}).Success case *events.DecryptionError: return s.Main.Bridge.QueueRemoteEvent(s.UserLogin, s.wrapDecryptionError(evt)).Success case *events.Receipt: return s.handleSignalReceipt(evt) - case *events.ViewOnceOpen: - return s.handleSignalViewOnceOpen(evt) case *events.ReadSelf: return s.handleSignalReadSelf(evt) case *events.DeleteForMe: @@ -73,9 +67,7 @@ func (s *SignalClient) handleSignalEvent(rawEvt events.SignalEvent) bool { case *events.QueueEmpty: s.queueEmptyWaiter.Set() case *events.LoggedOut: - s.sendLoggedOutState(evt.Error) - case *events.IdentityChange: - s.handleSignalIdentityChange(evt) + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: evt.Error.Error()}) default: s.UserLogin.Log.Warn().Type("event_type", evt).Msg("Unrecognized signalmeow event type") } @@ -161,44 +153,6 @@ func convertDecryptionError(_ context.Context, _ *bridgev2.Portal, _ bridgev2.Ma }, nil } -func (s *SignalClient) handleSignalIdentityChange(evt *events.IdentityChange) { - if !s.Main.Config.IdentityChangeNotices || evt.ServiceID.Type != libsignalgo.ServiceIDTypeACI || evt.ServiceID.UUID == s.Client.Store.ACI { - return - } - s.UserLogin.QueueRemoteEvent(&simplevent.Message[*events.IdentityChange]{ - EventMeta: simplevent.EventMeta{ - Type: bridgev2.RemoteEventMessage, - LogContext: func(c zerolog.Context) zerolog.Context { - return c.Stringer("sender_id", evt.ServiceID) - }, - PortalKey: s.makeDMPortalKey(evt.ServiceID), - Sender: s.makeEventSender(evt.ServiceID.UUID), - }, - Data: evt, - ID: "idchange|" + signalid.MakeMessageID(evt.ServiceID.UUID, uint64(time.Now().UnixMilli())), - ConvertMessageFunc: convertIdentityChange, - }) -} - -func convertIdentityChange(ctx context.Context, portal *bridgev2.Portal, _ bridgev2.MatrixAPI, evt *events.IdentityChange) (*bridgev2.ConvertedMessage, error) { - name := evt.ServiceID.UUID.String() - ghost, err := portal.Bridge.GetGhostByID(ctx, signalid.MakeUserID(evt.ServiceID.UUID)) - if err != nil { - return nil, err - } else if ghost.Name != "" { - name = ghost.Name - } - return &bridgev2.ConvertedMessage{ - Parts: []*bridgev2.ConvertedMessagePart{{ - Type: event.EventMessage, - Content: &event.MessageEventContent{ - MsgType: event.MsgNotice, - Body: fmt.Sprintf("Your safety number with %s has changed.", name), - }, - }}, - }, nil -} - type Bv2ChatEvent struct { *events.ChatEvent s *SignalClient @@ -221,9 +175,8 @@ func (evt *Bv2ChatEvent) GetType() bridgev2.RemoteEventType { switch innerEvt := evt.Event.(type) { case *signalpb.DataMessage: switch { - case innerEvt.GetIsViewOnce(), innerEvt.Body != nil, innerEvt.Attachments != nil, innerEvt.Contact != nil, innerEvt.Sticker != nil, + case innerEvt.Body != nil, innerEvt.Attachments != nil, innerEvt.Contact != nil, innerEvt.Sticker != nil, innerEvt.Payment != nil, innerEvt.GiftBadge != nil, innerEvt.PollCreate != nil, innerEvt.PollVote != nil, - innerEvt.PinMessage != nil, innerEvt.UnpinMessage != nil, innerEvt.GetRequiredProtocolVersion() > uint32(signalpb.DataMessage_CURRENT), innerEvt.GetFlags()&uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE) != 0: return bridgev2.RemoteEventMessage @@ -245,25 +198,17 @@ func (evt *Bv2ChatEvent) GetType() bridgev2.RemoteEventType { return bridgev2.RemoteEventUnknown } -func (evt *Bv2ChatEvent) GetChatInfoChange(ctx context.Context, portal *bridgev2.Portal) (*bridgev2.ChatInfoChange, error) { +func (evt *Bv2ChatEvent) GetChatInfoChange(ctx context.Context) (*bridgev2.ChatInfoChange, error) { dm, _ := evt.Event.(*signalpb.DataMessage) gv2 := dm.GetGroupV2() if gv2 == nil || gv2.GroupChange == nil { return nil, fmt.Errorf("GetChatInfoChange() called for non-GroupChange event") } - portalRevision := portal.Metadata.(*signalid.PortalMetadata).Revision groupChange, err := evt.s.Client.DecryptGroupChange(ctx, gv2) if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to decrypt group change") - return nil, nil - } else if groupChange.Revision != gv2.GetRevision() || groupChange.Revision != portalRevision+1 { - zerolog.Ctx(ctx).Warn(). - Uint32("decrypted_revision", groupChange.Revision). - Uint32("envelope_revision", gv2.GetRevision()). - Uint32("portal_revision", portalRevision). - Msg("Group change revision mismatch, ignoring event") - return nil, nil + return nil, fmt.Errorf("failed to decrypt group change: %w", err) } + // XXX: is this ID compatible with types.GroupIdentifier? return evt.s.groupChangeToChatInfoChange(ctx, types.GroupIdentifier(evt.Info.ChatID), gv2.GetRevision(), groupChange) } @@ -272,16 +217,13 @@ func (evt *Bv2ChatEvent) PreHandle(ctx context.Context, portal *bridgev2.Portal) if !ok || dataMsg.GroupV2 == nil { return } - portalMeta := portal.Metadata.(*signalid.PortalMetadata) - portalRev := portalMeta.Revision + portalRev := portal.Metadata.(*signalid.PortalMetadata).Revision if evt.Info.GroupRevision > portalRev { toRevision := evt.Info.GroupRevision if dataMsg.GetGroupV2().GetGroupChange() != nil { toRevision-- } evt.s.catchUpGroup(ctx, portal, portalRev, toRevision, dataMsg.GetTimestamp()) - } else if portalMeta.InfoVersion < currentPortalInfoVersion && portal.MXID != "" { - evt.s.catchUpGroup(ctx, portal, 0, portalRev, dataMsg.GetTimestamp()) } } @@ -399,16 +341,6 @@ func (evt *Bv2ChatEvent) ConvertMessage(ctx context.Context, portal *bridgev2.Po return nil, fmt.Errorf("ConvertMessage() called for non-DataMessage event") } converted := evt.s.Main.MsgConv.ToMatrix(ctx, evt.s.Client, portal, evt.Info.Sender, intent, dataMsg, nil) - for _, part := range converted.Parts { - meta, ok := part.DBMetadata.(*signalid.MessageMetadata) - if !ok { - meta = &signalid.MessageMetadata{} - part.DBMetadata = meta - } - meta.ServerGUID = evt.Info.ServerGUID - meta.ReportingToken = evt.Info.ReportingToken - } - if converted.Disappear.Type != "" { evtTS := evt.GetTimestamp() if !dataMsg.GetIsViewOnce() { @@ -452,14 +384,6 @@ func (evt *Bv2ChatEvent) ConvertEdit(ctx context.Context, portal *bridgev2.Porta if !ok { return nil, fmt.Errorf("ConvertEdit() called for non-EditMessage event") } - if editMsg.GetDataMessage().GetIsViewOnce() { - return nil, bridgev2.ErrIgnoringRemoteEvent - } - for _, part := range existing { - if part.Metadata.(*signalid.MessageMetadata).ViewOnce { - return nil, fmt.Errorf("%w: edit target is view-once media", bridgev2.ErrIgnoringRemoteEvent) - } - } existing = slices.DeleteFunc(slices.Clone(existing), isEditStub) if len(existing) == 0 { return nil, fmt.Errorf("%w: edit target has already been edited", bridgev2.ErrIgnoringRemoteEvent) @@ -588,54 +512,6 @@ func (s *SignalClient) handleSignalReceipt(evt *events.Receipt) bool { return s.dispatchReceipts(evt.Sender, evt.Content.GetType(), receipts) } -func (s *SignalClient) handleSignalViewOnceOpen(evt *events.ViewOnceOpen) bool { - ctx := s.Main.Bridge.BackgroundCtx - log := s.UserLogin.Log.With(). - Str("action", "handle signal view once open"). - Logger() - ctx = log.WithContext(ctx) - sender, err := signalmeow.ParseStringOrBinaryUUID(evt.GetSenderAci(), evt.GetSenderAciBinary()) - if err != nil { - log.Err(err).Msg("Invalid sender in view-once open sync") - return true - } - messageID := signalid.MakeMessageID(sender, evt.GetTimestamp()) - portalKey, ok := s.recentMessageRooms.Get(messageID) - if !ok { - msg, dbErr := s.Main.Bridge.DB.Message.GetFirstPartByID(ctx, s.UserLogin.ID, messageID) - if dbErr != nil { - log.Err(dbErr).Msg("Failed to get opened view-once message") - return ctx.Err() == nil - } else if msg == nil { - return true - } - portalKey = msg.Room - } - return s.Main.Bridge.QueueRemoteEvent(s.UserLogin, &simplevent.EventMeta{ - Type: bridgev2.RemoteEventUnknown, - PortalKey: portalKey, - PreHandleFunc: func(ctx context.Context, portal *bridgev2.Portal) { - messages, dbErr := s.Main.Bridge.DB.Message.GetAllPartsByID(ctx, s.UserLogin.ID, messageID) - if dbErr != nil { - log.Err(dbErr).Msg("Failed to get opened view-once message") - return - } - for _, msg := range messages { - meta := msg.Metadata.(*signalid.MessageMetadata) - if !meta.ViewOnce || !meta.ContainsAttachments { - continue - } - if addErr := s.Main.Bridge.DisappearLoop.Add(ctx, &database.DisappearingMessage{ - RoomID: portal.MXID, EventID: msg.MXID, Timestamp: msg.Timestamp, - DisappearingSetting: database.DisappearingSetting{Type: "view_limited", DisappearAt: time.Now()}, - }); addErr != nil { - log.Err(addErr).Msg("Failed to queue opened view-once media expiry") - } - } - }, - }).Success -} - func (s *SignalClient) handleSignalReadSelf(evt *events.ReadSelf) bool { log := s.UserLogin.Log.With(). Str("action", "handle signal read self"). @@ -813,14 +689,8 @@ func (s *SignalClient) handleSignalDeleteForMe(evt *events.DeleteForMe) bool { } func (s *SignalClient) handleSignalMessageRequestResponse(evt *events.MessageRequestResponse) bool { - info := &bridgev2.ChatInfo{} - switch evt.Type { - case signalpb.SyncMessage_MessageRequestResponse_ACCEPT: - info.MessageRequest = ptr.Ptr(false) - info.UserBlocked = ptr.Ptr(false) - case signalpb.SyncMessage_MessageRequestResponse_BLOCK, signalpb.SyncMessage_MessageRequestResponse_BLOCK_AND_SPAM, signalpb.SyncMessage_MessageRequestResponse_BLOCK_AND_DELETE: - info.UserBlocked = ptr.Ptr(true) - default: + if evt.Type != signalpb.SyncMessage_MessageRequestResponse_ACCEPT { + // TODO do we need to do anything with blocks/deletes here or are they sent as normal delete events? return true } var portalKey networkid.PortalKey @@ -842,7 +712,9 @@ func (s *SignalClient) handleSignalMessageRequestResponse(evt *events.MessageReq }, }, ChatInfoChange: &bridgev2.ChatInfoChange{ - ChatInfo: info, + ChatInfo: &bridgev2.ChatInfo{ + MessageRequest: ptr.Ptr(false), + }, }, }) return res.Success @@ -893,7 +765,7 @@ func (s *SignalClient) handleSignalContactList(evt *events.ContactList) { log.Err(err).Msg("Failed to get ghost to update contact info") continue } - userInfo, err := s.contactToUserInfo(ctx, contact, ghost.Metadata.(*signalid.GhostMetadata).Username, false) + userInfo, err := s.contactToUserInfo(ctx, contact) if err != nil { log.Err(err).Msg("Failed to convert contact info") continue @@ -902,25 +774,29 @@ func (s *SignalClient) handleSignalContactList(evt *events.ContactList) { if contact.ACI == s.Client.Store.ACI { s.updateRemoteProfile(ctx, true) } - portal, err := s.Main.Bridge.GetExistingPortalByKey(ctx, s.makeDMPortalKey(libsignalgo.NewACIServiceID(contact.ACI))) - if err != nil { - log.Err(err).Msg("Failed to get existing portal to update contact info") - continue - } - if portal != nil && (portal.UserBlocked != contact.Blocked || (portal.MessageRequest && ptr.Val(contact.Whitelisted))) { - info := &bridgev2.ChatInfo{UserBlocked: ptr.Ptr(contact.Blocked)} - if ptr.Val(contact.Whitelisted) { - info.MessageRequest = ptr.Ptr(false) + if ptr.Val(contact.Whitelisted) { + portal, err := s.Main.Bridge.GetExistingPortalByKey(ctx, s.makeDMPortalKey(libsignalgo.NewACIServiceID(contact.ACI))) + if err != nil { + log.Err(err).Msg("Failed to get existing portal to update contact info") + continue + } else if portal != nil && portal.MessageRequest { + s.UserLogin.QueueRemoteEvent(&simplevent.ChatInfoChange{ + EventMeta: simplevent.EventMeta{ + Type: bridgev2.RemoteEventChatInfoChange, + LogContext: func(c zerolog.Context) zerolog.Context { + return c.Str("action", "unmark message request").Str("source", "contact list") + }, + PortalKey: portal.PortalKey, + }, + ChatInfoChange: &bridgev2.ChatInfoChange{ + ChatInfo: &bridgev2.ChatInfo{ + MessageRequest: ptr.Ptr(false), + }, + }, + }) } - s.UserLogin.QueueRemoteEvent(&simplevent.ChatInfoChange{ - EventMeta: simplevent.EventMeta{Type: bridgev2.RemoteEventChatInfoChange, PortalKey: portal.PortalKey}, - ChatInfoChange: &bridgev2.ChatInfoChange{ChatInfo: info}, - }) } } - if evt.IsFromDB { - return - } s.UserLogin.Metadata.(*signalid.UserLoginMetadata).LastContactSync = jsontime.UnixMilliNow() err := s.UserLogin.Save(ctx) if err != nil { @@ -938,13 +814,6 @@ func (s *SignalClient) updateRemoteProfile(ctx context.Context, resendState bool } } changed := false - if s.Client.Store.AccountRecord != nil && s.Client.Store.AccountRecord.Username != s.UserLogin.RemoteProfile.Username { - s.UserLogin.RemoteProfile.Username = s.Client.Store.AccountRecord.Username - if s.Client.Store.PNI == uuid.Nil { - s.UserLogin.RemoteName = cmp.Or(s.Client.Store.AccountRecord.Username, s.Client.Store.ACI.String()) - } - changed = true - } if s.UserLogin.RemoteProfile.Name != s.Ghost.Name { s.UserLogin.RemoteProfile.Name = s.Ghost.Name changed = true diff --git a/pkg/connector/login.go b/pkg/connector/login.go index dd636b3..60fb936 100644 --- a/pkg/connector/login.go +++ b/pkg/connector/login.go @@ -17,7 +17,6 @@ package connector import ( - "cmp" "context" "errors" "fmt" @@ -107,7 +106,7 @@ var ( ErrDeviceLinkRateLimited = bridgev2.RespError{ ErrCode: "FI.MAU.SIGNAL.DEVICE_LINK_RATE_LIMITED", Err: "Signal rate-limited the linking attempt, please wait a few minutes and try again", - StatusCode: http.StatusBadRequest, + StatusCode: http.StatusTooManyRequests, } ErrDeviceLinkRejected = bridgev2.RespError{ ErrCode: "FI.MAU.SIGNAL.DEVICE_LINK_REJECTED", @@ -221,7 +220,7 @@ func (qr *QRLogin) loginComplete(ctx context.Context, provData *store.DeviceData defer qr.cancelChan() ul, err := qr.User.NewLogin(ctx, &database.UserLogin{ ID: signalid.MakeUserLoginID(provData.ACI), - RemoteName: cmp.Or(provData.Number, provData.ACI.String()), + RemoteName: provData.Number, RemoteProfile: status.RemoteProfile{ Phone: provData.Number, }, diff --git a/pkg/libsignalgo/authcredential.go b/pkg/libsignalgo/authcredential.go index 5b8ede5..0a1edfc 100644 --- a/pkg/libsignalgo/authcredential.go +++ b/pkg/libsignalgo/authcredential.go @@ -68,33 +68,6 @@ func ReceiveAuthCredentialWithPni( return (*AuthCredentialWithPni)(resultBytes), nil } -func ReceiveAuthCredentialZKC( - serverPublicParams *ServerPublicParams, - aci uuid.UUID, - authCredentialSalt []byte, - redemptionTime uint64, - authCredResponse AuthCredentialWithPniResponse, -) (*AuthCredentialWithPni, error) { - var c_result C.SignalOwnedBuffer = C.SignalOwnedBuffer{} - - signalFfiError := C.signal_server_public_params_receive_auth_credential_zkc_without_pni( - &c_result, - C.SignalConstPointerServerPublicParams{serverPublicParams}, - NewACIServiceID(aci).cConstFixedArray(), - BytesToBuffer(authCredentialSalt), - C.uint64_t(redemptionTime), - BytesToBuffer(authCredResponse[:]), - ) - if signalFfiError != nil { - return nil, wrapError(signalFfiError) - } - resultBytes := CopySignalOwnedBufferToBytes(c_result) - if len(resultBytes) != AuthCredentialWithPniLength { - return nil, fmt.Errorf("invalid response length %d (expected %d)", len(resultBytes), AuthCredentialWithPniLength) - } - return (*AuthCredentialWithPni)(resultBytes), nil -} - func NewAuthCredentialWithPniResponse(b []byte) (*AuthCredentialWithPniResponse, error) { if len(b) != AuthCredentialWithPniResponseLength { return nil, fmt.Errorf("invalid auth credential with pni response length %d (expected %d)", len(b), AuthCredentialWithPniResponseLength) diff --git a/pkg/libsignalgo/backupkey.go b/pkg/libsignalgo/backupkey.go index 47cce90..b5f53f2 100644 --- a/pkg/libsignalgo/backupkey.go +++ b/pkg/libsignalgo/backupkey.go @@ -49,8 +49,8 @@ func (bk *BackupKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(bk)) } -func (bk *BackupKey) cConstFixedArray() C.SignalType_ConstPointer_FixedArray32_uint8_t { - return (C.SignalType_ConstPointer_FixedArray32_uint8_t)(unsafe.Pointer(bk)) +func (bk *BackupKey) cConstFixedArray() cFixedArray32Compat { + return cFixedArray32Compat(bk.cFixedArray()) } func GenerateRandomBackupKey() *BackupKey { diff --git a/pkg/libsignalgo/fixedarray.go b/pkg/libsignalgo/fixedarray.go index ad94514..949e808 100644 --- a/pkg/libsignalgo/fixedarray.go +++ b/pkg/libsignalgo/fixedarray.go @@ -42,118 +42,118 @@ func (a *fixedArray15) cFixedArray() *C.SignalType_FixedArray15_uint8_t { return (*C.SignalType_FixedArray15_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray15) cConstFixedArray() C.SignalType_ConstPointer_FixedArray15_uint8_t { - return (C.SignalType_ConstPointer_FixedArray15_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray15) cConstFixedArray() cFixedArray15Compat { + return cFixedArray15Compat(a.cFixedArray()) } func (a *fixedArray16) cFixedArray() *C.SignalType_FixedArray16_uint8_t { return (*C.SignalType_FixedArray16_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray16) cConstFixedArray() C.SignalType_ConstPointer_FixedArray16_uint8_t { - return (C.SignalType_ConstPointer_FixedArray16_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray16) cConstFixedArray() cFixedArray16Compat { + return cFixedArray16Compat(a.cFixedArray()) } func (a *fixedArray17) cFixedArray() *C.SignalType_FixedArray17_uint8_t { return (*C.SignalType_FixedArray17_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray17) cConstFixedArray() C.SignalType_ConstPointer_FixedArray17_uint8_t { - return (C.SignalType_ConstPointer_FixedArray17_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray17) cConstFixedArray() cFixedArray17Compat { + return cFixedArray17Compat(a.cFixedArray()) } func (a *fixedArray32) cFixedArray() *C.SignalType_FixedArray32_uint8_t { return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray32) cConstFixedArray() C.SignalType_ConstPointer_FixedArray32_uint8_t { - return (C.SignalType_ConstPointer_FixedArray32_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray32) cConstFixedArray() cFixedArray32Compat { + return cFixedArray32Compat(a.cFixedArray()) } func (a *fixedArray64) cFixedArray() *C.SignalType_FixedArray64_uint8_t { return (*C.SignalType_FixedArray64_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray64) cConstFixedArray() C.SignalType_ConstPointer_FixedArray64_uint8_t { - return (C.SignalType_ConstPointer_FixedArray64_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray64) cConstFixedArray() cFixedArray64Compat { + return cFixedArray64Compat(a.cFixedArray()) } func (a *fixedArray65) cFixedArray() *C.SignalType_FixedArray65_uint8_t { return (*C.SignalType_FixedArray65_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray65) cConstFixedArray() C.SignalType_ConstPointer_FixedArray65_uint8_t { - return (C.SignalType_ConstPointer_FixedArray65_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray65) cConstFixedArray() cFixedArray65Compat { + return cFixedArray65Compat(a.cFixedArray()) } func (a *fixedArray97) cFixedArray() *C.SignalType_FixedArray97_uint8_t { return (*C.SignalType_FixedArray97_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray97) cConstFixedArray() C.SignalType_ConstPointer_FixedArray97_uint8_t { - return (C.SignalType_ConstPointer_FixedArray97_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray97) cConstFixedArray() cFixedArray97Compat { + return cFixedArray97Compat(a.cFixedArray()) } func (a *fixedArray129) cFixedArray() *C.SignalType_FixedArray129_uint8_t { return (*C.SignalType_FixedArray129_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray129) cConstFixedArray() C.SignalType_ConstPointer_FixedArray129_uint8_t { - return (C.SignalType_ConstPointer_FixedArray129_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray129) cConstFixedArray() cFixedArray129Compat { + return cFixedArray129Compat(a.cFixedArray()) } func (a *fixedArray153) cFixedArray() *C.SignalType_FixedArray153_uint8_t { return (*C.SignalType_FixedArray153_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray153) cConstFixedArray() C.SignalType_ConstPointer_FixedArray153_uint8_t { - return (C.SignalType_ConstPointer_FixedArray153_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray153) cConstFixedArray() cFixedArray153Compat { + return cFixedArray153Compat(a.cFixedArray()) } func (a *fixedArray177) cFixedArray() *C.SignalType_FixedArray177_uint8_t { return (*C.SignalType_FixedArray177_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray177) cConstFixedArray() C.SignalType_ConstPointer_FixedArray177_uint8_t { - return (C.SignalType_ConstPointer_FixedArray177_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray177) cConstFixedArray() cFixedArray177Compat { + return cFixedArray177Compat(a.cFixedArray()) } func (a *fixedArray289) cFixedArray() *C.SignalType_FixedArray289_uint8_t { return (*C.SignalType_FixedArray289_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray289) cConstFixedArray() C.SignalType_ConstPointer_FixedArray289_uint8_t { - return (C.SignalType_ConstPointer_FixedArray289_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray289) cConstFixedArray() cFixedArray289Compat { + return cFixedArray289Compat(a.cFixedArray()) } func (a *fixedArray329) cFixedArray() *C.SignalType_FixedArray329_uint8_t { return (*C.SignalType_FixedArray329_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray329) cConstFixedArray() C.SignalType_ConstPointer_FixedArray329_uint8_t { - return (C.SignalType_ConstPointer_FixedArray329_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray329) cConstFixedArray() cFixedArray329Compat { + return cFixedArray329Compat(a.cFixedArray()) } func (a *fixedArray409) cFixedArray() *C.SignalType_FixedArray409_uint8_t { return (*C.SignalType_FixedArray409_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray409) cConstFixedArray() C.SignalType_ConstPointer_FixedArray409_uint8_t { - return (C.SignalType_ConstPointer_FixedArray409_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray409) cConstFixedArray() cFixedArray409Compat { + return cFixedArray409Compat(a.cFixedArray()) } func (a *fixedArray473) cFixedArray() *C.SignalType_FixedArray473_uint8_t { return (*C.SignalType_FixedArray473_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray473) cConstFixedArray() C.SignalType_ConstPointer_FixedArray473_uint8_t { - return (C.SignalType_ConstPointer_FixedArray473_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray473) cConstFixedArray() cFixedArray473Compat { + return cFixedArray473Compat(a.cFixedArray()) } func (a *fixedArray497) cFixedArray() *C.SignalType_FixedArray497_uint8_t { return (*C.SignalType_FixedArray497_uint8_t)(unsafe.Pointer(a)) } -func (a *fixedArray497) cConstFixedArray() C.SignalType_ConstPointer_FixedArray497_uint8_t { - return (C.SignalType_ConstPointer_FixedArray497_uint8_t)(unsafe.Pointer(a)) +func (a *fixedArray497) cConstFixedArray() cFixedArray497Compat { + return cFixedArray497Compat(a.cFixedArray()) } diff --git a/pkg/libsignalgo/fixedarray_clang.go b/pkg/libsignalgo/fixedarray_clang.go new file mode 100644 index 0000000..3dc0cd2 --- /dev/null +++ b/pkg/libsignalgo/fixedarray_clang.go @@ -0,0 +1,24 @@ +//go:build darwin || android || ios || (windows && arm64) + +package libsignalgo + +/* +#include "./libsignal-ffi.h" +*/ +import "C" + +type cFixedArray15Compat = *C.SignalType_FixedArray15_uint8_t +type cFixedArray16Compat = *C.SignalType_FixedArray16_uint8_t +type cFixedArray17Compat = *C.SignalType_FixedArray17_uint8_t +type cFixedArray32Compat = *C.SignalType_FixedArray32_uint8_t +type cFixedArray64Compat = *C.SignalType_FixedArray64_uint8_t +type cFixedArray65Compat = *C.SignalType_FixedArray65_uint8_t +type cFixedArray97Compat = *C.SignalType_FixedArray97_uint8_t +type cFixedArray129Compat = *C.SignalType_FixedArray129_uint8_t +type cFixedArray153Compat = *C.SignalType_FixedArray153_uint8_t +type cFixedArray177Compat = *C.SignalType_FixedArray177_uint8_t +type cFixedArray289Compat = *C.SignalType_FixedArray289_uint8_t +type cFixedArray329Compat = *C.SignalType_FixedArray329_uint8_t +type cFixedArray409Compat = *C.SignalType_FixedArray409_uint8_t +type cFixedArray473Compat = *C.SignalType_FixedArray473_uint8_t +type cFixedArray497Compat = *C.SignalType_FixedArray497_uint8_t diff --git a/pkg/libsignalgo/fixedarray_gcc.go b/pkg/libsignalgo/fixedarray_gcc.go new file mode 100644 index 0000000..6490494 --- /dev/null +++ b/pkg/libsignalgo/fixedarray_gcc.go @@ -0,0 +1,26 @@ +//go:build !(darwin || android || ios || (windows && arm64)) + +package libsignalgo + +/* +#include "./libsignal-ffi.h" +*/ +import "C" + +// Hack for https://github.com/golang/go/issues/7270 +// The clang version is more correct, but doesn't work with gcc. +type cFixedArray15Compat = *[15]C.uint8_t +type cFixedArray16Compat = *[16]C.uint8_t +type cFixedArray17Compat = *[17]C.uint8_t +type cFixedArray32Compat = *[32]C.uint8_t +type cFixedArray64Compat = *[64]C.uint8_t +type cFixedArray65Compat = *[65]C.uint8_t +type cFixedArray97Compat = *[97]C.uint8_t +type cFixedArray129Compat = *[129]C.uint8_t +type cFixedArray153Compat = *[153]C.uint8_t +type cFixedArray177Compat = *[177]C.uint8_t +type cFixedArray289Compat = *[289]C.uint8_t +type cFixedArray329Compat = *[329]C.uint8_t +type cFixedArray409Compat = *[409]C.uint8_t +type cFixedArray473Compat = *[473]C.uint8_t +type cFixedArray497Compat = *[497]C.uint8_t diff --git a/pkg/libsignalgo/groupsecretparams.go b/pkg/libsignalgo/groupsecretparams.go index 9402d0c..eee983f 100644 --- a/pkg/libsignalgo/groupsecretparams.go +++ b/pkg/libsignalgo/groupsecretparams.go @@ -57,24 +57,24 @@ func (gmk *GroupMasterKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(gmk)) } -func (gmk *GroupMasterKey) cConstFixedArray() C.SignalType_ConstPointer_FixedArray32_uint8_t { - return (C.SignalType_ConstPointer_FixedArray32_uint8_t)(unsafe.Pointer(gmk)) +func (gmk *GroupMasterKey) cConstFixedArray() cFixedArray32Compat { + return cFixedArray32Compat(gmk.cFixedArray()) } func (gsp *GroupSecretParams) cFixedArray() *C.SignalType_FixedArray289_uint8_t { return (*C.SignalType_FixedArray289_uint8_t)(unsafe.Pointer(gsp)) } -func (gsp *GroupSecretParams) cConstFixedArray() C.SignalType_ConstPointer_FixedArray289_uint8_t { - return (C.SignalType_ConstPointer_FixedArray289_uint8_t)(unsafe.Pointer(gsp)) +func (gsp *GroupSecretParams) cConstFixedArray() cFixedArray289Compat { + return cFixedArray289Compat(gsp.cFixedArray()) } func (gid *GroupIdentifier) cFixedArray() *C.SignalType_FixedArray32_uint8_t { return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(gid)) } -func (gid *GroupIdentifier) cConstFixedArray() C.SignalType_ConstPointer_FixedArray32_uint8_t { - return (C.SignalType_ConstPointer_FixedArray32_uint8_t)(unsafe.Pointer(gid)) +func (gid *GroupIdentifier) cConstFixedArray() cFixedArray32Compat { + return cFixedArray32Compat(gid.cFixedArray()) } func (gid *GroupIdentifier) String() string { @@ -84,9 +84,6 @@ func (gid *GroupIdentifier) String() string { return base64.StdEncoding.EncodeToString(gid[:]) } -const UUIDCiphertextLength = 65 -const ProfileKeyCiphertextLength = 65 - type UUIDCiphertext = fixedArray65 type ProfileKeyCiphertext = fixedArray65 diff --git a/pkg/libsignalgo/identitykey.go b/pkg/libsignalgo/identitykey.go index 6e5cf14..0226e11 100644 --- a/pkg/libsignalgo/identitykey.go +++ b/pkg/libsignalgo/identitykey.go @@ -29,8 +29,8 @@ type IdentityKey struct { publicKey *PublicKey } -func NewIdentityKeyFromPublicKey(publicKey *PublicKey) *IdentityKey { - return &IdentityKey{publicKey: publicKey} +func NewIdentityKeyFromPublicKey(publicKey *PublicKey) (*IdentityKey, error) { + return &IdentityKey{publicKey: publicKey}, nil } func NewIdentityKeyFromBytes(bytes []byte) (*IdentityKey, error) { diff --git a/pkg/libsignalgo/identitykeystore.go b/pkg/libsignalgo/identitykeystore.go index eb80056..ba26f06 100644 --- a/pkg/libsignalgo/identitykeystore.go +++ b/pkg/libsignalgo/identitykeystore.go @@ -90,8 +90,12 @@ func signal_get_local_registration_id_callback(storeCtx unsafe.Pointer, idp *C.u //export signal_save_identity_key_callback func signal_save_identity_key_callback(storeCtx unsafe.Pointer, out *C.uint8_t, address C.SignalMutPointerProtocolAddress, publicKey C.SignalMutPointerPublicKey) C.int { return wrapStoreCallback(storeCtx, func(store IdentityKeyStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - pub := wrapPublicKey(publicKey.raw) + publicKeyStruct := PublicKey{ptr: publicKey.raw} + cloned, err := publicKeyStruct.Clone() + if err != nil { + return err + } + addr := &Address{ptr: address.raw} theirServiceID, err := addr.NameServiceID() if err != nil { return err @@ -99,7 +103,7 @@ func signal_save_identity_key_callback(storeCtx unsafe.Pointer, out *C.uint8_t, replaced, err := store.SaveIdentityKey( ctx, theirServiceID, - &IdentityKey{pub}, + &IdentityKey{cloned}, ) if err != nil { return err @@ -116,7 +120,7 @@ func signal_save_identity_key_callback(storeCtx unsafe.Pointer, out *C.uint8_t, //export signal_get_identity_key_callback func signal_get_identity_key_callback(storeCtx unsafe.Pointer, public_keyp *C.SignalMutPointerPublicKey, address C.SignalMutPointerProtocolAddress) C.int { return wrapStoreCallback(storeCtx, func(store IdentityKeyStore, ctx context.Context) error { - addr := wrapAddress(address.raw) + addr := &Address{ptr: address.raw} theirServiceID, err := addr.NameServiceID() if err != nil { return err @@ -133,13 +137,12 @@ func signal_get_identity_key_callback(storeCtx unsafe.Pointer, public_keyp *C.Si //export signal_is_trusted_identity_callback func signal_is_trusted_identity_callback(storeCtx unsafe.Pointer, out *C.bool, address C.SignalMutPointerProtocolAddress, public_key C.SignalMutPointerPublicKey, direction C.uint32_t) C.int { return wrapStoreCallback(storeCtx, func(store IdentityKeyStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - pub := wrapPublicKey(public_key.raw) + addr := &Address{ptr: address.raw} theirServiceID, err := addr.NameServiceID() if err != nil { return err } - trusted, err := store.IsTrustedIdentity(ctx, theirServiceID, &IdentityKey{pub}, SignalDirection(direction)) + trusted, err := store.IsTrustedIdentity(ctx, theirServiceID, &IdentityKey{&PublicKey{ptr: public_key.raw}}, SignalDirection(direction)) if err != nil { return err } diff --git a/pkg/libsignalgo/kyberprekeystore.go b/pkg/libsignalgo/kyberprekeystore.go index 78ec925..9deea17 100644 --- a/pkg/libsignalgo/kyberprekeystore.go +++ b/pkg/libsignalgo/kyberprekeystore.go @@ -52,15 +52,18 @@ func signal_load_kyber_pre_key_callback(storeCtx unsafe.Pointer, keyp *C.SignalM //export signal_store_kyber_pre_key_callback func signal_store_kyber_pre_key_callback(storeCtx unsafe.Pointer, id C.uint32_t, preKeyRecord C.SignalMutPointerKyberPreKeyRecord) C.int { return wrapStoreCallback(storeCtx, func(store KyberPreKeyStore, ctx context.Context) error { - record := wrapKyberPreKeyRecord(preKeyRecord.raw) - return store.StoreKyberPreKey(ctx, uint32(id), record) + record := KyberPreKeyRecord{ptr: preKeyRecord.raw} + cloned, err := record.Clone() + if err != nil { + return err + } + return store.StoreKyberPreKey(ctx, uint32(id), cloned) }) } //export signal_mark_kyber_pre_key_used_callback func signal_mark_kyber_pre_key_used_callback(storeCtx unsafe.Pointer, id C.uint32_t, ecPrekeyID C.uint32_t, baseKey C.SignalMutPointerPublicKey) C.int { return wrapStoreCallback(storeCtx, func(store KyberPreKeyStore, ctx context.Context) error { - _ = wrapPublicKey(baseKey.raw) // TODO use ecPrekeyID and baseKey? return store.MarkKyberPreKeyUsed(ctx, uint32(id)) }) diff --git a/pkg/libsignalgo/libsignal b/pkg/libsignalgo/libsignal index 904c8dc..8fc2113 160000 --- a/pkg/libsignalgo/libsignal +++ b/pkg/libsignalgo/libsignal @@ -1 +1 @@ -Subproject commit 904c8dc8216073b078a5f2f5090e3da8382e6a92 +Subproject commit 8fc2113bda042fc972a166a24b974b0d34155c6c diff --git a/pkg/libsignalgo/libsignal-ffi.h b/pkg/libsignalgo/libsignal-ffi.h index d8e981e..dec28cd 100644 --- a/pkg/libsignalgo/libsignal-ffi.h +++ b/pkg/libsignalgo/libsignal-ffi.h @@ -175,19 +175,6 @@ static_assert_64bit(alignof(SignalConstPointerPublicKey) == 8); typedef const SignalConstPointerPublicKey* SignalType_ConstPointer_SignalConstPointerPublicKey; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConstPointerPublicKey) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalConstPointerPublicKey) == 8); -typedef struct SignalKyberPublicKey SignalKyberPublicKey; -typedef const SignalKyberPublicKey* SignalType_ConstPointer_SignalKyberPublicKey; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalKyberPublicKey) == 8); -typedef struct { - const SignalKyberPublicKey* raw; -} SignalConstPointerKyberPublicKey; -static_assert_64bit(offsetof(SignalConstPointerKyberPublicKey, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalConstPointerKyberPublicKey) == 8); -typedef const SignalConstPointerKyberPublicKey* SignalType_ConstPointer_SignalConstPointerKyberPublicKey; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConstPointerKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConstPointerKyberPublicKey) == 8); typedef struct SignalCiphertextMessage SignalCiphertextMessage; typedef const SignalCiphertextMessage* SignalType_ConstPointer_SignalCiphertextMessage; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalCiphertextMessage) == 8); @@ -520,22 +507,6 @@ static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17 typedef const SignalOwnedBuffer* SignalType_ConstPointer_SignalOwnedBuffer; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBuffer) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBuffer) == 8); -typedef SignalOwnedBuffer* SignalType_MutPointer_SignalOwnedBuffer; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBuffer) == 8); -typedef struct { - SignalOwnedBuffer* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedOwnedBuffer; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedOwnedBuffer, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedOwnedBuffer, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedOwnedBuffer, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedOwnedBuffer) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedOwnedBuffer) == 8); -typedef const SignalOwnedBufferOfMaxAlignedOwnedBuffer* SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer) == 8); typedef enum { SignalAuthCheckResultFfiResultMatch, SignalAuthCheckResultFfiResultNoMatch, @@ -592,7 +563,6 @@ static_assert_64bit(sizeof(SignalBridgeConfirmedMfaKeyMetadataFfiResult) == 24); static_assert_64bit(alignof(SignalBridgeConfirmedMfaKeyMetadataFfiResult) == 8); typedef enum { SignalBridgeMfaKeyKindFfiResultTotp, - SignalBridgeMfaKeyKindFfiResultWebAuthn, SignalBridgeMfaKeyKindFfiResultUnknown, } SignalBridgeMfaKeyKindFfiResult; static_assert_64bit(sizeof(SignalBridgeMfaKeyKindFfiResult) == 4); @@ -623,33 +593,6 @@ static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFf typedef const SignalOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult* SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult) == 8); -typedef enum { - SignalDeviceCapabilityInternalFfiResultStorage, - SignalDeviceCapabilityInternalFfiResultTransfer, - SignalDeviceCapabilityInternalFfiResultAttachmentBackfill, - SignalDeviceCapabilityInternalFfiResultSparsePostQuantumRatchet, - SignalDeviceCapabilityInternalFfiResultProfilesV2, - SignalDeviceCapabilityInternalFfiResultUsernameChangeSyncMessage, - SignalDeviceCapabilityInternalFfiResultOptionalPhoneNumber, -} SignalDeviceCapabilityInternalFfiResult; -static_assert_64bit(sizeof(SignalDeviceCapabilityInternalFfiResult) == 4); -static_assert_64bit(alignof(SignalDeviceCapabilityInternalFfiResult) == 4); -typedef SignalDeviceCapabilityInternalFfiResult* SignalType_MutPointer_SignalDeviceCapabilityInternalFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalDeviceCapabilityInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalDeviceCapabilityInternalFfiResult) == 8); -typedef struct { - SignalDeviceCapabilityInternalFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); -typedef const SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult* SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); typedef struct { uint8_t id; SignalOwnedBuffer encrypted_name; @@ -785,10 +728,6 @@ static_assert_64bit(alignof(SignalFfiSyncInputStreamStruct) == 8); typedef const SignalFfiSyncInputStreamStruct* SignalType_ConstPointer_SignalFfiSyncInputStreamStruct; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiSyncInputStreamStruct) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiSyncInputStreamStruct) == 8); -typedef struct SignalBackupJsonExporter SignalBackupJsonExporter; -typedef const SignalBackupJsonExporter* SignalType_ConstPointer_SignalBackupJsonExporter; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBackupJsonExporter) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBackupJsonExporter) == 8); typedef struct SignalMessageBackupKey SignalMessageBackupKey; typedef const SignalMessageBackupKey* SignalType_ConstPointer_SignalMessageBackupKey; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMessageBackupKey) == 8); @@ -899,32 +838,6 @@ static_assert_64bit(alignof(SignalBridgePreKeyCountsFfiResult) == 4); typedef const SignalBridgePreKeyCountsFfiResult* SignalType_ConstPointer_SignalBridgePreKeyCountsFfiResult; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgePreKeyCountsFfiResult) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgePreKeyCountsFfiResult) == 8); -typedef int32_t* SignalType_MutPointer_int32_t; -static_assert_64bit(sizeof(SignalType_MutPointer_int32_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_int32_t) == 8); -typedef struct { - int32_t* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedi32; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedi32, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedi32, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedi32, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedi32) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedi32) == 8); -typedef struct { - SignalOwnedBuffer user_handle; - SignalOwnedBufferOfMaxAlignedi32 allowed_algorithms; - SignalOwnedBufferOfMaxAlignedOwnedBuffer exclude_credential_ids; -} SignalBridgeWebAuthnCreateParametersFfiResult; -static_assert_64bit(offsetof(SignalBridgeWebAuthnCreateParametersFfiResult, user_handle) == 0); -static_assert_64bit(offsetof(SignalBridgeWebAuthnCreateParametersFfiResult, allowed_algorithms) == 16); -static_assert_64bit(offsetof(SignalBridgeWebAuthnCreateParametersFfiResult, exclude_credential_ids) == 40); -static_assert_64bit(sizeof(SignalBridgeWebAuthnCreateParametersFfiResult) == 64); -static_assert_64bit(alignof(SignalBridgeWebAuthnCreateParametersFfiResult) == 8); -typedef const SignalBridgeWebAuthnCreateParametersFfiResult* SignalType_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult) == 8); typedef enum { SignalBridgeCopyBackupMediaResultFfiResultSuccess, SignalBridgeCopyBackupMediaResultFfiResultSourceNotFound, @@ -1102,59 +1015,6 @@ static_assert_64bit(alignof(SignalType_ConstPointer_SignalServerMessageAck) == 8 typedef const SignalUnauthenticatedChatConnection* SignalType_ConstPointer_SignalUnauthenticatedChatConnection; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalUnauthenticatedChatConnection) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalUnauthenticatedChatConnection) == 8); -typedef struct { - int64_t level; - uint64_t expiration; -} SignalBackupEntitlementFfiResult; -static_assert_64bit(offsetof(SignalBackupEntitlementFfiResult, level) == 0); -static_assert_64bit(offsetof(SignalBackupEntitlementFfiResult, expiration) == 8); -static_assert_64bit(sizeof(SignalBackupEntitlementFfiResult) == 16); -static_assert_64bit(alignof(SignalBackupEntitlementFfiResult) == 8); -typedef SignalBackupEntitlementFfiResult MaybeUninitOfBackupEntitlementFfiResult; -static_assert_64bit(sizeof(MaybeUninitOfBackupEntitlementFfiResult) == 16); -static_assert_64bit(alignof(MaybeUninitOfBackupEntitlementFfiResult) == 8); -typedef struct { - bool present; - MaybeUninitOfBackupEntitlementFfiResult value; -} SignalOptionalOfBackupEntitlementFfiResult; -static_assert_64bit(offsetof(SignalOptionalOfBackupEntitlementFfiResult, present) == 0); -static_assert_64bit(offsetof(SignalOptionalOfBackupEntitlementFfiResult, value) == 8); -static_assert_64bit(sizeof(SignalOptionalOfBackupEntitlementFfiResult) == 24); -static_assert_64bit(alignof(SignalOptionalOfBackupEntitlementFfiResult) == 8); -typedef struct { - const int8_t* badge_id; - uint64_t expiration; - bool visible; -} SignalBadgeEntitlementFfiResult; -static_assert_64bit(offsetof(SignalBadgeEntitlementFfiResult, badge_id) == 0); -static_assert_64bit(offsetof(SignalBadgeEntitlementFfiResult, expiration) == 8); -static_assert_64bit(offsetof(SignalBadgeEntitlementFfiResult, visible) == 16); -static_assert_64bit(sizeof(SignalBadgeEntitlementFfiResult) == 24); -static_assert_64bit(alignof(SignalBadgeEntitlementFfiResult) == 8); -typedef SignalBadgeEntitlementFfiResult* SignalType_MutPointer_SignalBadgeEntitlementFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBadgeEntitlementFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBadgeEntitlementFfiResult) == 8); -typedef struct { - SignalBadgeEntitlementFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult) == 8); -typedef struct { - SignalOwnedBufferOfMaxAlignedBadgeEntitlementFfiResult badges; - SignalOptionalOfBackupEntitlementFfiResult backup; -} SignalAccountEntitlementsFfiResult; -static_assert_64bit(offsetof(SignalAccountEntitlementsFfiResult, badges) == 0); -static_assert_64bit(offsetof(SignalAccountEntitlementsFfiResult, backup) == 24); -static_assert_64bit(sizeof(SignalAccountEntitlementsFfiResult) == 48); -static_assert_64bit(alignof(SignalAccountEntitlementsFfiResult) == 8); -typedef const SignalAccountEntitlementsFfiResult* SignalType_ConstPointer_SignalAccountEntitlementsFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalAccountEntitlementsFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalAccountEntitlementsFfiResult) == 8); typedef SignalPairOfCStringPtrCStringPtr* SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr; static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr) == 8); @@ -1296,38 +1156,6 @@ static_assert_64bit(alignof(SignalListMediaResponseFfiResult) == 8); typedef const SignalListMediaResponseFfiResult* SignalType_ConstPointer_SignalListMediaResponseFfiResult; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalListMediaResponseFfiResult) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalListMediaResponseFfiResult) == 8); -typedef struct { - SignalOwnedBuffer challenge; - int32_t timeout_seconds; - SignalOwnedBufferOfMaxAlignedOwnedBuffer allowed_credential_ids; -} SignalBridgeWebAuthnAuthenticationParametersFfiResult; -static_assert_64bit(offsetof(SignalBridgeWebAuthnAuthenticationParametersFfiResult, challenge) == 0); -static_assert_64bit(offsetof(SignalBridgeWebAuthnAuthenticationParametersFfiResult, timeout_seconds) == 16); -static_assert_64bit(offsetof(SignalBridgeWebAuthnAuthenticationParametersFfiResult, allowed_credential_ids) == 24); -static_assert_64bit(sizeof(SignalBridgeWebAuthnAuthenticationParametersFfiResult) == 48); -static_assert_64bit(alignof(SignalBridgeWebAuthnAuthenticationParametersFfiResult) == 8); -typedef SignalBridgeWebAuthnAuthenticationParametersFfiResult MaybeUninitOfBridgeWebAuthnAuthenticationParametersFfiResult; -static_assert_64bit(sizeof(MaybeUninitOfBridgeWebAuthnAuthenticationParametersFfiResult) == 48); -static_assert_64bit(alignof(MaybeUninitOfBridgeWebAuthnAuthenticationParametersFfiResult) == 8); -typedef struct { - bool present; - MaybeUninitOfBridgeWebAuthnAuthenticationParametersFfiResult value; -} SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult; -static_assert_64bit(offsetof(SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult, present) == 0); -static_assert_64bit(offsetof(SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult, value) == 8); -static_assert_64bit(sizeof(SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult) == 56); -static_assert_64bit(alignof(SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult) == 8); -typedef struct { - bool has_totp; - SignalOptionalOfBridgeWebAuthnAuthenticationParametersFfiResult webauthn_params; -} SignalStartMfaVerificationResponseFfiResult; -static_assert_64bit(offsetof(SignalStartMfaVerificationResponseFfiResult, has_totp) == 0); -static_assert_64bit(offsetof(SignalStartMfaVerificationResponseFfiResult, webauthn_params) == 8); -static_assert_64bit(sizeof(SignalStartMfaVerificationResponseFfiResult) == 64); -static_assert_64bit(alignof(SignalStartMfaVerificationResponseFfiResult) == 8); -typedef const SignalStartMfaVerificationResponseFfiResult* SignalType_ConstPointer_SignalStartMfaVerificationResponseFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalStartMfaVerificationResponseFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalStartMfaVerificationResponseFfiResult) == 8); typedef struct SignalRegistrationAccountAttributes SignalRegistrationAccountAttributes; typedef const SignalRegistrationAccountAttributes* SignalType_ConstPointer_SignalRegistrationAccountAttributes; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegistrationAccountAttributes) == 8); @@ -1633,6 +1461,10 @@ typedef struct SignalFingerprint SignalFingerprint; typedef const SignalFingerprint* SignalType_ConstPointer_SignalFingerprint; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFingerprint) == 8); static_assert_64bit(alignof(SignalType_ConstPointer_SignalFingerprint) == 8); +typedef struct SignalKyberPublicKey SignalKyberPublicKey; +typedef const SignalKyberPublicKey* SignalType_ConstPointer_SignalKyberPublicKey; +static_assert_64bit(sizeof(SignalType_ConstPointer_SignalKyberPublicKey) == 8); +static_assert_64bit(alignof(SignalType_ConstPointer_SignalKyberPublicKey) == 8); typedef struct SignalKyberSecretKey SignalKyberSecretKey; typedef const SignalKyberSecretKey* SignalType_ConstPointer_SignalKyberSecretKey; static_assert_64bit(sizeof(SignalType_ConstPointer_SignalKyberSecretKey) == 8); @@ -1751,6 +1583,9 @@ static_assert_64bit(alignof(SignalType_MutPointer_FixedArray97_uint8_t) == 8); typedef SignalAes256GcmSiv* SignalType_MutPointer_SignalAes256GcmSiv; static_assert_64bit(sizeof(SignalType_MutPointer_SignalAes256GcmSiv) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalAes256GcmSiv) == 8); +typedef int32_t* SignalType_MutPointer_int32_t; +static_assert_64bit(sizeof(SignalType_MutPointer_int32_t) == 8); +static_assert_64bit(alignof(SignalType_MutPointer_int32_t) == 8); typedef SignalPinHash* SignalType_MutPointer_SignalPinHash; static_assert_64bit(sizeof(SignalType_MutPointer_SignalPinHash) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalPinHash) == 8); @@ -1877,18 +1712,6 @@ static_assert_64bit(alignof(SignalMutPointerValidatingMac) == 8); typedef SignalMutPointerValidatingMac* SignalType_MutPointer_SignalMutPointerValidatingMac; static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerValidatingMac) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerValidatingMac) == 8); -typedef SignalBackupJsonExporter* SignalType_MutPointer_SignalBackupJsonExporter; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBackupJsonExporter) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBackupJsonExporter) == 8); -typedef struct { - SignalBackupJsonExporter* raw; -} SignalMutPointerBackupJsonExporter; -static_assert_64bit(offsetof(SignalMutPointerBackupJsonExporter, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerBackupJsonExporter) == 8); -static_assert_64bit(alignof(SignalMutPointerBackupJsonExporter) == 8); -typedef SignalMutPointerBackupJsonExporter* SignalType_MutPointer_SignalMutPointerBackupJsonExporter; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerBackupJsonExporter) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerBackupJsonExporter) == 8); typedef SignalMessageBackupKey* SignalType_MutPointer_SignalMessageBackupKey; static_assert_64bit(sizeof(SignalType_MutPointer_SignalMessageBackupKey) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalMessageBackupKey) == 8); @@ -2356,9 +2179,9 @@ static_assert_64bit(alignof(SignalOwnedBufferOfFfiRegisterResponseBadge) == 8); typedef SignalOwnedBufferOfFfiRegisterResponseBadge* SignalType_MutPointer_SignalOwnedBufferOfFfiRegisterResponseBadge; static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBufferOfFfiRegisterResponseBadge) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBufferOfFfiRegisterResponseBadge) == 8); -typedef SignalOwnedBufferOfMaxAlignedPairOfCStringPtrCStringPtr* SignalType_MutPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrCStringPtr; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrCStringPtr) == 8); +typedef SignalOwnedBuffer* SignalType_MutPointer_SignalOwnedBuffer; +static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBuffer) == 8); +static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBuffer) == 8); typedef struct { const int8_t* first; bool second; @@ -2414,22 +2237,6 @@ static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfPairOfCStringPtrOw typedef SignalUuid* SignalType_MutPointer_SignalUuid; static_assert_64bit(sizeof(SignalType_MutPointer_SignalUuid) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalUuid) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray153_uint8_t_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_FixedArray153_uint8_t, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray153_uint8_t_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray153_uint8_t_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray153_uint8_t_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisec_uchar153; -static_assert_64bit(offsetof(SignalCPromisec_uchar153, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisec_uchar153, context) == 8); -static_assert_64bit(offsetof(SignalCPromisec_uchar153, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisec_uchar153) == 24); -static_assert_64bit(alignof(SignalCPromisec_uchar153) == 8); -typedef SignalCPromisec_uchar153* SignalType_MutPointer_SignalCPromisec_uchar153; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisec_uchar153) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisec_uchar153) == 8); typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray32_uint8_t_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_FixedArray32_uint8_t, SignalType_ConstPointer_void); static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray32_uint8_t_ConstPointer_void) == 8); static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_FixedArray32_uint8_t_ConstPointer_void) == 8); @@ -2750,22 +2557,6 @@ static_assert_64bit(alignof(SignalCPromiseOwnedBuffer) == 8); typedef SignalCPromiseOwnedBuffer* SignalType_MutPointer_SignalCPromiseOwnedBuffer; static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBuffer) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBuffer) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedOwnedBuffer_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer; -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer) == 24); -static_assert_64bit(alignof(SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer) == 8); -typedef SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer* SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer) == 8); typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrAuthCheckResultFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrAuthCheckResultFfiResult, SignalType_ConstPointer_void); static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrAuthCheckResultFfiResult_ConstPointer_void) == 8); static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedPairOfCStringPtrAuthCheckResultFfiResult_ConstPointer_void) == 8); @@ -2798,22 +2589,6 @@ static_assert_64bit(alignof(SignalCPromiseOwnedBufferOfMaxAlignedBridgeConfirmed typedef SignalCPromiseOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult* SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult; static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedBridgeConfirmedMfaKeyFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult; -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); -typedef SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult* SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult) == 8); typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, SignalType_ConstPointer_void); static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_ConstPointer_void) == 8); static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_ConstPointer_void) == 8); @@ -2958,22 +2733,6 @@ static_assert_64bit(alignof(SignalCPromiseBridgePreKeyCountsFfiResult) == 8); typedef SignalCPromiseBridgePreKeyCountsFfiResult* SignalType_MutPointer_SignalCPromiseBridgePreKeyCountsFfiResult; static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseBridgePreKeyCountsFfiResult) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseBridgePreKeyCountsFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalBridgeWebAuthnCreateParametersFfiResult_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseBridgeWebAuthnCreateParametersFfiResult; -static_assert_64bit(offsetof(SignalCPromiseBridgeWebAuthnCreateParametersFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseBridgeWebAuthnCreateParametersFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseBridgeWebAuthnCreateParametersFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseBridgeWebAuthnCreateParametersFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseBridgeWebAuthnCreateParametersFfiResult) == 8); -typedef SignalCPromiseBridgeWebAuthnCreateParametersFfiResult* SignalType_MutPointer_SignalCPromiseBridgeWebAuthnCreateParametersFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseBridgeWebAuthnCreateParametersFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseBridgeWebAuthnCreateParametersFfiResult) == 8); typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult, SignalType_ConstPointer_void); static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_ConstPointer_void) == 8); static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_ConstPointer_void) == 8); @@ -3006,22 +2765,6 @@ static_assert_64bit(alignof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult) = typedef SignalCPromiseDeleteBackupMediaNextChunkFfiResult* SignalType_MutPointer_SignalCPromiseDeleteBackupMediaNextChunkFfiResult; static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseDeleteBackupMediaNextChunkFfiResult) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseDeleteBackupMediaNextChunkFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalAccountEntitlementsFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalAccountEntitlementsFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalAccountEntitlementsFfiResult_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalAccountEntitlementsFfiResult_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalAccountEntitlementsFfiResult_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseAccountEntitlementsFfiResult; -static_assert_64bit(offsetof(SignalCPromiseAccountEntitlementsFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseAccountEntitlementsFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseAccountEntitlementsFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseAccountEntitlementsFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseAccountEntitlementsFfiResult) == 8); -typedef SignalCPromiseAccountEntitlementsFfiResult* SignalType_MutPointer_SignalCPromiseAccountEntitlementsFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseAccountEntitlementsFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseAccountEntitlementsFfiResult) == 8); typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCurrencyConversionsInternalFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalCurrencyConversionsInternalFfiResult, SignalType_ConstPointer_void); static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCurrencyConversionsInternalFfiResult_ConstPointer_void) == 8); static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalCurrencyConversionsInternalFfiResult_ConstPointer_void) == 8); @@ -3070,22 +2813,6 @@ static_assert_64bit(alignof(SignalCPromiseListMediaResponseFfiResult) == 8); typedef SignalCPromiseListMediaResponseFfiResult* SignalType_MutPointer_SignalCPromiseListMediaResponseFfiResult; static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseListMediaResponseFfiResult) == 8); static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseListMediaResponseFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalStartMfaVerificationResponseFfiResult_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalStartMfaVerificationResponseFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalStartMfaVerificationResponseFfiResult_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalStartMfaVerificationResponseFfiResult_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_MutPointer_SignalFfiError_ConstPointer_SignalStartMfaVerificationResponseFfiResult_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseStartMfaVerificationResponseFfiResult; -static_assert_64bit(offsetof(SignalCPromiseStartMfaVerificationResponseFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseStartMfaVerificationResponseFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseStartMfaVerificationResponseFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseStartMfaVerificationResponseFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseStartMfaVerificationResponseFfiResult) == 8); -typedef SignalCPromiseStartMfaVerificationResponseFfiResult* SignalType_MutPointer_SignalCPromiseStartMfaVerificationResponseFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseStartMfaVerificationResponseFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseStartMfaVerificationResponseFfiResult) == 8); typedef uint16_t* SignalType_MutPointer_uint16_t; static_assert_64bit(sizeof(SignalType_MutPointer_uint16_t) == 8); static_assert_64bit(alignof(SignalType_MutPointer_uint16_t) == 8); @@ -3168,14 +2895,6 @@ static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerPublicKey, base) = static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerPublicKey, length) == 8); static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerPublicKey) == 16); static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerPublicKey) == 8); -typedef struct { - const SignalConstPointerKyberPublicKey* base; - size_t length; -} SignalBorrowedSliceOfConstPointerKyberPublicKey; -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerKyberPublicKey, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerKyberPublicKey, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerKyberPublicKey) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerKyberPublicKey) == 8); typedef struct { const SignalConstPointerCiphertextMessage* base; size_t length; @@ -3254,12 +2973,6 @@ typedef struct { static_assert_64bit(offsetof(SignalConstPointerFfiSyncInputStreamStruct, raw) == 0); static_assert_64bit(sizeof(SignalConstPointerFfiSyncInputStreamStruct) == 8); static_assert_64bit(alignof(SignalConstPointerFfiSyncInputStreamStruct) == 8); -typedef struct { - const SignalBackupJsonExporter* raw; -} SignalConstPointerBackupJsonExporter; -static_assert_64bit(offsetof(SignalConstPointerBackupJsonExporter, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerBackupJsonExporter) == 8); -static_assert_64bit(alignof(SignalConstPointerBackupJsonExporter) == 8); typedef struct { const SignalMessageBackupKey* raw; } SignalConstPointerMessageBackupKey; @@ -3464,6 +3177,12 @@ typedef struct { static_assert_64bit(offsetof(SignalConstPointerFingerprint, raw) == 0); static_assert_64bit(sizeof(SignalConstPointerFingerprint) == 8); static_assert_64bit(alignof(SignalConstPointerFingerprint) == 8); +typedef struct { + const SignalKyberPublicKey* raw; +} SignalConstPointerKyberPublicKey; +static_assert_64bit(offsetof(SignalConstPointerKyberPublicKey, raw) == 0); +static_assert_64bit(sizeof(SignalConstPointerKyberPublicKey) == 8); +static_assert_64bit(alignof(SignalConstPointerKyberPublicKey) == 8); typedef struct { const SignalKyberSecretKey* raw; } SignalConstPointerKyberSecretKey; @@ -3737,11 +3456,8 @@ typedef enum { SignalErrorCodeReceiptCredentialErrorReceiptAlreadyIssued = 233, SignalErrorCodeTooManyTotpKeys = 234, SignalErrorCodeTooManyMfaKeys = 235, - SignalErrorCodeMfaNotVerified = 236, + SignalErrorCodeOneTimePasswordNotVerified = 236, SignalErrorCodeMfaKeyNotFound = 237, - SignalErrorCodeWebAuthnRegistrationUnsuccessful = 238, - SignalErrorCodeProfileNotFound = 239, - SignalErrorCodeReceiptAlreadyRedeemed = 240, } SignalErrorCode; static_assert_64bit(sizeof(SignalErrorCode) == 4); static_assert_64bit(alignof(SignalErrorCode) == 4); @@ -3765,32 +3481,6 @@ enum SignalSvr2CredentialsResult { typedef uint8_t SignalSvr2CredentialsResult; static_assert_64bit(sizeof(SignalSvr2CredentialsResult) == 1); static_assert_64bit(alignof(SignalSvr2CredentialsResult) == 1); -typedef enum { - SignalBadgeVisibilityFfiArgDoNotSet, - SignalBadgeVisibilityFfiArgSetVisible, - SignalBadgeVisibilityFfiArgSetPrimary, -} SignalBadgeVisibilityFfiArg; -static_assert_64bit(sizeof(SignalBadgeVisibilityFfiArg) == 4); -static_assert_64bit(alignof(SignalBadgeVisibilityFfiArg) == 4); -typedef enum { - SignalBridgeMfaVerificationCredentialFfiArgTotp, - SignalBridgeMfaVerificationCredentialFfiArgWebAuthn, -} SignalBridgeMfaVerificationCredentialFfiArg_Tag; -typedef struct { - int32_t password; -} SignalBridgeMfaVerificationCredentialFfiArgSignalTotp_Body; -typedef struct { - const int8_t* json; -} SignalBridgeMfaVerificationCredentialFfiArgSignalWebAuthn_Body; -typedef struct { - SignalBridgeMfaVerificationCredentialFfiArg_Tag tag; - union { - SignalBridgeMfaVerificationCredentialFfiArgSignalTotp_Body totp; - SignalBridgeMfaVerificationCredentialFfiArgSignalWebAuthn_Body web_authn; - }; -} SignalBridgeMfaVerificationCredentialFfiArg; -static_assert_64bit(sizeof(SignalBridgeMfaVerificationCredentialFfiArg) == 16); -static_assert_64bit(alignof(SignalBridgeMfaVerificationCredentialFfiArg) == 8); typedef struct { bool user_satisfied; SignalBorrowedSliceOfCStringPtr call_quality_issues; @@ -3839,12 +3529,6 @@ static_assert_64bit(offsetof(SignalCallQualitySurveyInternalFfiArg, call_telemet static_assert_64bit(offsetof(SignalCallQualitySurveyInternalFfiArg, call_id_hash) == 192); static_assert_64bit(sizeof(SignalCallQualitySurveyInternalFfiArg) == 216); static_assert_64bit(alignof(SignalCallQualitySurveyInternalFfiArg) == 8); -typedef enum { - SignalLoginReceiptLevelFfiArgNormal, - SignalLoginReceiptLevelFfiArgSandbox, -} SignalLoginReceiptLevelFfiArg; -static_assert_64bit(sizeof(SignalLoginReceiptLevelFfiArg) == 4); -static_assert_64bit(alignof(SignalLoginReceiptLevelFfiArg) == 4); typedef enum { SignalPaymentProviderFfiArgGooglePlayBilling, SignalPaymentProviderFfiArgAppleAppStore, @@ -4054,13 +3738,6 @@ SignalFfiError* signal_authenticated_chat_connection_connect( bool receive_stories, SignalBorrowedBytestringArray languages ); -SignalFfiError* signal_authenticated_chat_connection_create_donation_permits( - SignalCPromiseOwnedBufferOfMaxAlignedOwnedBuffer* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalBorrowedBuffer request_context, - SignalConstPointerServerPublicParams server_params -); SignalFfiError* signal_authenticated_chat_connection_delete_account( SignalCPromisebool* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4084,33 +3761,11 @@ SignalFfiError* signal_authenticated_chat_connection_disconnect( SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat ); -SignalFfiError* signal_authenticated_chat_connection_finish_mfa_verification( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalBridgeMfaVerificationCredentialFfiArg credential -); -SignalFfiError* signal_authenticated_chat_connection_finish_web_authn_registration( - SignalCPromisei32* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalBorrowedBuffer attestation_object, - const int8_t* collected_client_data_json, - const int8_t* name, - uint64_t created_at, - const SignalType_FixedArray32_uint8_t* svr_key, - int64_t rng -); SignalFfiError* signal_authenticated_chat_connection_generate_totp_key( SignalCPromiseBridgePendingTotpKeyFfiResult* promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat ); -SignalFfiError* signal_authenticated_chat_connection_get_capabilities( - SignalCPromiseOwnedBufferOfMaxAlignedDeviceCapabilityInternalFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); SignalFfiError* signal_authenticated_chat_connection_get_currency_conversions( SignalCPromiseCurrencyConversionsInternalFfiResult* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4121,11 +3776,6 @@ SignalFfiError* signal_authenticated_chat_connection_get_devices( SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat ); -SignalFfiError* signal_authenticated_chat_connection_get_entitlements( - SignalCPromiseAccountEntitlementsFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); SignalFfiError* signal_authenticated_chat_connection_get_pre_key_count( SignalCPromiseBridgePreKeyCountsFfiResult* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4168,13 +3818,6 @@ SignalFfiError* signal_authenticated_chat_connection_redeem_backup_receipt( SignalConstPointerAuthenticatedChatConnection chat, const SignalType_FixedArray329_uint8_t* presentation ); -SignalFfiError* signal_authenticated_chat_connection_redeem_donation_receipt( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const SignalType_FixedArray329_uint8_t* presentation, - SignalBadgeVisibilityFfiArg visibility -); SignalFfiError* signal_authenticated_chat_connection_remove_device( SignalCPromisebool* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4187,14 +3830,6 @@ SignalFfiError* signal_authenticated_chat_connection_remove_mfa_key( SignalConstPointerAuthenticatedChatConnection chat, int32_t key_id ); -SignalFfiError* signal_authenticated_chat_connection_report_message( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const SignalType_FixedArray17_uint8_t* source, - SignalUuid message_guid, - SignalBorrowedBuffer report_spam_token -); SignalFfiError* signal_authenticated_chat_connection_reserve_username_hash( SignalCPromisec_uchar32* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4249,15 +3884,6 @@ SignalFfiError* signal_authenticated_chat_connection_set_discoverable_by_phone_n SignalConstPointerAuthenticatedChatConnection chat, bool discoverable ); -SignalFfiError* signal_authenticated_chat_connection_set_last_resort_kem_pre_key( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t identity_type, - uint32_t id, - SignalConstPointerKyberPublicKey key, - SignalBorrowedBuffer signature -); SignalFfiError* signal_authenticated_chat_connection_set_mfa_key_metadata( SignalCPromisebool* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4268,23 +3894,6 @@ SignalFfiError* signal_authenticated_chat_connection_set_mfa_key_metadata( const SignalType_FixedArray32_uint8_t* svr_key, int64_t rng ); -SignalFfiError* signal_authenticated_chat_connection_set_one_time_ec_pre_keys( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t identity_type, - SignalBorrowedSliceOfu32 pre_key_ids, - SignalBorrowedSliceOfConstPointerPublicKey pre_key_data -); -SignalFfiError* signal_authenticated_chat_connection_set_one_time_kem_pre_keys( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t identity_type, - SignalBorrowedSliceOfu32 pre_key_ids, - SignalBorrowedSliceOfConstPointerKyberPublicKey pre_key_data, - SignalBorrowedSliceOfBuffers pre_key_signatures -); SignalFfiError* signal_authenticated_chat_connection_set_push_token_apns( SignalCPromisebool* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4303,15 +3912,6 @@ SignalFfiError* signal_authenticated_chat_connection_set_registration_recovery_p SignalConstPointerAuthenticatedChatConnection chat, const SignalType_FixedArray32_uint8_t* svr_key ); -SignalFfiError* signal_authenticated_chat_connection_set_signed_ec_pre_key( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t identity_type, - uint32_t id, - SignalConstPointerPublicKey key, - SignalBorrowedBuffer signature -); SignalFfiError* signal_authenticated_chat_connection_set_username_link( SignalCPromiseUuid* promise, SignalConstPointerTokioAsyncContext async_runtime, @@ -4319,16 +3919,6 @@ SignalFfiError* signal_authenticated_chat_connection_set_username_link( SignalBorrowedBuffer username_ciphertext, bool keep_link_handle ); -SignalFfiError* signal_authenticated_chat_connection_start_mfa_verification( - SignalCPromiseStartMfaVerificationResponseFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_start_web_authn_registration( - SignalCPromiseBridgeWebAuthnCreateParametersFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); SignalFfiError* signal_avatar_upload_credential_check_valid_contents( SignalBorrowedBuffer credential_bytes ); @@ -4462,26 +4052,6 @@ SignalFfiError* signal_backup_auth_credential_request_issue_deterministic( SignalFfiError* signal_backup_auth_credential_response_check_valid_contents( SignalBorrowedBuffer response_bytes ); -SignalFfiError* signal_backup_json_exporter_destroy( - SignalMutPointerBackupJsonExporter p -); -SignalFfiError* signal_backup_json_exporter_export_frames( - SignalOwnedBufferOfMaxAlignedPairOfCStringPtrCStringPtr* out, - SignalMutPointerBackupJsonExporter exporter, - SignalBorrowedBuffer frames -); -SignalFfiError* signal_backup_json_exporter_finish( - SignalMutPointerBackupJsonExporter exporter -); -SignalFfiError* signal_backup_json_exporter_get_initial_chunk( - SignalCStringPtr* out, - SignalConstPointerBackupJsonExporter exporter -); -SignalFfiError* signal_backup_json_exporter_new( - SignalMutPointerBackupJsonExporter* out, - SignalBorrowedBuffer backup_info, - bool should_validate -); SignalFfiError* signal_backup_key_derive_backup_id( SignalType_FixedArray16_uint8_t* out, const SignalType_FixedArray32_uint8_t* backup_key, @@ -4656,10 +4226,6 @@ SignalFfiError* signal_chat_connection_info_ip_version( uint8_t* out, SignalConstPointerChatConnectionInfo connection_info ); -SignalFfiError* signal_chat_connection_info_is_direct( - bool* out, - SignalConstPointerChatConnectionInfo connection_info -); SignalFfiError* signal_chat_connection_info_local_port( uint16_t* out, SignalConstPointerChatConnectionInfo connection_info @@ -5022,7 +4588,6 @@ SignalFfiError* signal_expiring_profile_key_credential_get_expiration_time( SignalFfiError* signal_expiring_profile_key_credential_response_check_valid_contents( SignalBorrowedBuffer buffer ); -void signal_ffi_version_0_106_1(void); SignalFfiError* signal_fingerprint_clone( SignalMutPointerFingerprint* new_obj, SignalConstPointerFingerprint obj @@ -6964,8 +6529,7 @@ SignalFfiError* signal_unauthenticated_chat_connection_create_login_receipt_cred const int8_t* purchase_identifier, SignalBorrowedBuffer receipt_credential_request_context, SignalConstPointerServerPublicParams server_params, - uint64_t purchase_time, - SignalLoginReceiptLevelFfiArg expected_level + uint64_t purchase_time ); SignalFfiError* signal_unauthenticated_chat_connection_destroy( SignalMutPointerUnauthenticatedChatConnection p @@ -6998,21 +6562,6 @@ SignalFfiError* signal_unauthenticated_chat_connection_get_pre_keys_unrestricted const SignalType_FixedArray17_uint8_t* target, int32_t device ); -SignalFfiError* signal_unauthenticated_chat_connection_get_profile_key_credential( - SignalCPromisec_uchar153* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray473_uint8_t* profile_key_request_context, - SignalConstPointerServerPublicParams server_params -); -SignalFfiError* signal_unauthenticated_chat_connection_get_subscription_receipt_credential( - SignalCPromiseOwnedBuffer* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray32_uint8_t* subscriber_id, - SignalBorrowedBuffer receipt_credential_request_context, - SignalConstPointerServerPublicParams server_params -); SignalFfiError* signal_unauthenticated_chat_connection_info( SignalMutPointerChatConnectionInfo* out, SignalConstPointerUnauthenticatedChatConnection chat diff --git a/pkg/libsignalgo/message.go b/pkg/libsignalgo/message.go index 14b26c4..91aa7f0 100644 --- a/pkg/libsignalgo/message.go +++ b/pkg/libsignalgo/message.go @@ -29,7 +29,7 @@ import ( func Encrypt(ctx context.Context, plaintext []byte, forAddress, localAddress *Address, sessionStore SessionStore, identityKeyStore IdentityKeyStore) (*CiphertextMessage, error) { var ciphertextMessage C.SignalMutPointerCiphertextMessage - var now C.uint64_t = C.uint64_t(time.Now().UnixMilli()) + var now C.uint64_t = C.uint64_t(time.Now().Unix()) callbackCtx := NewCallbackContext(ctx) defer callbackCtx.Unref() signalFfiError := C.signal_encrypt_message( diff --git a/pkg/libsignalgo/prekeybundle.go b/pkg/libsignalgo/prekeybundle.go index 7dae47e..d8e2516 100644 --- a/pkg/libsignalgo/prekeybundle.go +++ b/pkg/libsignalgo/prekeybundle.go @@ -30,7 +30,7 @@ import ( func ProcessPreKeyBundle(ctx context.Context, bundle *PreKeyBundle, forAddress, localAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore) error { callbackCtx := NewCallbackContext(ctx) defer callbackCtx.Unref() - var now C.uint64_t = C.uint64_t(time.Now().UnixMilli()) + var now C.uint64_t = C.uint64_t(time.Now().Unix()) signalFfiError := C.signal_process_prekey_bundle( bundle.constPtr(), forAddress.constPtr(), @@ -142,5 +142,5 @@ func (pkb *PreKeyBundle) GetIdentityKey() (*IdentityKey, error) { if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return NewIdentityKeyFromPublicKey(wrapPublicKey(pk.raw)), nil + return NewIdentityKeyFromPublicKey(wrapPublicKey(pk.raw)) } diff --git a/pkg/libsignalgo/prekeystore.go b/pkg/libsignalgo/prekeystore.go index 00ee50f..8c3c36f 100644 --- a/pkg/libsignalgo/prekeystore.go +++ b/pkg/libsignalgo/prekeystore.go @@ -52,8 +52,12 @@ func signal_load_pre_key_callback(storeCtx unsafe.Pointer, keyp *C.SignalMutPoin //export signal_store_pre_key_callback func signal_store_pre_key_callback(storeCtx unsafe.Pointer, id C.uint32_t, preKeyRecord C.SignalMutPointerPreKeyRecord) C.int { return wrapStoreCallback(storeCtx, func(store PreKeyStore, ctx context.Context) error { - record := wrapPreKeyRecord(preKeyRecord.raw) - return store.StorePreKey(ctx, uint32(id), record) + record := PreKeyRecord{ptr: preKeyRecord.raw} + cloned, err := record.Clone() + if err != nil { + return err + } + return store.StorePreKey(ctx, uint32(id), cloned) }) } diff --git a/pkg/libsignalgo/profilekey.go b/pkg/libsignalgo/profilekey.go index a39eaa5..0c21aff 100644 --- a/pkg/libsignalgo/profilekey.go +++ b/pkg/libsignalgo/profilekey.go @@ -46,24 +46,24 @@ func (pk *ProfileKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(pk)) } -func (pk *ProfileKey) cConstFixedArray() C.SignalType_ConstPointer_FixedArray32_uint8_t { - return (C.SignalType_ConstPointer_FixedArray32_uint8_t)(unsafe.Pointer(pk)) +func (pk *ProfileKey) cConstFixedArray() cFixedArray32Compat { + return cFixedArray32Compat(pk.cFixedArray()) } func (pkv *ProfileKeyVersion) cFixedArray() *C.SignalType_FixedArray64_uint8_t { return (*C.SignalType_FixedArray64_uint8_t)(unsafe.Pointer(pkv)) } -func (pkv *ProfileKeyVersion) cConstFixedArray() C.SignalType_ConstPointer_FixedArray64_uint8_t { - return (C.SignalType_ConstPointer_FixedArray64_uint8_t)(unsafe.Pointer(pkv)) +func (pkv *ProfileKeyVersion) cConstFixedArray() cFixedArray64Compat { + return cFixedArray64Compat(pkv.cFixedArray()) } func (ak *AccessKey) cFixedArray() *C.SignalType_FixedArray16_uint8_t { return (*C.SignalType_FixedArray16_uint8_t)(unsafe.Pointer(ak)) } -func (ak *AccessKey) cConstFixedArray() C.SignalType_ConstPointer_FixedArray16_uint8_t { - return (C.SignalType_ConstPointer_FixedArray16_uint8_t)(unsafe.Pointer(ak)) +func (ak *AccessKey) cConstFixedArray() cFixedArray16Compat { + return cFixedArray16Compat(ak.cFixedArray()) } func DeserializeProfileKey(bytes []byte) (*ProfileKey, error) { @@ -177,8 +177,8 @@ func (p *ProfileKeyCredentialRequestContext) cFixedArray() *C.SignalType_FixedAr return (*C.SignalType_FixedArray473_uint8_t)(unsafe.Pointer(p)) } -func (p *ProfileKeyCredentialRequestContext) cConstFixedArray() C.SignalType_ConstPointer_FixedArray473_uint8_t { - return (C.SignalType_ConstPointer_FixedArray473_uint8_t)(unsafe.Pointer(p)) +func (p *ProfileKeyCredentialRequestContext) cConstFixedArray() cFixedArray473Compat { + return cFixedArray473Compat(p.cFixedArray()) } func CreateProfileKeyCredentialRequestContext(serverPublicParams *ServerPublicParams, u uuid.UUID, profileKey ProfileKey) (*ProfileKeyCredentialRequestContext, error) { diff --git a/pkg/libsignalgo/sendercertificate.go b/pkg/libsignalgo/sendercertificate.go index d6a0173..cf39fd6 100644 --- a/pkg/libsignalgo/sendercertificate.go +++ b/pkg/libsignalgo/sendercertificate.go @@ -22,52 +22,13 @@ package libsignalgo */ import "C" import ( - "encoding/base64" "runtime" - "sync" "time" "unsafe" "github.com/google/uuid" - "go.mau.fi/util/exerrors" ) -var ProdTrustRoots = NewTrustRoots([]string{ - "BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF", - "BUkY0I+9+oPgDCn4+Ac6Iu813yvqkDr/ga8DzLxFxuk6", -}) - -type TrustRoots struct { - encoded []string - keys []*PublicKey - cKeys []C.SignalConstPointerPublicKey - once sync.Once -} - -func NewTrustRoots(roots []string) *TrustRoots { - return &TrustRoots{ - encoded: roots, - } -} - -func (tr *TrustRoots) decode() { - tr.keys = make([]*PublicKey, len(tr.encoded)) - tr.cKeys = make([]C.SignalConstPointerPublicKey, len(tr.encoded)) - for i, rootString := range tr.encoded { - rootBytes := exerrors.Must(base64.StdEncoding.DecodeString(rootString)) - tr.keys[i] = exerrors.Must(DeserializePublicKey(rootBytes)) - tr.cKeys[i] = tr.keys[i].constPtr() - } -} - -func (tr *TrustRoots) borrowedSlice() C.SignalBorrowedSliceOfConstPointerPublicKey { - tr.once.Do(tr.decode) - return C.SignalBorrowedSliceOfConstPointerPublicKey{ - base: unsafe.SliceData(tr.cKeys), - length: C.size_t(len(tr.cKeys)), - } -} - type SenderCertificate struct { nc noCopy ptr *C.SignalSenderCertificate @@ -230,16 +191,25 @@ func (sc *SenderCertificate) GetKey() (*PublicKey, error) { return wrapPublicKey(key.raw), nil } -func (sc *SenderCertificate) Validate(trustRoots *TrustRoots, serverTS uint64) (bool, error) { +func (sc *SenderCertificate) Validate(trustRoots []*PublicKey, ts time.Time) (bool, error) { var valid C.bool + constRoots := make([]C.SignalConstPointerPublicKey, len(trustRoots)) + for i, root := range trustRoots { + constRoots[i] = root.constPtr() + } signalFfiError := C.signal_sender_certificate_validate( &valid, sc.constPtr(), - trustRoots.borrowedSlice(), - C.uint64_t(serverTS), + // TODO this might not be correct + C.SignalBorrowedSliceOfConstPointerPublicKey{ + base: unsafe.SliceData(constRoots), + length: C.size_t(len(constRoots)), + }, + C.uint64_t(ts.UnixMilli()), ) runtime.KeepAlive(sc) runtime.KeepAlive(trustRoots) + runtime.KeepAlive(constRoots) if signalFfiError != nil { return false, wrapError(signalFfiError) } diff --git a/pkg/libsignalgo/senderkeystore.go b/pkg/libsignalgo/senderkeystore.go index fc51571..1649216 100644 --- a/pkg/libsignalgo/senderkeystore.go +++ b/pkg/libsignalgo/senderkeystore.go @@ -40,8 +40,7 @@ type SenderKeyStore interface { //export signal_load_sender_key_callback func signal_load_sender_key_callback(storeCtx unsafe.Pointer, recordp *C.SignalMutPointerSenderKeyRecord, address C.SignalMutPointerProtocolAddress, distributionID C.SignalUuid) C.int { return wrapStoreCallback(storeCtx, func(store SenderKeyStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - record, err := store.LoadSenderKey(ctx, addr, *(*uuid.UUID)(unsafe.Pointer(&distributionID))) + record, err := store.LoadSenderKey(ctx, &Address{ptr: address.raw}, *(*uuid.UUID)(unsafe.Pointer(&distributionID))) if err == nil && record != nil { record.CancelFinalizer() recordp.raw = record.ptr @@ -53,9 +52,13 @@ func signal_load_sender_key_callback(storeCtx unsafe.Pointer, recordp *C.SignalM //export signal_store_sender_key_callback func signal_store_sender_key_callback(storeCtx unsafe.Pointer, address C.SignalMutPointerProtocolAddress, distributionID C.SignalUuid, senderKeyRecord C.SignalMutPointerSenderKeyRecord) C.int { return wrapStoreCallback(storeCtx, func(store SenderKeyStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - record := wrapSenderKeyRecord(senderKeyRecord.raw) - return store.StoreSenderKey(ctx, addr, *(*uuid.UUID)(unsafe.Pointer(&distributionID)), record) + record := SenderKeyRecord{ptr: senderKeyRecord.raw} + cloned, err := record.Clone() + if err != nil { + return err + } + + return store.StoreSenderKey(ctx, &Address{ptr: address.raw}, *(*uuid.UUID)(unsafe.Pointer(&distributionID)), cloned) }) } diff --git a/pkg/libsignalgo/serviceid.go b/pkg/libsignalgo/serviceid.go index a320319..38631ee 100644 --- a/pkg/libsignalgo/serviceid.go +++ b/pkg/libsignalgo/serviceid.go @@ -188,6 +188,6 @@ func (s ServiceID) cFixedArray() *C.SignalType_FixedArray17_uint8_t { return s.FixedBytes().cFixedArray() } -func (s ServiceID) cConstFixedArray() C.SignalType_ConstPointer_FixedArray17_uint8_t { - return s.FixedBytes().cConstFixedArray() +func (s ServiceID) cConstFixedArray() cFixedArray17Compat { + return cFixedArray17Compat(s.cFixedArray()) } diff --git a/pkg/libsignalgo/session_test.go b/pkg/libsignalgo/session_test.go index 7c25da2..dd05718 100644 --- a/pkg/libsignalgo/session_test.go +++ b/pkg/libsignalgo/session_test.go @@ -61,7 +61,8 @@ func initializeSessions(t *testing.T, aliceStore, bobStore *InMemorySignalProtoc assert.NoError(t, err) bobPublicIdentityKey := bobIdentityKeyPair.GetPublicKey() - bobIdentityKey := libsignalgo.NewIdentityKeyFromPublicKey(bobPublicIdentityKey) + bobIdentityKey, err := libsignalgo.NewIdentityKeyFromPublicKey(bobPublicIdentityKey) + assert.NoError(t, err) var prekeyID uint32 = 4570 var signedPreKeyID uint32 = 3006 diff --git a/pkg/libsignalgo/sessionrecord.go b/pkg/libsignalgo/sessionrecord.go index 8b0d8b0..b4f2afb 100644 --- a/pkg/libsignalgo/sessionrecord.go +++ b/pkg/libsignalgo/sessionrecord.go @@ -105,7 +105,7 @@ func (sr *SessionRecord) HasCurrentState() (bool, error) { signalFfiError := C.signal_session_record_has_usable_sender_chain( &result, sr.constPtr(), - C.uint64_t(time.Now().UnixMilli()), + C.uint64_t(time.Now().Unix()), ) runtime.KeepAlive(sr) if signalFfiError != nil { diff --git a/pkg/libsignalgo/sessionstore.go b/pkg/libsignalgo/sessionstore.go index c33a899..99000e5 100644 --- a/pkg/libsignalgo/sessionstore.go +++ b/pkg/libsignalgo/sessionstore.go @@ -38,8 +38,7 @@ type SessionStore interface { //export signal_load_session_callback func signal_load_session_callback(storeCtx unsafe.Pointer, recordp *C.SignalMutPointerSessionRecord, address C.SignalMutPointerProtocolAddress) C.int { return wrapStoreCallback(storeCtx, func(store SessionStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - record, err := store.LoadSession(ctx, addr) + record, err := store.LoadSession(ctx, &Address{ptr: address.raw}) if err == nil && record != nil { record.CancelFinalizer() recordp.raw = record.ptr @@ -51,9 +50,12 @@ func signal_load_session_callback(storeCtx unsafe.Pointer, recordp *C.SignalMutP //export signal_store_session_callback func signal_store_session_callback(storeCtx unsafe.Pointer, address C.SignalMutPointerProtocolAddress, sessionRecord C.SignalMutPointerSessionRecord) C.int { return wrapStoreCallback(storeCtx, func(store SessionStore, ctx context.Context) error { - addr := wrapAddress(address.raw) - record := wrapSessionRecord(sessionRecord.raw) - return store.StoreSession(ctx, addr, record) + record := SessionRecord{ptr: sessionRecord.raw} + cloned, err := record.Clone() + if err != nil { + return err + } + return store.StoreSession(ctx, &Address{ptr: address.raw}, cloned) }) } diff --git a/pkg/libsignalgo/signalversion/version.go b/pkg/libsignalgo/signalversion/version.go index 367a3d5..d66cd3e 100644 --- a/pkg/libsignalgo/signalversion/version.go +++ b/pkg/libsignalgo/signalversion/version.go @@ -2,4 +2,4 @@ package signalversion -const Version = "v0.106.1" +const Version = "v0.102.2" diff --git a/pkg/libsignalgo/signedprekeystore.go b/pkg/libsignalgo/signedprekeystore.go index a66b9f4..b1306e2 100644 --- a/pkg/libsignalgo/signedprekeystore.go +++ b/pkg/libsignalgo/signedprekeystore.go @@ -50,8 +50,12 @@ func signal_load_signed_pre_key_callback(storeCtx unsafe.Pointer, keyp *C.Signal //export signal_store_signed_pre_key_callback func signal_store_signed_pre_key_callback(storeCtx unsafe.Pointer, id C.uint32_t, preKeyRecord C.SignalMutPointerSignedPreKeyRecord) C.int { return wrapStoreCallback(storeCtx, func(store SignedPreKeyStore, ctx context.Context) error { - record := wrapSignedPreKeyRecord(preKeyRecord.raw) - return store.StoreSignedPreKey(ctx, uint32(id), record) + record := SignedPreKeyRecord{ptr: preKeyRecord.raw} + cloned, err := record.Clone() + if err != nil { + return err + } + return store.StoreSignedPreKey(ctx, uint32(id), cloned) }) } diff --git a/pkg/libsignalgo/update-ffi-docker.sh b/pkg/libsignalgo/update-ffi-docker.sh index e15e7f6..73f8947 100755 --- a/pkg/libsignalgo/update-ffi-docker.sh +++ b/pkg/libsignalgo/update-ffi-docker.sh @@ -1,3 +1,9 @@ #!/bin/bash docker run --rm -itv $(pwd):/data rust:1-alpine /data/update-ffi-docker-inner.sh -./update-ffi-version.sh + +echo "// Generated by update-ffi.sh; DO NOT EDIT." > signalversion/version.go +echo >> signalversion/version.go +echo "package signalversion" >> signalversion/version.go +echo >> signalversion/version.go +cd libsignal +echo "const Version = \"$(git describe --tags --always)\"" >> ../signalversion/version.go diff --git a/pkg/libsignalgo/update-ffi-version.sh b/pkg/libsignalgo/update-ffi-version.sh deleted file mode 100755 index 23ae12c..0000000 --- a/pkg/libsignalgo/update-ffi-version.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -set -e - -pushd libsignal - -LIBSIGNAL_TAG=$(git describe --tags --always) -LIBSIGNAL_VERSION_FUNC=$(echo $LIBSIGNAL_TAG | tr -d 'v' | sed 's/\./_/g') - -popd - -cat > signalversion/version.go < version.go < signalversion/version.go +echo >> signalversion/version.go +echo "package signalversion" >> signalversion/version.go +echo >> signalversion/version.go + # Store the current working directory ORIGINAL_DIR="$(pwd)" # Navigate to libsignal directory cd "$LIBSIGNAL_DIRECTORY" +echo "const Version = \"$(git describe --tags --always)\"" >> ../signalversion/version.go + # Build libsignal cargo build -p libsignal-ffi --release @@ -28,6 +35,4 @@ cd "$ORIGINAL_DIR" cp "${LIBSIGNAL_DIRECTORY}/target/release/libsignal_ffi.a" . cp "${LIBSIGNAL_DIRECTORY}/swift/Sources/SignalFfi/signal_ffi.h" libsignal-ffi.h -./update-ffi-version.sh - echo "Files copied successfully." diff --git a/pkg/libsignalgo/username.go b/pkg/libsignalgo/username.go deleted file mode 100644 index a17d2f9..0000000 --- a/pkg/libsignalgo/username.go +++ /dev/null @@ -1,49 +0,0 @@ -// mautrix-signal - A Matrix-signal puppeting bridge. -// Copyright (C) 2026 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package libsignalgo - -/* -#include "./libsignal-ffi.h" -*/ -import "C" -import ( - "runtime" -) - -type UsernameHash = fixedArray32 - -func DecryptUsernameLink(entropy, encryptedUsername []byte) (string, error) { - var username C.SignalCStringPtr - signalFfiError := C.signal_username_link_decrypt_username(&username, BytesToBuffer(entropy), BytesToBuffer(encryptedUsername)) - runtime.KeepAlive(entropy) - runtime.KeepAlive(encryptedUsername) - if signalFfiError != nil { - return "", wrapError(signalFfiError) - } - return CopyCStringToString(username), nil -} - -func HashUsername(username string) (UsernameHash, error) { - cUsername, free := GoStringToCString(username) - defer free() - var result UsernameHash - signalFfiError := C.signal_username_hash(result.cFixedArray(), cUsername) - if signalFfiError != nil { - return UsernameHash{}, wrapError(signalFfiError) - } - return result, nil -} diff --git a/pkg/libsignalgo/version.go b/pkg/libsignalgo/version.go deleted file mode 100644 index b5732cb..0000000 --- a/pkg/libsignalgo/version.go +++ /dev/null @@ -1,13 +0,0 @@ -// Generated by update-ffi.sh; DO NOT EDIT. - -package libsignalgo - -/* -#include "./libsignal-ffi.h" -*/ -import "C" - -func init() { - // Compile time check to ensure the libsignal version matches - C.signal_ffi_version_0_106_1() -} diff --git a/pkg/msgconv/from-matrix.go b/pkg/msgconv/from-matrix.go index f755bbb..3c8f840 100644 --- a/pkg/msgconv/from-matrix.go +++ b/pkg/msgconv/from-matrix.go @@ -21,7 +21,6 @@ import ( "fmt" "net/http" "strings" - "unicode/utf8" "github.com/rs/zerolog" "go.mau.fi/util/exmime" @@ -48,12 +47,6 @@ func (mc *MessageConverter) ToSignal( relaybotFormatted bool, replyTo *database.Message, ) (*signalpb.DataMessage, error) { - if content.BeeperViewLimited != nil && replyTo != nil { - return nil, bridgev2.ErrUnsupportedViewLimitedType - } - if content.BeeperViewLimited != nil && content.FileName != "" && (content.FileName != content.Body || content.Format == event.FormatHTML) { - return nil, bridgev2.ErrCaptionsNotAllowed - } ctx = context.WithValue(ctx, contextKeyClient, client) ctx = context.WithValue(ctx, contextKeyPortal, portal) if evt.Type == event.EventSticker { @@ -146,40 +139,9 @@ func (mc *MessageConverter) ToSignal( default: return nil, fmt.Errorf("%w %s", bridgev2.ErrUnsupportedMessageType, content.MsgType) } - if content.BeeperViewLimited != nil { - dm.IsViewOnce = proto.Bool(true) - dm.RequiredProtocolVersion = proto.Uint32(max(dm.GetRequiredProtocolVersion(), uint32(signalpb.DataMessage_VIEW_ONCE_VIDEO))) - dm.Body = nil - dm.BodyRanges = nil - dm.Preview = nil - } - if err := mc.uploadLongText(ctx, dm); err != nil { - return nil, err - } return dm, nil } -const maxInlineBodySize = 2 * 1024 - -func (mc *MessageConverter) uploadLongText(ctx context.Context, dm *signalpb.DataMessage) error { - body := dm.GetBody() - if len(body) <= maxInlineBodySize { - return nil - } - att, err := getClient(ctx).UploadAttachment(ctx, []byte(body)) - if err != nil { - return fmt.Errorf("%w (long text): %w", bridgev2.ErrMediaReuploadFailed, err) - } - att.ContentType = proto.String(LongTextContentType) - dm.Attachments = append([]*signalpb.AttachmentPointer{att}, dm.Attachments...) - cut := maxInlineBodySize - for !utf8.RuneStart(body[cut]) { - cut-- - } - dm.Body = proto.String(body[:cut]) - return nil -} - func maybeInt[T constraints.Integer](v T) *T { if v == 0 { return nil @@ -204,7 +166,7 @@ func (mc *MessageConverter) convertFileToSignal(ctx context.Context, evt *event. if content.MSC3245Voice != nil && mime != "audio/aac" && ffmpeg.Supported() { data, err = ffmpeg.ConvertBytes(ctx, data, ".aac", []string{}, []string{"-c:a", "aac"}, mime) if err != nil { - return nil, fmt.Errorf("%w (voice to aac): %w", bridgev2.ErrMediaConvertFailed, err) + return nil, err } mime = "audio/aac" fileName += ".aac" @@ -214,7 +176,7 @@ func (mc *MessageConverter) convertFileToSignal(ctx context.Context, evt *event. // allowed case "image/gif": if !ffmpeg.Supported() { - return nil, fmt.Errorf("%w: converting gif stickers is not supported", bridgev2.ErrUnsupportedMediaType) + return nil, fmt.Errorf("converting gif stickers is not supported") } data, err = ffmpeg.ConvertBytes(ctx, data, ".apng", []string{}, []string{}, mime) if err != nil { @@ -223,7 +185,7 @@ func (mc *MessageConverter) convertFileToSignal(ctx context.Context, evt *event. fileName += ".apng" mime = "image/apng" default: - return nil, fmt.Errorf("%w for sticker: %s", bridgev2.ErrUnsupportedMediaType, mime) + return nil, fmt.Errorf("unsupported content type for sticker %s", mime) } } att, err := getClient(ctx).UploadAttachment(ctx, data) diff --git a/pkg/msgconv/from-signal.go b/pkg/msgconv/from-signal.go index 2140db9..3ec4fdb 100644 --- a/pkg/msgconv/from-signal.go +++ b/pkg/msgconv/from-signal.go @@ -52,7 +52,7 @@ var ( ) func calculateLength(dm *signalpb.DataMessage) int { - if dm.GetIsViewOnce() || dm.GetFlags()&uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE) != 0 { + if dm.GetFlags()&uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE) != 0 { return 1 } if dm.Sticker != nil || dm.PollVote != nil || dm.PollCreate != nil || dm.PollTerminate != nil { @@ -78,6 +78,7 @@ func CanConvertSignal(dm *signalpb.DataMessage) bool { return calculateLength(dm) > 0 } +const ViewOnceDisappearTimer = 5 * time.Minute const matrixTextMaxLength = 30000 // approximate value to avoid hitting 64 KiB PDU size limit with HTML duplication func (mc *MessageConverter) ToMatrix( @@ -97,34 +98,6 @@ func (mc *MessageConverter) ToMatrix( ThreadRoot: nil, Parts: make([]*bridgev2.ConvertedMessagePart, 0, calculateLength(dm)), } - if dm.GetIsViewOnce() { - var unavailableReason string - if sender == client.Store.ACI { - unavailableReason = "Sent a view-once message." - } else if len(dm.GetAttachments()) == 0 || - !time.UnixMilli(int64(dm.GetTimestamp())).Add(45*24*time.Hour).After(time.Now()) { - unavailableReason = "View-once media is no longer available." - } else if len(dm.GetAttachments()) != 1 || dm.Sticker != nil || dm.PollVote != nil || dm.PollCreate != nil || dm.PollTerminate != nil || - len(dm.GetContact()) != 0 || dm.Payment != nil || dm.GiftBadge != nil || dm.GetBody() != "" || len(dm.Preview) != 0 || dm.Quote != nil || dm.GetFlags() != 0 { - unavailableReason = "Invalid view-once media message." - } else { - attachmentMime, _, _ := mime.ParseMediaType(dm.Attachments[0].GetContentType()) - if attachmentMime != "" && !strings.HasPrefix(attachmentMime, "image/") && !strings.HasPrefix(attachmentMime, "video/") { - unavailableReason = "Invalid view-once media message." - } - } - if unavailableReason != "" { - cm.Parts = []*bridgev2.ConvertedMessagePart{{ - Type: event.EventMessage, - DBMetadata: &signalid.MessageMetadata{ViewOnce: true}, - Content: &event.MessageEventContent{ - MsgType: event.MsgNotice, - Body: unavailableReason, - }, - }} - return cm - } - } if dm.GetFlags()&uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE) != 0 { cm.Parts = append(cm.Parts, mc.ConvertDisappearingTimerChangeToMatrix( ctx, dm.GetExpireTimer(), dm.ExpireTimerVersion, time.UnixMilli(int64(dm.GetTimestamp())), attMap != nil, @@ -153,44 +126,9 @@ func (mc *MessageConverter) ToMatrix( cm.Parts = append(cm.Parts, mc.convertPollTerminateToMatrix(ctx, sender, dm.PollTerminate)) return cm } - if dm.PinMessage != nil || dm.UnpinMessage != nil { - var part *bridgev2.ConvertedMessagePart - part, cm.ReplyTo = mc.convertPinToMatrix(dm) - cm.Parts = append(cm.Parts, part) - return cm - } - if dm.GetIsViewOnce() { - if !mc.Bridge.Config.ViewLimitedMedia && (cm.Disappear.Timer == 0 || cm.Disappear.Timer > 5*time.Minute) { - cm.Disappear = database.DisappearingSetting{ - Type: event.DisappearingTypeAfterRead, - Timer: 5 * time.Minute, - } - cm.Parts = append(cm.Parts, &bridgev2.ConvertedMessagePart{ - Type: event.EventMessage, - Content: &event.MessageEventContent{ - MsgType: event.MsgText, - Body: "This is a view-once message. It will disappear in 5 minutes.", - }, - }) - } else { - cm.Disappear.DisappearAt = time.UnixMilli(int64(dm.GetTimestamp())).Add(45 * 24 * time.Hour) - if cm.Disappear.Timer == 0 { - cm.Disappear.Type = event.DisappearingTypeAfterSend - cm.Disappear.Timer = 45 * 24 * time.Hour - } - } - } for i, att := range dm.GetAttachments() { - if att.GetContentType() != LongTextContentType || att.GetSize() > matrixTextMaxLength { - part := mc.convertAttachmentToMatrix(ctx, i, att, attMap) - if dm.GetIsViewOnce() { - if part.Content.MsgType == event.MsgImage || part.Content.MsgType == event.MsgVideo { - part.Content.BeeperViewLimited = &event.BeeperViewLimitedMedia{Type: "count", Count: 1} - } else if part.Content.MsgType != event.MsgNotice { - part.Content = &event.MessageEventContent{MsgType: event.MsgNotice, Body: "Invalid view-once media message."} - } - } - cm.Parts = append(cm.Parts, part) + if att.GetContentType() != "text/x-signal-plain" || att.GetSize() > matrixTextMaxLength { + cm.Parts = append(cm.Parts, mc.convertAttachmentToMatrix(ctx, i, att, attMap)) } else { longBody, err := mc.downloadSignalLongText(ctx, att, attMap) if err == nil { @@ -221,17 +159,23 @@ func (mc *MessageConverter) ToMatrix( }, }) } + if dm.GetIsViewOnce() && mc.DisappearViewOnce && (cm.Disappear.Timer == 0 || cm.Disappear.Timer > ViewOnceDisappearTimer) { + cm.Disappear.Type = event.DisappearingTypeAfterRead + cm.Disappear.Timer = ViewOnceDisappearTimer + cm.Parts = append(cm.Parts, &bridgev2.ConvertedMessagePart{ + Type: event.EventMessage, + Content: &event.MessageEventContent{ + MsgType: event.MsgText, + Body: "This is a view-once message. It will disappear in 5 minutes.", + }, + }) + } cm.MergeCaption() for i, part := range cm.Parts { part.ID = signalid.MakeMessagePartID(i) - meta := &signalid.MessageMetadata{ - ContainsAttachments: ContainsAttachments(dm), - ViewOnce: dm.GetIsViewOnce(), + part.DBMetadata = &signalid.MessageMetadata{ + ContainsAttachments: len(dm.GetAttachments()) > 0, } - if meta.ViewOnce { - meta.ContainsAttachments = part.Content.BeeperViewLimited != nil - } - part.DBMetadata = meta } if dm.Quote != nil { authorACI, err := signalmeow.ParseStringOrBinaryUUID(dm.Quote.GetAuthorAci(), dm.Quote.GetAuthorAciBinary()) @@ -508,11 +452,6 @@ func (mc *MessageConverter) convertAttachmentToMatrix(ctx context.Context, index func (mc *MessageConverter) convertStickerToMatrix(ctx context.Context, sticker *signalpb.DataMessage_Sticker, attMap AttachmentMap) *bridgev2.ConvertedMessagePart { converted, err := mc.reuploadAttachment(ctx, sticker.GetData(), attMap) - hasPack := len(sticker.GetPackId()) == PackIDLength && len(sticker.GetPackKey()) == PackKeyLength && !bytes.Equal(sticker.GetPackId(), zeroPackID) - if err != nil && hasPack && (errors.Is(err, signalmeow.ErrAttachmentNotFound) || errors.Is(err, ErrAttachmentNotInBackup) || errors.Is(err, ErrBackupNotSupported)) { - zerolog.Ctx(ctx).Debug().Err(err).Msg("Sticker attachment is unavailable, downloading it from the sticker pack") - converted, err = mc.reuploadStickerFromPack(ctx, sticker) - } if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to handle sticker") return &bridgev2.ConvertedMessagePart{ @@ -530,7 +469,7 @@ func (mc *MessageConverter) convertStickerToMatrix(ctx context.Context, sticker converted.Content.Info.Height = 200 } converted.Content.Body = sticker.GetEmoji() - if hasPack { + if len(sticker.GetPackId()) == PackIDLength && len(sticker.GetPackKey()) == PackKeyLength && !bytes.Equal(sticker.GetPackId(), zeroPackID) { converted.Content.Info.BridgedSticker = &event.BridgedSticker{ Network: StickerSourceID, ID: strconv.FormatUint(uint64(sticker.GetStickerId()), 10), @@ -543,49 +482,6 @@ func (mc *MessageConverter) convertStickerToMatrix(ctx context.Context, sticker return converted } -func (mc *MessageConverter) reuploadStickerFromPack(ctx context.Context, sticker *signalpb.DataMessage_Sticker) (*bridgev2.ConvertedMessagePart, error) { - att := sticker.GetData() - content := &event.MessageEventContent{ - Body: att.GetFileName(), - Info: &event.FileInfo{ - MimeType: att.GetContentType(), - Width: int(att.GetWidth()), - Height: int(att.GetHeight()), - }, - } - if mc.DirectMedia { - mediaID, err := signalid.DirectMediaSticker{ - PackID: sticker.GetPackId(), - PackKey: sticker.GetPackKey(), - StickerID: sticker.GetStickerId(), - }.AsMediaID() - if err != nil { - return nil, err - } - content.URL, content.File, err = mc.Bridge.GenerateContentURI(ctx, getPortal(ctx).MXID, mediaID) - if err != nil { - return nil, err - } - } else { - data, err := signalmeow.DownloadStickerPackItem(ctx, sticker.GetPackId(), sticker.GetPackKey(), sticker.GetStickerId()) - if err != nil { - return nil, fmt.Errorf("failed to download sticker from pack: %w", err) - } - if content.Info.MimeType == "" { - content.Info.MimeType = http.DetectContentType(data) - } - content.Info.Size = len(data) - content.URL, content.File, err = getIntent(ctx).UploadMedia(ctx, getPortal(ctx).MXID, data, content.Body, content.Info.MimeType) - if err != nil { - return nil, fmt.Errorf("failed to upload sticker from pack: %w", err) - } - } - return &bridgev2.ConvertedMessagePart{ - Type: event.EventMessage, - Content: content, - }, nil -} - func (mc *MessageConverter) downloadSignalLongText(ctx context.Context, att *signalpb.AttachmentPointer, attMap AttachmentMap) (*string, error) { data, err := mc.downloadAttachment(ctx, att, attMap, nil) if err != nil { @@ -663,7 +559,7 @@ func (mc *MessageConverter) reuploadAttachment(ctx context.Context, att *signalp if err != nil { return nil, err } - content.URL, content.File, err = mc.Bridge.GenerateContentURI(ctx, getPortal(ctx).MXID, mediaID) + content.URL, err = mc.Bridge.Matrix.GenerateContentURI(ctx, mediaID) } else { err = mc.actuallyReuploadAttachment(ctx, content, att, attMap) if err != nil { @@ -847,28 +743,6 @@ func (mc *MessageConverter) convertPollTerminateToMatrix(ctx context.Context, se } } -func (mc *MessageConverter) convertPinToMatrix(dm *signalpb.DataMessage) (*bridgev2.ConvertedMessagePart, *networkid.MessageOptionalPartID) { - body := "Pinned a message" - targetAuthor, targetTS := dm.GetPinMessage().GetTargetAuthorAciBinary(), dm.GetPinMessage().GetTargetSentTimestamp() - if dm.PinMessage == nil { - body = "Unpinned a message" - targetAuthor, targetTS = dm.GetUnpinMessage().GetTargetAuthorAciBinary(), dm.GetUnpinMessage().GetTargetSentTimestamp() - } - var replyTo *networkid.MessageOptionalPartID - if len(targetAuthor) == 16 { - replyTo = &networkid.MessageOptionalPartID{ - MessageID: signalid.MakeMessageID(uuid.UUID(targetAuthor), targetTS), - } - } - return &bridgev2.ConvertedMessagePart{ - Type: event.EventMessage, - Content: &event.MessageEventContent{ - MsgType: event.MsgNotice, - Body: body, - }, - }, replyTo -} - var invalidPollVote = &bridgev2.ConvertedMessagePart{ Type: event.EventUnstablePollResponse, Content: &event.MessageEventContent{}, diff --git a/pkg/msgconv/imagepack.go b/pkg/msgconv/imagepack.go index 2a26850..310f810 100644 --- a/pkg/msgconv/imagepack.go +++ b/pkg/msgconv/imagepack.go @@ -158,24 +158,18 @@ func (mc *MessageConverter) DownloadImagePack(ctx context.Context, url string) ( imagesByID[stickerID] = mxc return mxc, nil } - duplicateCounter := make(map[string]int) for _, sticker := range manifest.Stickers { mxc, err := uploadImage(sticker) if err != nil { return nil, err } shortcode := emojishortcodes.Get(sticker.GetEmoji()) - if _, alreadyExists := content.Images[shortcode]; alreadyExists { - counter, ok := duplicateCounter[shortcode] - if !ok { - counter = 2 - } else { - counter++ - } - duplicateCounter[shortcode] = counter - shortcode = fmt.Sprintf("%s_%d", shortcode, counter) + realShortcode := shortcode + i := 2 + for _, alreadyExists := content.Images[realShortcode]; alreadyExists; i++ { + realShortcode = fmt.Sprintf("%s_%d", shortcode, i) } - content.Images[shortcode] = &event.ImagePackImage{ + content.Images[realShortcode] = &event.ImagePackImage{ URL: mxc, Body: sticker.GetEmoji(), Info: &event.FileInfo{ diff --git a/pkg/msgconv/matrixfmt/html.go b/pkg/msgconv/matrixfmt/html.go index 9a54274..b60c0ad 100644 --- a/pkg/msgconv/matrixfmt/html.go +++ b/pkg/msgconv/matrixfmt/html.go @@ -134,14 +134,12 @@ func JoinEntityString(with string, strings ...*EntityString) *EntityString { continue } DebugLog(" + %q %+v\n", s.String, s.Entities) - if len(str) > 0 { - str = append(str, withUTF16...) - } for _, entity := range s.Entities { entity.Start += len(str) entities = append(entities, entity) } str = append(str, s.String...) + str = append(str, withUTF16...) } DebugLog(" -> %q %+v\n", str, entities) return &EntityString{ diff --git a/pkg/msgconv/msgconv.go b/pkg/msgconv/msgconv.go index 2ec6ad0..e312a1f 100644 --- a/pkg/msgconv/msgconv.go +++ b/pkg/msgconv/msgconv.go @@ -18,7 +18,6 @@ package msgconv import ( "context" - "slices" "github.com/google/uuid" "maunium.net/go/mautrix/bridgev2" @@ -29,7 +28,6 @@ import ( "go.mau.fi/mautrix-signal/pkg/msgconv/signalfmt" "go.mau.fi/mautrix-signal/pkg/signalid" "go.mau.fi/mautrix-signal/pkg/signalmeow" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/signalpb" ) type contextKey int @@ -46,10 +44,11 @@ type MessageConverter struct { SignalFmtParams *signalfmt.FormatParams MatrixFmtParams *matrixfmt.HTMLParser - MaxFileSize int64 - LocationFormat string - DirectMedia bool - ExtEvPolls bool + MaxFileSize int64 + LocationFormat string + DisappearViewOnce bool + DirectMedia bool + ExtEvPolls bool } func NewMessageConverter(br *bridgev2.Bridge) *MessageConverter { @@ -98,14 +97,6 @@ func NewMessageConverter(br *bridgev2.Bridge) *MessageConverter { } } -const LongTextContentType = "text/x-signal-plain" - -func ContainsAttachments(dm *signalpb.DataMessage) bool { - return slices.ContainsFunc(dm.GetAttachments(), func(att *signalpb.AttachmentPointer) bool { - return att.GetContentType() != LongTextContentType - }) -} - func getClient(ctx context.Context) *signalmeow.Client { return ctx.Value(contextKeyClient).(*signalmeow.Client) } diff --git a/pkg/signalid/dbmeta.go b/pkg/signalid/dbmeta.go index 0c35c0d..35893c0 100644 --- a/pkg/signalid/dbmeta.go +++ b/pkg/signalid/dbmeta.go @@ -24,14 +24,10 @@ type PortalMetadata struct { Revision uint32 `json:"revision,omitempty"` ExpirationTimerVersion uint32 `json:"expiration_timer_version,omitempty"` // Lazy resync tracking - LastSync jsontime.Unix `json:"last_sync,omitempty"` - InfoVersion uint32 `json:"info_version,omitempty"` + LastSync jsontime.Unix `json:"last_sync,omitempty"` } type MessageMetadata struct { - ServerGUID string `json:"server_guid,omitempty"` - ReportingToken []byte `json:"reporting_token,omitempty"` - ViewOnce bool `json:"view_once,omitempty"` ContainsAttachments bool `json:"contains_attachments,omitempty"` MatrixPollOptionIDs []string `json:"matrix_poll_option_ids,omitempty"` VoteCount map[string]uint32 `json:"vote_count,omitempty"` @@ -44,5 +40,4 @@ type UserLoginMetadata struct { type GhostMetadata struct { ProfileFetchedAt jsontime.UnixMilli `json:"profile_fetched_at"` - Username string `json:"username"` } diff --git a/pkg/signalmeow/attachments.go b/pkg/signalmeow/attachments.go index c4317ad..de89fb2 100644 --- a/pkg/signalmeow/attachments.go +++ b/pkg/signalmeow/attachments.go @@ -138,9 +138,6 @@ const MACLength = 32 const IVLength = 16 func macAndAESDecrypt(body, key []byte) ([]byte, error) { - if len(key) != 64 { - return nil, fmt.Errorf("invalid key length (%d bytes)", len(key)) - } l := len(body) - MACLength if !verifyMAC(key[MACLength:], body[:l], body[l:]) { return nil, ErrInvalidMACForAttachment @@ -277,7 +274,7 @@ func (cli *Client) UploadAttachment(ctx context.Context, body []byte) (*signalpb } // Get upload attributes from Signal server - attributesPath := fmt.Sprintf("/v4/attachments/form/upload?uploadLength=%d", len(encryptedWithMAC)) + attributesPath := "/v4/attachments/form/upload" resp, err := cli.AuthedWS.SendRequest(ctx, http.MethodGet, attributesPath, nil, nil) if err != nil { log.Err(err).Msg("Failed to request upload attributes") @@ -344,7 +341,6 @@ func (cli *Client) uploadAttachmentLegacy( ContentType: web.ContentTypeOctetStream, Username: &username, Password: &password, - Upload: true, }) web.CloseBody(resp) if err != nil { @@ -369,7 +365,6 @@ func (cli *Client) uploadAttachmentTUS( Body: encryptedWithMAC, ContentType: web.ContentTypeOffsetOctetStream, Headers: uploadAttributes.Headers, - Upload: true, }) web.CloseBody(resp) // TODO actually support resuming on error @@ -479,9 +474,7 @@ func aesDecrypt(key, ciphertext []byte) ([]byte, error) { return nil, err } - if len(ciphertext) < IVLength { - return nil, fmt.Errorf("ciphertext too short to contain IV (%d bytes)", len(ciphertext)) - } else if len(ciphertext)%aes.BlockSize != 0 { + if len(ciphertext)%aes.BlockSize != 0 { return nil, fmt.Errorf("ciphertext not multiple of AES blocksize (%d extra bytes)", len(ciphertext)%aes.BlockSize) } diff --git a/pkg/signalmeow/backup.go b/pkg/signalmeow/backup.go index 911a888..f003e19 100644 --- a/pkg/signalmeow/backup.go +++ b/pkg/signalmeow/backup.go @@ -42,7 +42,6 @@ const transferArchiveFetchTimeout = 1 * time.Hour var ( ErrNoEphemeralBackupKey = errors.New("no ephemeral backup key") - ErrTransferTimedOut = errors.New("timed out waiting for transfer archive") ) const ( @@ -272,8 +271,8 @@ func (cli *Client) WaitForTransfer(ctx context.Context) (*TransferArchiveMetadat for { remainingTime := time.Until(timeout) - if remainingTime < time.Second { - return nil, ErrTransferTimedOut + if remainingTime < 0 { + return nil, fmt.Errorf("timed out") } reqStart := time.Now() reqTimeout := min(remainingTime, 5*time.Minute) diff --git a/pkg/signalmeow/client.go b/pkg/signalmeow/client.go index fad3f8e..b72e33b 100644 --- a/pkg/signalmeow/client.go +++ b/pkg/signalmeow/client.go @@ -23,7 +23,6 @@ import ( "net/http" "net/url" "sync" - "sync/atomic" "time" "github.com/rs/zerolog" @@ -70,11 +69,6 @@ type Client struct { cdAuth *basicExpiringCredentials cdToken []byte - storageSyncLock sync.Mutex - storageSyncQueued atomic.Bool - storageVersion uint64 - storageRecords []string - writeCallbackCounter chan time.Time } @@ -84,7 +78,7 @@ type Client struct { var InMemorySendCacheSize = 2048 func NewClient(device *store.Device, log zerolog.Logger, evtHandler func(events.SignalEvent) bool) *Client { - c := &Client{ + return &Client{ Store: device, Log: log, EventHandler: evtHandler, @@ -96,10 +90,6 @@ func NewClient(device *store.Device, log zerolog.Logger, evtHandler func(events. }, sendCache: exsync.NewRingBuffer[sendCacheKey, *signalpb.Content](InMemorySendCacheSize), } - device.SetIdentityChangeCallback(func(id libsignalgo.ServiceID) { - c.handleEvent(&events.IdentityChange{ServiceID: id}) - }) - return c } func (cli *Client) handleEvent(evt events.SignalEvent) bool { diff --git a/pkg/signalmeow/events/message.go b/pkg/signalmeow/events/message.go index fdc82f0..475ac02 100644 --- a/pkg/signalmeow/events/message.go +++ b/pkg/signalmeow/events/message.go @@ -31,7 +31,6 @@ type SignalEvent interface { func (*ChatEvent) isSignalEvent() {} func (*DecryptionError) isSignalEvent() {} func (*Receipt) isSignalEvent() {} -func (*ViewOnceOpen) isSignalEvent() {} func (*ReadSelf) isSignalEvent() {} func (*Call) isSignalEvent() {} func (*ContactList) isSignalEvent() {} @@ -40,7 +39,6 @@ func (*DeleteForMe) isSignalEvent() {} func (*MessageRequestResponse) isSignalEvent() {} func (*QueueEmpty) isSignalEvent() {} func (*LoggedOut) isSignalEvent() {} -func (*IdentityChange) isSignalEvent() {} type MessageInfo struct { Sender uuid.UUID @@ -48,8 +46,6 @@ type MessageInfo struct { GroupRevision uint32 ServerTimestamp uint64 - ServerGUID string - ReportingToken []byte } type ChatEvent struct { @@ -68,10 +64,6 @@ type Receipt struct { Content *signalpb.ReceiptMessage } -type ViewOnceOpen struct { - *signalpb.SyncMessage_ViewOnceOpen -} - type ReadSelf struct { Timestamp uint64 Messages []*signalpb.SyncMessage_Read @@ -109,7 +101,3 @@ type MessageRequestResponse struct { type QueueEmpty struct{} type LoggedOut struct{ Error error } - -type IdentityChange struct { - ServiceID libsignalgo.ServiceID -} diff --git a/pkg/signalmeow/groupcache.go b/pkg/signalmeow/groupcache.go index 3a676fb..ee8259f 100644 --- a/pkg/signalmeow/groupcache.go +++ b/pkg/signalmeow/groupcache.go @@ -203,7 +203,6 @@ func (gc *GroupCache) ApplyUpdate(change *GroupChange, endorsementResponse libsi delete(gc.data, id) return nil } - prevMembers := cached.getMemberServiceIDs() // Pending member adds, promotes and removes cached.PendingMembers = append(cached.PendingMembers, change.AddPendingMembers...) @@ -305,9 +304,6 @@ func (gc *GroupCache) ApplyUpdate(change *GroupChange, endorsementResponse libsi if change.ModifyAnnouncementsOnly != nil { cached.AnnouncementsOnly = *change.ModifyAnnouncementsOnly } - if change.TerminateGroup { - cached.Terminated = true - } if change.ModifyDisappearingMessagesDuration != nil { cached.DisappearingMessagesDuration = *change.ModifyDisappearingMessagesDuration } @@ -323,12 +319,6 @@ func (gc *GroupCache) ApplyUpdate(change *GroupChange, endorsementResponse libsi cached.UpdatedAt = time.Now() cached.Revision = change.Revision - if len(endorsementResponse) == 0 { - if !slices.Equal(prevMembers, cached.getMemberServiceIDs()) { - delete(gc.data, id) - } - return nil - } endorsement, memberEndorsements, err := endorsementResponse.ReceiveWithServiceIDs( cached.getMemberServiceIDs(), gc.serviceID, diff --git a/pkg/signalmeow/groups.go b/pkg/signalmeow/groups.go index 882e048..cafe4d3 100644 --- a/pkg/signalmeow/groups.go +++ b/pkg/signalmeow/groups.go @@ -81,7 +81,6 @@ type Group struct { Members []*GroupMember Description string AnnouncementsOnly bool - Terminated bool Revision uint32 DisappearingMessagesDuration uint32 AccessControl *GroupAccessControl @@ -207,7 +206,6 @@ type GroupChange struct { DeleteBannedMembers []*libsignalgo.ServiceID PromotePendingPniAciMembers []*PromotePendingPniAciMember ModifyInviteLinkPassword *types.SerializedInviteLinkPassword - TerminateGroup bool } func (groupChange *GroupChange) isEmpty() bool { @@ -228,8 +226,7 @@ func (groupChange *GroupChange) isEmpty() bool { len(groupChange.PromoteRequestingMembers) == 0 && groupChange.ModifyDescription == nil && groupChange.ModifyAnnouncementsOnly == nil && - len(groupChange.AddBannedMembers) == 0 && - !groupChange.TerminateGroup + len(groupChange.AddBannedMembers) == 0 } func (groupChange *GroupChange) resolveConflict(group *Group) { @@ -331,7 +328,7 @@ func (cli *Client) fetchNewGroupCreds(ctx context.Context, today time.Time) (*Gr Str("action", "fetch new group creds"). Logger() sevenDaysOut := today.Add(7 * 24 * time.Hour) - path := fmt.Sprintf("/v1/certificate/auth/group?redemptionStartSeconds=%d&redemptionEndSeconds=%d&v101=true&zkcCredential=true", today.Unix(), sevenDaysOut.Unix()) + path := fmt.Sprintf("/v1/certificate/auth/group?redemptionStartSeconds=%d&redemptionEndSeconds=%d&pniAsServiceId=true", today.Unix(), sevenDaysOut.Unix()) resp, err := cli.AuthedWS.SendRequest(ctx, http.MethodGet, path, nil, nil) if err != nil { return nil, fmt.Errorf("SendRequest error: %w", err) @@ -370,27 +367,14 @@ func (cli *Client) GetAuthorizationForToday(ctx context.Context, masterKey libsi return nil, err } - var authCredential *libsignalgo.AuthCredentialWithPni - if cli.Store.PNI == uuid.Nil { - if cli.Store.AuthCredentialSalt == nil { - return nil, fmt.Errorf("missing auth credential salt for pni-less receive") - } - authCredential, err = libsignalgo.ReceiveAuthCredentialZKC( - prodServerPublicParams, - cli.Store.ACI, - cli.Store.AuthCredentialSalt, - redemptionTime, - *authCredentialResponse, - ) - } else { - authCredential, err = libsignalgo.ReceiveAuthCredentialWithPni( - prodServerPublicParams, - cli.Store.ACI, - cli.Store.PNI, - redemptionTime, - *authCredentialResponse, - ) - } + // Receive the auth credential + authCredential, err := libsignalgo.ReceiveAuthCredentialWithPni( + prodServerPublicParams, + cli.Store.ACI, + cli.Store.PNI, + redemptionTime, + *authCredentialResponse, + ) if err != nil { log.Err(err).Msg("ReceiveAuthCredentialWithPni error") return nil, err @@ -500,8 +484,6 @@ func decryptGroup(ctx context.Context, encryptedGroup *signalpb.Group, groupMast // These aren't encrypted decryptedGroup.AvatarPath = encryptedGroup.AvatarUrl decryptedGroup.Revision = encryptedGroup.Version - decryptedGroup.Terminated = encryptedGroup.Terminated - decryptedGroup.AnnouncementsOnly = encryptedGroup.AnnouncementsOnly // Decrypt members for _, member := range encryptedGroup.Members { @@ -539,7 +521,7 @@ func decryptGroup(ctx context.Context, encryptedGroup *signalpb.Group, groupMast } for _, bannedMember := range encryptedGroup.MembersBanned { - if bannedMember == nil || len(bannedMember.UserId) != libsignalgo.UUIDCiphertextLength { + if bannedMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(bannedMember.UserId) @@ -712,7 +694,7 @@ func (cli *Client) DownloadGroupAvatar(ctx context.Context, avatarPath string, g return nil, fmt.Errorf("failed to send request: %w", err) } if resp.StatusCode < 200 || resp.StatusCode >= 300 { - return nil, fmt.Errorf("unexpected response status: %w", web.HTTPStatusError{StatusCode: resp.StatusCode, Status: resp.Status}) + return nil, fmt.Errorf("unexpected response status %d", resp.StatusCode) } encryptedAvatar, err := io.ReadAll(resp.Body) if err != nil { @@ -759,9 +741,6 @@ func (cli *Client) StoreMasterKey(ctx context.Context, groupMasterKey types.Seri } func (cli *Client) DecryptGroupChange(ctx context.Context, groupContext *signalpb.GroupContextV2) (*GroupChange, error) { - if len(groupContext.MasterKey) != libsignalgo.GroupMasterKeyLength { - return nil, fmt.Errorf("invalid group master key size: %d", len(groupContext.MasterKey)) - } masterKeyBytes := libsignalgo.GroupMasterKey(groupContext.MasterKey) groupMasterKey := masterKeyFromBytes(masterKeyBytes) @@ -808,9 +787,6 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange log.Err(err).Msg("DeriveGroupSecretParamsFromMasterKey error") return nil, err } - if len(encryptedActions.SourceUserId) != libsignalgo.UUIDCiphertextLength { - return nil, fmt.Errorf("invalid source user ID length: %d", len(encryptedActions.SourceUserId)) - } sourceServiceID, err := groupSecretParams.DecryptServiceID(libsignalgo.UUIDCiphertext(encryptedActions.SourceUserId)) if err != nil { @@ -864,7 +840,7 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, deleteMember := range encryptedActions.DeleteMembers { - if deleteMember == nil || len(deleteMember.DeletedUserId) != libsignalgo.UUIDCiphertextLength { + if deleteMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(deleteMember.DeletedUserId) @@ -880,9 +856,6 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, modifyMemberRole := range encryptedActions.ModifyMemberRoles { - if len(modifyMemberRole.UserId) != libsignalgo.UUIDCiphertextLength { - continue - } encryptedUserID := libsignalgo.UUIDCiphertext(modifyMemberRole.UserId) serviceID, err := groupSecretParams.DecryptServiceID(encryptedUserID) if err != nil { @@ -931,7 +904,7 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, deletePendingMember := range encryptedActions.DeleteMembersPendingProfileKey { - if deletePendingMember == nil || len(deletePendingMember.DeletedUserId) != libsignalgo.UUIDCiphertextLength { + if deletePendingMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(deletePendingMember.DeletedUserId) @@ -964,7 +937,7 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange for _, promotePendingPniAciMember := range encryptedActions.PromoteMembersPendingPniAciProfileKey { // TODO: pretending this is a PendingMember should do for mautrix-signal, but we probably want to treat them separately at some point - if promotePendingPniAciMember == nil || len(promotePendingPniAciMember.Pni) != libsignalgo.UUIDCiphertextLength { + if promotePendingPniAciMember == nil { continue } aci, profileKey, err := decryptPKeyAndIDorPresentation(ctx, promotePendingPniAciMember.UserId, promotePendingPniAciMember.ProfileKey, promotePendingPniAciMember.Presentation, groupSecretParams) @@ -1009,7 +982,7 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, deleteRequestingMember := range encryptedActions.DeleteMembersPendingAdminApproval { - if deleteRequestingMember == nil || len(deleteRequestingMember.DeletedUserId) != libsignalgo.UUIDCiphertextLength { + if deleteRequestingMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(deleteRequestingMember.DeletedUserId) @@ -1022,7 +995,7 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, promoteRequestingMember := range encryptedActions.PromoteMembersPendingAdminApproval { - if promoteRequestingMember == nil || len(promoteRequestingMember.UserId) != libsignalgo.UUIDCiphertextLength { + if promoteRequestingMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(promoteRequestingMember.UserId) @@ -1038,10 +1011,11 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } for _, addBannedMember := range encryptedActions.AddMembersBanned { - if addBannedMember == nil || addBannedMember.Added == nil || len(addBannedMember.Added.UserId) != libsignalgo.UUIDCiphertextLength { + if addBannedMember == nil { continue } - encryptedUserID := libsignalgo.UUIDCiphertext(addBannedMember.Added.UserId) + bannedMember := addBannedMember.Added + encryptedUserID := libsignalgo.UUIDCiphertext(bannedMember.UserId) serviceID, err := groupSecretParams.DecryptServiceID(encryptedUserID) if err != nil { log.Err(err).Msg("DecryptUUID UserId error for addBannedMember") @@ -1049,12 +1023,12 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange } decryptedGroupChange.AddBannedMembers = append(decryptedGroupChange.AddBannedMembers, &BannedMember{ ServiceID: serviceID, - Timestamp: addBannedMember.Added.Timestamp, + Timestamp: bannedMember.Timestamp, }) } for _, deleteBannedMember := range encryptedActions.DeleteMembersBanned { - if deleteBannedMember == nil || len(deleteBannedMember.DeletedUserId) != libsignalgo.UUIDCiphertextLength { + if deleteBannedMember == nil { continue } encryptedUserID := libsignalgo.UUIDCiphertext(deleteBannedMember.DeletedUserId) @@ -1081,7 +1055,6 @@ func (cli *Client) decryptGroupChange(ctx context.Context, encryptedGroupChange if encryptedActions.ModifyAnnouncementsOnly != nil { decryptedGroupChange.ModifyAnnouncementsOnly = &encryptedActions.ModifyAnnouncementsOnly.AnnouncementsOnly } - decryptedGroupChange.TerminateGroup = encryptedActions.TerminateGroup != nil if encryptedActions.ModifyDisappearingMessageTimer != nil && len(encryptedActions.ModifyDisappearingMessageTimer.Timer) > 0 { timerBlob, err := decryptGroupPropertyIntoBlob(groupSecretParams, encryptedActions.ModifyDisappearingMessageTimer.Timer) if err != nil { @@ -1108,10 +1081,7 @@ func decryptPKeyAndIDorPresentation(ctx context.Context, userID []byte, profileK log := zerolog.Ctx(ctx) var encryptedUserID libsignalgo.UUIDCiphertext var encryptedProfileKey libsignalgo.ProfileKeyCiphertext - if len(userID) == libsignalgo.UUIDCiphertextLength && len(profileKeyBytes) == libsignalgo.ProfileKeyCiphertextLength { - encryptedUserID = libsignalgo.UUIDCiphertext(userID) - encryptedProfileKey = libsignalgo.ProfileKeyCiphertext(profileKeyBytes) - } else if len(presentationBytes) > 0 { + if len(userID) == 0 || len(profileKeyBytes) == 0 { presentation := libsignalgo.ProfileKeyCredentialPresentation(presentationBytes) err := presentation.CheckValidContents() if err != nil { @@ -1129,7 +1099,8 @@ func decryptPKeyAndIDorPresentation(ctx context.Context, userID []byte, profileK return nil, nil, err } } else { - return nil, nil, fmt.Errorf("invalid member: missing profile key and presentation") + encryptedUserID = libsignalgo.UUIDCiphertext(userID) + encryptedProfileKey = libsignalgo.ProfileKeyCiphertext(profileKeyBytes) } serviceID, err := groupSecretParams.DecryptServiceID(encryptedUserID) if err != nil { @@ -1161,9 +1132,6 @@ func decryptMember(ctx context.Context, member *signalpb.Member, groupSecretPara } func decryptPendingMember(ctx context.Context, pendingMember *signalpb.MemberPendingProfileKey, groupSecretParams libsignalgo.GroupSecretParams) (*PendingMember, error) { - if len(pendingMember.Member.UserId) != libsignalgo.UUIDCiphertextLength { - return nil, fmt.Errorf("invalid pending member user ID length: %d", len(pendingMember.Member.UserId)) - } log := zerolog.Ctx(ctx) encryptedUserID := libsignalgo.UUIDCiphertext(pendingMember.Member.UserId) userID, err := groupSecretParams.DecryptServiceID(encryptedUserID) @@ -1173,9 +1141,6 @@ func decryptPendingMember(ctx context.Context, pendingMember *signalpb.MemberPen } // pendingMembers don't have profile keys encryptedAddedByUserID := pendingMember.AddedByUserId - if len(encryptedAddedByUserID) != libsignalgo.UUIDCiphertextLength { - return nil, fmt.Errorf("invalid pending member addedByUserId length: %d", len(encryptedAddedByUserID)) - } addedByServiceId, err := groupSecretParams.DecryptServiceID(libsignalgo.UUIDCiphertext(encryptedAddedByUserID)) if err != nil { log.Err(err).Msg("DecryptUUID addedByUserId error for pendingMember") @@ -1807,7 +1772,8 @@ func (cli *Client) GetGroupHistoryPage(ctx context.Context, gid types.GroupIdent "Cached-Send-Endorsements": "0", }, } - path := fmt.Sprintf("/v2/groups/logs/%d?maxSupportedChangeEpoch=%d&includeFirstState=%t&includeLastState=false", fromRevision, 7, includeFirstState) + // highest known epoch seems to always be 5, but that may change in the future. includeLastState is always false + path := fmt.Sprintf("/v2/groups/logs/%d?maxSupportedChangeEpoch=%d&includeFirstState=%t&includeLastState=false", fromRevision, 5, includeFirstState) response, err := web.SendHTTPRequest(ctx, web.StorageHostname, http.MethodGet, path, opts) defer web.CloseBody(response) if err != nil { diff --git a/pkg/signalmeow/keys.go b/pkg/signalmeow/keys.go index 1b2370a..5439755 100644 --- a/pkg/signalmeow/keys.go +++ b/pkg/signalmeow/keys.go @@ -27,7 +27,6 @@ import ( "strings" "time" - "github.com/google/uuid" "github.com/rs/zerolog" "go.mau.fi/mautrix-signal/pkg/libsignalgo" @@ -64,13 +63,6 @@ func (cli *Client) RegisterAllPreKeys(ctx context.Context, pks store.PreKeyStore return fmt.Errorf("failed to get all kyber prekeys: %w", err) } - if len(preKeys) > PREKEY_BATCH_SIZE { - preKeys = preKeys[len(preKeys)-PREKEY_BATCH_SIZE:] - } - if len(kyberPreKeys) > PREKEY_BATCH_SIZE { - kyberPreKeys = kyberPreKeys[len(kyberPreKeys)-PREKEY_BATCH_SIZE:] - } - // We need to have some keys to upload if len(preKeys) == 0 && len(kyberPreKeys) == 0 { return fmt.Errorf("no prekeys to upload") @@ -415,7 +407,6 @@ func addBase64PaddingAndDecode(data string) ([]byte, error) { var ( ErrUnregisteredUser = errors.New("user is unregistered") ErrDevicesChanged = errors.New("device list changed while sending skdm") - ErrRateLimited = errors.New("rate limited by server") ) func (cli *Client) FetchAndProcessPreKey(ctx context.Context, theirServiceID libsignalgo.ServiceID, specificDeviceID int) error { @@ -630,24 +621,22 @@ func (cli *Client) keyCheckLoop(ctx context.Context) { windowSize = 25 continue } - if cli.Store.PNI != uuid.Nil { - err = cli.CheckAndUploadNewPreKeys(ctx, cli.Store.PNIPreKeyStore) - if err != nil { - if errors.Is(err, errPrekeyUpload422) { - log.Err(err).Msg("Got 422 error while uploading PNI prekeys, deleting session") - disconnectErr := cli.ClearKeysAndDisconnect(ctx) - if disconnectErr != nil { - log.Err(disconnectErr).Msg("ClearKeysAndDisconnect error") - } - cli.handleEvent(&events.LoggedOut{Error: err}) - return + err = cli.CheckAndUploadNewPreKeys(ctx, cli.Store.PNIPreKeyStore) + if err != nil { + if errors.Is(err, errPrekeyUpload422) { + log.Err(err).Msg("Got 422 error while uploading PNI prekeys, deleting session") + disconnectErr := cli.ClearKeysAndDisconnect(ctx) + if disconnectErr != nil { + log.Err(disconnectErr).Msg("ClearKeysAndDisconnect error") } - log.Err(err).Msg("Error checking and uploading new prekeys for PNI identity") - // Retry within half an hour - windowStart = 5 - windowSize = 25 - continue + cli.handleEvent(&events.LoggedOut{Error: err}) + return } + log.Err(err).Msg("Error checking and uploading new prekeys for PNI identity") + // Retry within half an hour + windowStart = 5 + windowSize = 25 + continue } // After a successful check, check again in 36 to 60 hours windowStart = 36 * 60 diff --git a/pkg/signalmeow/profile.go b/pkg/signalmeow/profile.go index a0878b6..a515f5a 100644 --- a/pkg/signalmeow/profile.go +++ b/pkg/signalmeow/profile.go @@ -289,7 +289,7 @@ func (cli *Client) DownloadUserAvatar(ctx context.Context, avatarPath string, pr } defer web.CloseBody(resp) if resp.StatusCode < 200 || resp.StatusCode >= 300 { - return nil, fmt.Errorf("unexpected response status: %w", web.HTTPStatusError{StatusCode: resp.StatusCode, Status: resp.Status}) + return nil, fmt.Errorf("unexpected response status %d", resp.StatusCode) } encryptedAvatar, err := io.ReadAll(resp.Body) if err != nil { diff --git a/pkg/signalmeow/protobuf/backuppb/Backup.pb.go b/pkg/signalmeow/protobuf/backuppb/Backup.pb.go index 1e8292d..bcff3bd 100644 --- a/pkg/signalmeow/protobuf/backuppb/Backup.pb.go +++ b/pkg/signalmeow/protobuf/backuppb/Backup.pb.go @@ -1229,7 +1229,7 @@ func (x ContactAttachment_Phone_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ContactAttachment_Phone_Type.Descriptor instead. func (ContactAttachment_Phone_Type) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 2, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 1, 0} } type ContactAttachment_Email_Type int32 @@ -1284,7 +1284,7 @@ func (x ContactAttachment_Email_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ContactAttachment_Email_Type.Descriptor instead. func (ContactAttachment_Email_Type) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 3, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 2, 0} } type ContactAttachment_PostalAddress_Type int32 @@ -1336,7 +1336,7 @@ func (x ContactAttachment_PostalAddress_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ContactAttachment_PostalAddress_Type.Descriptor instead. func (ContactAttachment_PostalAddress_Type) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 4, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 3, 0} } // Similar to SignalService.AttachmentPointer.Flags, @@ -2455,7 +2455,6 @@ type AccountData struct { 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"` BioEmoji string `protobuf:"bytes,14,opt,name=bioEmoji,proto3" json:"bioEmoji,omitempty"` - IosSpecificSettings *AccountData_IOSSpecificSettings `protobuf:"bytes,16,opt,name=iosSpecificSettings,proto3" json:"iosSpecificSettings,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2581,13 +2580,6 @@ func (x *AccountData) GetBioEmoji() string { return "" } -func (x *AccountData) GetIosSpecificSettings() *AccountData_IOSSpecificSettings { - if x != nil { - return x.IosSpecificSettings - } - return nil -} - type Recipient struct { 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 @@ -2758,24 +2750,22 @@ type Contact struct { // // *Contact_Registered_ // *Contact_NotRegistered_ - Registration isContact_Registration `protobuf_oneof:"registration"` - ProfileKey []byte `protobuf:"bytes,9,opt,name=profileKey,proto3,oneof" json:"profileKey,omitempty"` - ProfileSharing bool `protobuf:"varint,10,opt,name=profileSharing,proto3" json:"profileSharing,omitempty"` - ProfileGivenName *string `protobuf:"bytes,11,opt,name=profileGivenName,proto3,oneof" json:"profileGivenName,omitempty"` - ProfileFamilyName *string `protobuf:"bytes,12,opt,name=profileFamilyName,proto3,oneof" json:"profileFamilyName,omitempty"` - HideStory bool `protobuf:"varint,13,opt,name=hideStory,proto3" json:"hideStory,omitempty"` - IdentityKey []byte `protobuf:"bytes,14,opt,name=identityKey,proto3,oneof" json:"identityKey,omitempty"` - IdentityState Contact_IdentityState `protobuf:"varint,15,opt,name=identityState,proto3,enum=signal.backup.Contact_IdentityState" json:"identityState,omitempty"` - Nickname *Contact_Name `protobuf:"bytes,16,opt,name=nickname,proto3" json:"nickname,omitempty"` // absent iff both `given` and `family` are empty - Note string `protobuf:"bytes,17,opt,name=note,proto3" json:"note,omitempty"` - SystemGivenName string `protobuf:"bytes,18,opt,name=systemGivenName,proto3" json:"systemGivenName,omitempty"` - SystemFamilyName string `protobuf:"bytes,19,opt,name=systemFamilyName,proto3" json:"systemFamilyName,omitempty"` - SystemNickname string `protobuf:"bytes,20,opt,name=systemNickname,proto3" json:"systemNickname,omitempty"` - AvatarColor *AvatarColor `protobuf:"varint,21,opt,name=avatarColor,proto3,enum=signal.backup.AvatarColor,oneof" json:"avatarColor,omitempty"` - // Opaque blob containing key transparency data for the contact - KeyTransparencyData []byte `protobuf:"bytes,22,opt,name=keyTransparencyData,proto3,oneof" json:"keyTransparencyData,omitempty"` - BlockedAtTimestamp uint64 `protobuf:"varint,23,opt,name=blockedAtTimestamp,proto3" json:"blockedAtTimestamp,omitempty"` // if `blocked` is true, 0 means unknown block time - SharedName *Contact_Name `protobuf:"bytes,24,opt,name=sharedName,proto3" json:"sharedName,omitempty"` // absent iff both `given` and `family` are empty, name provided by third party + Registration isContact_Registration `protobuf_oneof:"registration"` + ProfileKey []byte `protobuf:"bytes,9,opt,name=profileKey,proto3,oneof" json:"profileKey,omitempty"` + ProfileSharing bool `protobuf:"varint,10,opt,name=profileSharing,proto3" json:"profileSharing,omitempty"` + ProfileGivenName *string `protobuf:"bytes,11,opt,name=profileGivenName,proto3,oneof" json:"profileGivenName,omitempty"` + ProfileFamilyName *string `protobuf:"bytes,12,opt,name=profileFamilyName,proto3,oneof" json:"profileFamilyName,omitempty"` + HideStory bool `protobuf:"varint,13,opt,name=hideStory,proto3" json:"hideStory,omitempty"` + IdentityKey []byte `protobuf:"bytes,14,opt,name=identityKey,proto3,oneof" json:"identityKey,omitempty"` + IdentityState Contact_IdentityState `protobuf:"varint,15,opt,name=identityState,proto3,enum=signal.backup.Contact_IdentityState" json:"identityState,omitempty"` + Nickname *Contact_Name `protobuf:"bytes,16,opt,name=nickname,proto3" json:"nickname,omitempty"` // absent iff both `given` and `family` are empty + Note string `protobuf:"bytes,17,opt,name=note,proto3" json:"note,omitempty"` + SystemGivenName string `protobuf:"bytes,18,opt,name=systemGivenName,proto3" json:"systemGivenName,omitempty"` + SystemFamilyName string `protobuf:"bytes,19,opt,name=systemFamilyName,proto3" json:"systemFamilyName,omitempty"` + SystemNickname string `protobuf:"bytes,20,opt,name=systemNickname,proto3" json:"systemNickname,omitempty"` + AvatarColor *AvatarColor `protobuf:"varint,21,opt,name=avatarColor,proto3,enum=signal.backup.AvatarColor,oneof" json:"avatarColor,omitempty"` + KeyTransparencyData []byte `protobuf:"bytes,22,opt,name=keyTransparencyData,proto3,oneof" json:"keyTransparencyData,omitempty"` + BlockedAtTimestamp uint64 `protobuf:"varint,23,opt,name=blockedAtTimestamp,proto3" json:"blockedAtTimestamp,omitempty"` // if `blocked` is true, 0 means unknown block time unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2982,13 +2972,6 @@ func (x *Contact) GetBlockedAtTimestamp() uint64 { return 0 } -func (x *Contact) GetSharedName() *Contact_Name { - if x != nil { - return x.SharedName - } - return nil -} - type isContact_Registration interface { isContact_Registration() } @@ -4644,9 +4627,6 @@ type ContactAttachment struct { Address []*ContactAttachment_PostalAddress `protobuf:"bytes,5,rep,name=address,proto3" json:"address,omitempty"` Avatar *FilePointer `protobuf:"bytes,6,opt,name=avatar,proto3,oneof" json:"avatar,omitempty"` Organization string `protobuf:"bytes,7,opt,name=organization,proto3" json:"organization,omitempty"` - Aci []byte `protobuf:"bytes,8,opt,name=aci,proto3" json:"aci,omitempty"` // should be 16 bytes - Nickname *ContactAttachment_SignalNickname `protobuf:"bytes,9,opt,name=nickname,proto3,oneof" json:"nickname,omitempty"` // absent iff both `given` and `family` are empty - Note string `protobuf:"bytes,10,opt,name=note,proto3" json:"note,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -4723,27 +4703,6 @@ func (x *ContactAttachment) GetOrganization() string { return "" } -func (x *ContactAttachment) GetAci() []byte { - if x != nil { - return x.Aci - } - return nil -} - -func (x *ContactAttachment) GetNickname() *ContactAttachment_SignalNickname { - if x != nil { - return x.Nickname - } - return nil -} - -func (x *ContactAttachment) GetNote() string { - if x != nil { - return x.Note - } - return "" -} - type StickerMessage struct { state protoimpl.MessageState `protogen:"open.v1"` Sticker *Sticker `protobuf:"bytes,1,opt,name=sticker,proto3" json:"sticker,omitempty"` @@ -5072,13 +5031,8 @@ type FilePointer struct { Caption *string `protobuf:"bytes,10,opt,name=caption,proto3,oneof" json:"caption,omitempty"` BlurHash *string `protobuf:"bytes,11,opt,name=blurHash,proto3,oneof" json:"blurHash,omitempty"` LocatorInfo *FilePointer_LocatorInfo `protobuf:"bytes,13,opt,name=locatorInfo,proto3" json:"locatorInfo,omitempty"` - // Waveform for audio attachments. Each byte represents a "bar" in the - // waveform, with 0 as silence 255 as loudest. At most 100 bytes/bars. - AudioWaveform []byte `protobuf:"bytes,14,opt,name=audioWaveform,proto3,oneof" json:"audioWaveform,omitempty"` - // Duration of an audio attachment, in seconds. - AudioDurationSeconds *float32 `protobuf:"fixed32,15,opt,name=audioDurationSeconds,proto3,oneof" json:"audioDurationSeconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FilePointer) Reset() { @@ -5174,20 +5128,6 @@ func (x *FilePointer) GetLocatorInfo() *FilePointer_LocatorInfo { return nil } -func (x *FilePointer) GetAudioWaveform() []byte { - if x != nil { - return x.AudioWaveform - } - return nil -} - -func (x *FilePointer) GetAudioDurationSeconds() float32 { - if x != nil && x.AudioDurationSeconds != nil { - return *x.AudioDurationSeconds - } - return 0 -} - type Quote struct { state protoimpl.MessageState `protogen:"open.v1"` TargetSentTimestamp *uint64 `protobuf:"varint,1,opt,name=targetSentTimestamp,proto3,oneof" json:"targetSentTimestamp,omitempty"` // null if the target message could not be found at time of quote insert @@ -6110,7 +6050,6 @@ type LearnedProfileChatUpdate struct { // // *LearnedProfileChatUpdate_E164 // *LearnedProfileChatUpdate_Username - // *LearnedProfileChatUpdate_SharedName PreviousName isLearnedProfileChatUpdate_PreviousName `protobuf_oneof:"previousName"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -6171,15 +6110,6 @@ func (x *LearnedProfileChatUpdate) GetUsername() string { return "" } -func (x *LearnedProfileChatUpdate) GetSharedName() string { - if x != nil { - if x, ok := x.PreviousName.(*LearnedProfileChatUpdate_SharedName); ok { - return x.SharedName - } - } - return "" -} - type isLearnedProfileChatUpdate_PreviousName interface { isLearnedProfileChatUpdate_PreviousName() } @@ -6192,16 +6122,10 @@ type LearnedProfileChatUpdate_Username struct { Username string `protobuf:"bytes,2,opt,name=username,proto3,oneof"` } -type LearnedProfileChatUpdate_SharedName struct { - SharedName string `protobuf:"bytes,3,opt,name=sharedName,proto3,oneof"` -} - func (*LearnedProfileChatUpdate_E164) isLearnedProfileChatUpdate_PreviousName() {} func (*LearnedProfileChatUpdate_Username) isLearnedProfileChatUpdate_PreviousName() {} -func (*LearnedProfileChatUpdate_SharedName) isLearnedProfileChatUpdate_PreviousName() {} - type ThreadMergeChatUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` PreviousE164 uint64 `protobuf:"varint,1,opt,name=previousE164,proto3" json:"previousE164,omitempty"` @@ -6634,58 +6558,6 @@ func (x *GroupMembershipAccessLevelChangeUpdate) GetAccessLevel() GroupV2AccessL return GroupV2AccessLevel_UNKNOWN } -type GroupMemberLabelAccessLevelChangeUpdate struct { - state protoimpl.MessageState `protogen:"open.v1"` - UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` - AccessLevel GroupV2AccessLevel `protobuf:"varint,2,opt,name=accessLevel,proto3,enum=signal.backup.GroupV2AccessLevel" json:"accessLevel,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GroupMemberLabelAccessLevelChangeUpdate) Reset() { - *x = GroupMemberLabelAccessLevelChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[50] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GroupMemberLabelAccessLevelChangeUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupMemberLabelAccessLevelChangeUpdate) ProtoMessage() {} - -func (x *GroupMemberLabelAccessLevelChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[50] - 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 GroupMemberLabelAccessLevelChangeUpdate.ProtoReflect.Descriptor instead. -func (*GroupMemberLabelAccessLevelChangeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{50} -} - -func (x *GroupMemberLabelAccessLevelChangeUpdate) GetUpdaterAci() []byte { - if x != nil { - return x.UpdaterAci - } - return nil -} - -func (x *GroupMemberLabelAccessLevelChangeUpdate) GetAccessLevel() GroupV2AccessLevel { - if x != nil { - return x.AccessLevel - } - return GroupV2AccessLevel_UNKNOWN -} - type GroupAttributesAccessLevelChangeUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` @@ -6696,7 +6568,7 @@ type GroupAttributesAccessLevelChangeUpdate struct { func (x *GroupAttributesAccessLevelChangeUpdate) Reset() { *x = GroupAttributesAccessLevelChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[51] + mi := &file_backuppb_Backup_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6708,7 +6580,7 @@ func (x *GroupAttributesAccessLevelChangeUpdate) String() string { func (*GroupAttributesAccessLevelChangeUpdate) ProtoMessage() {} func (x *GroupAttributesAccessLevelChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[51] + mi := &file_backuppb_Backup_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6721,7 +6593,7 @@ func (x *GroupAttributesAccessLevelChangeUpdate) ProtoReflect() protoreflect.Mes // Deprecated: Use GroupAttributesAccessLevelChangeUpdate.ProtoReflect.Descriptor instead. func (*GroupAttributesAccessLevelChangeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{51} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{50} } func (x *GroupAttributesAccessLevelChangeUpdate) GetUpdaterAci() []byte { @@ -6738,6 +6610,102 @@ func (x *GroupAttributesAccessLevelChangeUpdate) GetAccessLevel() GroupV2AccessL return GroupV2AccessLevel_UNKNOWN } +type GroupMemberLabelAccessLevelChangeUpdate struct { + state protoimpl.MessageState `protogen:"open.v1"` + UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` + AccessLevel GroupV2AccessLevel `protobuf:"varint,2,opt,name=accessLevel,proto3,enum=signal.backup.GroupV2AccessLevel" json:"accessLevel,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupMemberLabelAccessLevelChangeUpdate) Reset() { + *x = GroupMemberLabelAccessLevelChangeUpdate{} + mi := &file_backuppb_Backup_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupMemberLabelAccessLevelChangeUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupMemberLabelAccessLevelChangeUpdate) ProtoMessage() {} + +func (x *GroupMemberLabelAccessLevelChangeUpdate) ProtoReflect() protoreflect.Message { + mi := &file_backuppb_Backup_proto_msgTypes[51] + 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 GroupMemberLabelAccessLevelChangeUpdate.ProtoReflect.Descriptor instead. +func (*GroupMemberLabelAccessLevelChangeUpdate) Descriptor() ([]byte, []int) { + return file_backuppb_Backup_proto_rawDescGZIP(), []int{51} +} + +func (x *GroupMemberLabelAccessLevelChangeUpdate) GetUpdaterAci() []byte { + if x != nil { + return x.UpdaterAci + } + return nil +} + +func (x *GroupMemberLabelAccessLevelChangeUpdate) GetAccessLevel() GroupV2AccessLevel { + if x != nil { + return x.AccessLevel + } + return GroupV2AccessLevel_UNKNOWN +} + +type GroupTerminateChangeUpdate struct { + state protoimpl.MessageState `protogen:"open.v1"` + UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GroupTerminateChangeUpdate) Reset() { + *x = GroupTerminateChangeUpdate{} + mi := &file_backuppb_Backup_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GroupTerminateChangeUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GroupTerminateChangeUpdate) ProtoMessage() {} + +func (x *GroupTerminateChangeUpdate) ProtoReflect() protoreflect.Message { + mi := &file_backuppb_Backup_proto_msgTypes[52] + 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 GroupTerminateChangeUpdate.ProtoReflect.Descriptor instead. +func (*GroupTerminateChangeUpdate) Descriptor() ([]byte, []int) { + return file_backuppb_Backup_proto_rawDescGZIP(), []int{52} +} + +func (x *GroupTerminateChangeUpdate) GetUpdaterAci() []byte { + if x != nil { + return x.UpdaterAci + } + return nil +} + type GroupAnnouncementOnlyChangeUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` @@ -6748,7 +6716,7 @@ type GroupAnnouncementOnlyChangeUpdate struct { func (x *GroupAnnouncementOnlyChangeUpdate) Reset() { *x = GroupAnnouncementOnlyChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[52] + mi := &file_backuppb_Backup_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6760,7 +6728,7 @@ func (x *GroupAnnouncementOnlyChangeUpdate) String() string { func (*GroupAnnouncementOnlyChangeUpdate) ProtoMessage() {} func (x *GroupAnnouncementOnlyChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[52] + mi := &file_backuppb_Backup_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6773,7 +6741,7 @@ func (x *GroupAnnouncementOnlyChangeUpdate) ProtoReflect() protoreflect.Message // Deprecated: Use GroupAnnouncementOnlyChangeUpdate.ProtoReflect.Descriptor instead. func (*GroupAnnouncementOnlyChangeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{52} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{53} } func (x *GroupAnnouncementOnlyChangeUpdate) GetUpdaterAci() []byte { @@ -6802,7 +6770,7 @@ type GroupAdminStatusUpdate struct { func (x *GroupAdminStatusUpdate) Reset() { *x = GroupAdminStatusUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[53] + mi := &file_backuppb_Backup_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6814,7 +6782,7 @@ func (x *GroupAdminStatusUpdate) String() string { func (*GroupAdminStatusUpdate) ProtoMessage() {} func (x *GroupAdminStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[53] + mi := &file_backuppb_Backup_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6827,7 +6795,7 @@ func (x *GroupAdminStatusUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupAdminStatusUpdate.ProtoReflect.Descriptor instead. func (*GroupAdminStatusUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{53} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{54} } func (x *GroupAdminStatusUpdate) GetUpdaterAci() []byte { @@ -6860,7 +6828,7 @@ type GroupMemberLeftUpdate struct { func (x *GroupMemberLeftUpdate) Reset() { *x = GroupMemberLeftUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[54] + mi := &file_backuppb_Backup_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6872,7 +6840,7 @@ func (x *GroupMemberLeftUpdate) String() string { func (*GroupMemberLeftUpdate) ProtoMessage() {} func (x *GroupMemberLeftUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[54] + mi := &file_backuppb_Backup_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6885,7 +6853,7 @@ func (x *GroupMemberLeftUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberLeftUpdate.ProtoReflect.Descriptor instead. func (*GroupMemberLeftUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{54} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{55} } func (x *GroupMemberLeftUpdate) GetAci() []byte { @@ -6905,7 +6873,7 @@ type GroupMemberRemovedUpdate struct { func (x *GroupMemberRemovedUpdate) Reset() { *x = GroupMemberRemovedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[55] + mi := &file_backuppb_Backup_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6917,7 +6885,7 @@ func (x *GroupMemberRemovedUpdate) String() string { func (*GroupMemberRemovedUpdate) ProtoMessage() {} func (x *GroupMemberRemovedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[55] + mi := &file_backuppb_Backup_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6930,7 +6898,7 @@ func (x *GroupMemberRemovedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberRemovedUpdate.ProtoReflect.Descriptor instead. func (*GroupMemberRemovedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{55} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{56} } func (x *GroupMemberRemovedUpdate) GetRemoverAci() []byte { @@ -6956,7 +6924,7 @@ type SelfInvitedToGroupUpdate struct { func (x *SelfInvitedToGroupUpdate) Reset() { *x = SelfInvitedToGroupUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[56] + mi := &file_backuppb_Backup_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6968,7 +6936,7 @@ func (x *SelfInvitedToGroupUpdate) String() string { func (*SelfInvitedToGroupUpdate) ProtoMessage() {} func (x *SelfInvitedToGroupUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[56] + mi := &file_backuppb_Backup_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6981,7 +6949,7 @@ func (x *SelfInvitedToGroupUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SelfInvitedToGroupUpdate.ProtoReflect.Descriptor instead. func (*SelfInvitedToGroupUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{56} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{57} } func (x *SelfInvitedToGroupUpdate) GetInviterAci() []byte { @@ -7001,7 +6969,7 @@ type SelfInvitedOtherUserToGroupUpdate struct { func (x *SelfInvitedOtherUserToGroupUpdate) Reset() { *x = SelfInvitedOtherUserToGroupUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[57] + mi := &file_backuppb_Backup_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7013,7 +6981,7 @@ func (x *SelfInvitedOtherUserToGroupUpdate) String() string { func (*SelfInvitedOtherUserToGroupUpdate) ProtoMessage() {} func (x *SelfInvitedOtherUserToGroupUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[57] + mi := &file_backuppb_Backup_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7026,7 +6994,7 @@ func (x *SelfInvitedOtherUserToGroupUpdate) ProtoReflect() protoreflect.Message // Deprecated: Use SelfInvitedOtherUserToGroupUpdate.ProtoReflect.Descriptor instead. func (*SelfInvitedOtherUserToGroupUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{57} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{58} } func (x *SelfInvitedOtherUserToGroupUpdate) GetInviteeServiceId() []byte { @@ -7047,7 +7015,7 @@ type GroupUnknownInviteeUpdate struct { func (x *GroupUnknownInviteeUpdate) Reset() { *x = GroupUnknownInviteeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[58] + mi := &file_backuppb_Backup_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7059,7 +7027,7 @@ func (x *GroupUnknownInviteeUpdate) String() string { func (*GroupUnknownInviteeUpdate) ProtoMessage() {} func (x *GroupUnknownInviteeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[58] + mi := &file_backuppb_Backup_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7072,7 +7040,7 @@ func (x *GroupUnknownInviteeUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupUnknownInviteeUpdate.ProtoReflect.Descriptor instead. func (*GroupUnknownInviteeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{58} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{59} } func (x *GroupUnknownInviteeUpdate) GetInviterAci() []byte { @@ -7099,7 +7067,7 @@ type GroupInvitationAcceptedUpdate struct { func (x *GroupInvitationAcceptedUpdate) Reset() { *x = GroupInvitationAcceptedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[59] + mi := &file_backuppb_Backup_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7111,7 +7079,7 @@ func (x *GroupInvitationAcceptedUpdate) String() string { func (*GroupInvitationAcceptedUpdate) ProtoMessage() {} func (x *GroupInvitationAcceptedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[59] + mi := &file_backuppb_Backup_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7124,7 +7092,7 @@ func (x *GroupInvitationAcceptedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInvitationAcceptedUpdate.ProtoReflect.Descriptor instead. func (*GroupInvitationAcceptedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{59} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{60} } func (x *GroupInvitationAcceptedUpdate) GetInviterAci() []byte { @@ -7152,7 +7120,7 @@ type GroupInvitationDeclinedUpdate struct { func (x *GroupInvitationDeclinedUpdate) Reset() { *x = GroupInvitationDeclinedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[60] + mi := &file_backuppb_Backup_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7164,7 +7132,7 @@ func (x *GroupInvitationDeclinedUpdate) String() string { func (*GroupInvitationDeclinedUpdate) ProtoMessage() {} func (x *GroupInvitationDeclinedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[60] + mi := &file_backuppb_Backup_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7177,7 +7145,7 @@ func (x *GroupInvitationDeclinedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInvitationDeclinedUpdate.ProtoReflect.Descriptor instead. func (*GroupInvitationDeclinedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{60} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{61} } func (x *GroupInvitationDeclinedUpdate) GetInviterAci() []byte { @@ -7203,7 +7171,7 @@ type GroupMemberJoinedUpdate struct { func (x *GroupMemberJoinedUpdate) Reset() { *x = GroupMemberJoinedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[61] + mi := &file_backuppb_Backup_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7215,7 +7183,7 @@ func (x *GroupMemberJoinedUpdate) String() string { func (*GroupMemberJoinedUpdate) ProtoMessage() {} func (x *GroupMemberJoinedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[61] + mi := &file_backuppb_Backup_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7228,7 +7196,7 @@ func (x *GroupMemberJoinedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberJoinedUpdate.ProtoReflect.Descriptor instead. func (*GroupMemberJoinedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{61} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{62} } func (x *GroupMemberJoinedUpdate) GetNewMemberAci() []byte { @@ -7251,7 +7219,7 @@ type GroupMemberAddedUpdate struct { func (x *GroupMemberAddedUpdate) Reset() { *x = GroupMemberAddedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[62] + mi := &file_backuppb_Backup_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7263,7 +7231,7 @@ func (x *GroupMemberAddedUpdate) String() string { func (*GroupMemberAddedUpdate) ProtoMessage() {} func (x *GroupMemberAddedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[62] + mi := &file_backuppb_Backup_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7276,7 +7244,7 @@ func (x *GroupMemberAddedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberAddedUpdate.ProtoReflect.Descriptor instead. func (*GroupMemberAddedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{62} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{63} } func (x *GroupMemberAddedUpdate) GetUpdaterAci() []byte { @@ -7317,7 +7285,7 @@ type GroupSelfInvitationRevokedUpdate struct { func (x *GroupSelfInvitationRevokedUpdate) Reset() { *x = GroupSelfInvitationRevokedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[63] + mi := &file_backuppb_Backup_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7329,7 +7297,7 @@ func (x *GroupSelfInvitationRevokedUpdate) String() string { func (*GroupSelfInvitationRevokedUpdate) ProtoMessage() {} func (x *GroupSelfInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[63] + mi := &file_backuppb_Backup_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7342,7 +7310,7 @@ func (x *GroupSelfInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupSelfInvitationRevokedUpdate.ProtoReflect.Descriptor instead. func (*GroupSelfInvitationRevokedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{63} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{64} } func (x *GroupSelfInvitationRevokedUpdate) GetRevokerAci() []byte { @@ -7368,7 +7336,7 @@ type GroupInvitationRevokedUpdate struct { func (x *GroupInvitationRevokedUpdate) Reset() { *x = GroupInvitationRevokedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[64] + mi := &file_backuppb_Backup_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7380,7 +7348,7 @@ func (x *GroupInvitationRevokedUpdate) String() string { func (*GroupInvitationRevokedUpdate) ProtoMessage() {} func (x *GroupInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[64] + mi := &file_backuppb_Backup_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7393,7 +7361,7 @@ func (x *GroupInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInvitationRevokedUpdate.ProtoReflect.Descriptor instead. func (*GroupInvitationRevokedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{64} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{65} } func (x *GroupInvitationRevokedUpdate) GetUpdaterAci() []byte { @@ -7419,7 +7387,7 @@ type GroupJoinRequestUpdate struct { func (x *GroupJoinRequestUpdate) Reset() { *x = GroupJoinRequestUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[65] + mi := &file_backuppb_Backup_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7431,7 +7399,7 @@ func (x *GroupJoinRequestUpdate) String() string { func (*GroupJoinRequestUpdate) ProtoMessage() {} func (x *GroupJoinRequestUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[65] + mi := &file_backuppb_Backup_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7444,7 +7412,7 @@ func (x *GroupJoinRequestUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupJoinRequestUpdate.ProtoReflect.Descriptor instead. func (*GroupJoinRequestUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{65} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{66} } func (x *GroupJoinRequestUpdate) GetRequestorAci() []byte { @@ -7466,7 +7434,7 @@ type GroupJoinRequestApprovalUpdate struct { func (x *GroupJoinRequestApprovalUpdate) Reset() { *x = GroupJoinRequestApprovalUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[66] + mi := &file_backuppb_Backup_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7478,7 +7446,7 @@ func (x *GroupJoinRequestApprovalUpdate) String() string { func (*GroupJoinRequestApprovalUpdate) ProtoMessage() {} func (x *GroupJoinRequestApprovalUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[66] + mi := &file_backuppb_Backup_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7491,7 +7459,7 @@ func (x *GroupJoinRequestApprovalUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupJoinRequestApprovalUpdate.ProtoReflect.Descriptor instead. func (*GroupJoinRequestApprovalUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{66} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{67} } func (x *GroupJoinRequestApprovalUpdate) GetRequestorAci() []byte { @@ -7524,7 +7492,7 @@ type GroupJoinRequestCanceledUpdate struct { func (x *GroupJoinRequestCanceledUpdate) Reset() { *x = GroupJoinRequestCanceledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[67] + mi := &file_backuppb_Backup_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7536,7 +7504,7 @@ func (x *GroupJoinRequestCanceledUpdate) String() string { func (*GroupJoinRequestCanceledUpdate) ProtoMessage() {} func (x *GroupJoinRequestCanceledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[67] + mi := &file_backuppb_Backup_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7549,7 +7517,7 @@ func (x *GroupJoinRequestCanceledUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupJoinRequestCanceledUpdate.ProtoReflect.Descriptor instead. func (*GroupJoinRequestCanceledUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{67} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{68} } func (x *GroupJoinRequestCanceledUpdate) GetRequestorAci() []byte { @@ -7575,7 +7543,7 @@ type GroupSequenceOfRequestsAndCancelsUpdate struct { func (x *GroupSequenceOfRequestsAndCancelsUpdate) Reset() { *x = GroupSequenceOfRequestsAndCancelsUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[68] + mi := &file_backuppb_Backup_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7587,7 +7555,7 @@ func (x *GroupSequenceOfRequestsAndCancelsUpdate) String() string { func (*GroupSequenceOfRequestsAndCancelsUpdate) ProtoMessage() {} func (x *GroupSequenceOfRequestsAndCancelsUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[68] + mi := &file_backuppb_Backup_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7600,7 +7568,7 @@ func (x *GroupSequenceOfRequestsAndCancelsUpdate) ProtoReflect() protoreflect.Me // Deprecated: Use GroupSequenceOfRequestsAndCancelsUpdate.ProtoReflect.Descriptor instead. func (*GroupSequenceOfRequestsAndCancelsUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{68} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{69} } func (x *GroupSequenceOfRequestsAndCancelsUpdate) GetRequestorAci() []byte { @@ -7626,7 +7594,7 @@ type GroupInviteLinkResetUpdate struct { func (x *GroupInviteLinkResetUpdate) Reset() { *x = GroupInviteLinkResetUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[69] + mi := &file_backuppb_Backup_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7638,7 +7606,7 @@ func (x *GroupInviteLinkResetUpdate) String() string { func (*GroupInviteLinkResetUpdate) ProtoMessage() {} func (x *GroupInviteLinkResetUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[69] + mi := &file_backuppb_Backup_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7651,7 +7619,7 @@ func (x *GroupInviteLinkResetUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInviteLinkResetUpdate.ProtoReflect.Descriptor instead. func (*GroupInviteLinkResetUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{69} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{70} } func (x *GroupInviteLinkResetUpdate) GetUpdaterAci() []byte { @@ -7671,7 +7639,7 @@ type GroupInviteLinkEnabledUpdate struct { func (x *GroupInviteLinkEnabledUpdate) Reset() { *x = GroupInviteLinkEnabledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[70] + mi := &file_backuppb_Backup_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7683,7 +7651,7 @@ func (x *GroupInviteLinkEnabledUpdate) String() string { func (*GroupInviteLinkEnabledUpdate) ProtoMessage() {} func (x *GroupInviteLinkEnabledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[70] + mi := &file_backuppb_Backup_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7696,7 +7664,7 @@ func (x *GroupInviteLinkEnabledUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInviteLinkEnabledUpdate.ProtoReflect.Descriptor instead. func (*GroupInviteLinkEnabledUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{70} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{71} } func (x *GroupInviteLinkEnabledUpdate) GetUpdaterAci() []byte { @@ -7723,7 +7691,7 @@ type GroupInviteLinkAdminApprovalUpdate struct { func (x *GroupInviteLinkAdminApprovalUpdate) Reset() { *x = GroupInviteLinkAdminApprovalUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[71] + mi := &file_backuppb_Backup_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7735,7 +7703,7 @@ func (x *GroupInviteLinkAdminApprovalUpdate) String() string { func (*GroupInviteLinkAdminApprovalUpdate) ProtoMessage() {} func (x *GroupInviteLinkAdminApprovalUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[71] + mi := &file_backuppb_Backup_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7748,7 +7716,7 @@ func (x *GroupInviteLinkAdminApprovalUpdate) ProtoReflect() protoreflect.Message // Deprecated: Use GroupInviteLinkAdminApprovalUpdate.ProtoReflect.Descriptor instead. func (*GroupInviteLinkAdminApprovalUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{71} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{72} } func (x *GroupInviteLinkAdminApprovalUpdate) GetUpdaterAci() []byte { @@ -7774,7 +7742,7 @@ type GroupInviteLinkDisabledUpdate struct { func (x *GroupInviteLinkDisabledUpdate) Reset() { *x = GroupInviteLinkDisabledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[72] + mi := &file_backuppb_Backup_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7786,7 +7754,7 @@ func (x *GroupInviteLinkDisabledUpdate) String() string { func (*GroupInviteLinkDisabledUpdate) ProtoMessage() {} func (x *GroupInviteLinkDisabledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[72] + mi := &file_backuppb_Backup_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7799,7 +7767,7 @@ func (x *GroupInviteLinkDisabledUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupInviteLinkDisabledUpdate.ProtoReflect.Descriptor instead. func (*GroupInviteLinkDisabledUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{72} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{73} } func (x *GroupInviteLinkDisabledUpdate) GetUpdaterAci() []byte { @@ -7818,7 +7786,7 @@ type GroupMemberJoinedByLinkUpdate struct { func (x *GroupMemberJoinedByLinkUpdate) Reset() { *x = GroupMemberJoinedByLinkUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[73] + mi := &file_backuppb_Backup_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7830,7 +7798,7 @@ func (x *GroupMemberJoinedByLinkUpdate) String() string { func (*GroupMemberJoinedByLinkUpdate) ProtoMessage() {} func (x *GroupMemberJoinedByLinkUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[73] + mi := &file_backuppb_Backup_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7843,7 +7811,7 @@ func (x *GroupMemberJoinedByLinkUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMemberJoinedByLinkUpdate.ProtoReflect.Descriptor instead. func (*GroupMemberJoinedByLinkUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{73} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{74} } func (x *GroupMemberJoinedByLinkUpdate) GetNewMemberAci() []byte { @@ -7862,7 +7830,7 @@ type GroupV2MigrationUpdate struct { func (x *GroupV2MigrationUpdate) Reset() { *x = GroupV2MigrationUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[74] + mi := &file_backuppb_Backup_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7874,7 +7842,7 @@ func (x *GroupV2MigrationUpdate) String() string { func (*GroupV2MigrationUpdate) ProtoMessage() {} func (x *GroupV2MigrationUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[74] + mi := &file_backuppb_Backup_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7887,7 +7855,7 @@ func (x *GroupV2MigrationUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupV2MigrationUpdate.ProtoReflect.Descriptor instead. func (*GroupV2MigrationUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{74} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{75} } // Another user migrated gv1->gv2 but was unable to add @@ -7900,7 +7868,7 @@ type GroupV2MigrationSelfInvitedUpdate struct { func (x *GroupV2MigrationSelfInvitedUpdate) Reset() { *x = GroupV2MigrationSelfInvitedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[75] + mi := &file_backuppb_Backup_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7912,7 +7880,7 @@ func (x *GroupV2MigrationSelfInvitedUpdate) String() string { func (*GroupV2MigrationSelfInvitedUpdate) ProtoMessage() {} func (x *GroupV2MigrationSelfInvitedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[75] + mi := &file_backuppb_Backup_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7925,7 +7893,7 @@ func (x *GroupV2MigrationSelfInvitedUpdate) ProtoReflect() protoreflect.Message // Deprecated: Use GroupV2MigrationSelfInvitedUpdate.ProtoReflect.Descriptor instead. func (*GroupV2MigrationSelfInvitedUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{75} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{76} } // The local user migrated gv1->gv2 but was unable to @@ -7940,7 +7908,7 @@ type GroupV2MigrationInvitedMembersUpdate struct { func (x *GroupV2MigrationInvitedMembersUpdate) Reset() { *x = GroupV2MigrationInvitedMembersUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[76] + mi := &file_backuppb_Backup_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7952,7 +7920,7 @@ func (x *GroupV2MigrationInvitedMembersUpdate) String() string { func (*GroupV2MigrationInvitedMembersUpdate) ProtoMessage() {} func (x *GroupV2MigrationInvitedMembersUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[76] + mi := &file_backuppb_Backup_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7965,7 +7933,7 @@ func (x *GroupV2MigrationInvitedMembersUpdate) ProtoReflect() protoreflect.Messa // Deprecated: Use GroupV2MigrationInvitedMembersUpdate.ProtoReflect.Descriptor instead. func (*GroupV2MigrationInvitedMembersUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{76} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{77} } func (x *GroupV2MigrationInvitedMembersUpdate) GetInvitedMembersCount() uint32 { @@ -7987,7 +7955,7 @@ type GroupV2MigrationDroppedMembersUpdate struct { func (x *GroupV2MigrationDroppedMembersUpdate) Reset() { *x = GroupV2MigrationDroppedMembersUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[77] + mi := &file_backuppb_Backup_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7999,7 +7967,7 @@ func (x *GroupV2MigrationDroppedMembersUpdate) String() string { func (*GroupV2MigrationDroppedMembersUpdate) ProtoMessage() {} func (x *GroupV2MigrationDroppedMembersUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[77] + mi := &file_backuppb_Backup_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8012,7 +7980,7 @@ func (x *GroupV2MigrationDroppedMembersUpdate) ProtoReflect() protoreflect.Messa // Deprecated: Use GroupV2MigrationDroppedMembersUpdate.ProtoReflect.Descriptor instead. func (*GroupV2MigrationDroppedMembersUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{77} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{78} } func (x *GroupV2MigrationDroppedMembersUpdate) GetDroppedMembersCount() uint32 { @@ -8033,7 +8001,7 @@ type GroupExpirationTimerUpdate struct { func (x *GroupExpirationTimerUpdate) Reset() { *x = GroupExpirationTimerUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[78] + mi := &file_backuppb_Backup_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8045,7 +8013,7 @@ func (x *GroupExpirationTimerUpdate) String() string { func (*GroupExpirationTimerUpdate) ProtoMessage() {} func (x *GroupExpirationTimerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[78] + mi := &file_backuppb_Backup_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8058,7 +8026,7 @@ func (x *GroupExpirationTimerUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupExpirationTimerUpdate.ProtoReflect.Descriptor instead. func (*GroupExpirationTimerUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{78} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{79} } func (x *GroupExpirationTimerUpdate) GetExpiresInMs() uint64 { @@ -8075,50 +8043,6 @@ func (x *GroupExpirationTimerUpdate) GetUpdaterAci() []byte { return nil } -type GroupTerminateChangeUpdate struct { - state protoimpl.MessageState `protogen:"open.v1"` - UpdaterAci []byte `protobuf:"bytes,1,opt,name=updaterAci,proto3,oneof" json:"updaterAci,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GroupTerminateChangeUpdate) Reset() { - *x = GroupTerminateChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GroupTerminateChangeUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupTerminateChangeUpdate) ProtoMessage() {} - -func (x *GroupTerminateChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[79] - 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 GroupTerminateChangeUpdate.ProtoReflect.Descriptor instead. -func (*GroupTerminateChangeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{79} -} - -func (x *GroupTerminateChangeUpdate) GetUpdaterAci() []byte { - if x != nil { - return x.UpdaterAci - } - return nil -} - type PollTerminateUpdate struct { state protoimpl.MessageState `protogen:"open.v1"` TargetSentTimestamp uint64 `protobuf:"varint,1,opt,name=targetSentTimestamp,proto3" json:"targetSentTimestamp,omitempty"` @@ -9363,50 +9287,6 @@ func (x *AccountData_AndroidSpecificSettings) GetNavigationBarSize() AccountData return AccountData_AndroidSpecificSettings_UNKNOWN_BAR_SIZE } -type AccountData_IOSSpecificSettings struct { - state protoimpl.MessageState `protogen:"open.v1"` - IsSystemCallLogEnabled bool `protobuf:"varint,1,opt,name=isSystemCallLogEnabled,proto3" json:"isSystemCallLogEnabled,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AccountData_IOSSpecificSettings) Reset() { - *x = AccountData_IOSSpecificSettings{} - mi := &file_backuppb_Backup_proto_msgTypes[92] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AccountData_IOSSpecificSettings) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccountData_IOSSpecificSettings) ProtoMessage() {} - -func (x *AccountData_IOSSpecificSettings) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[92] - 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 AccountData_IOSSpecificSettings.ProtoReflect.Descriptor instead. -func (*AccountData_IOSSpecificSettings) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{2, 6} -} - -func (x *AccountData_IOSSpecificSettings) GetIsSystemCallLogEnabled() bool { - if x != nil { - return x.IsSystemCallLogEnabled - } - return false -} - type Contact_Registered struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -9415,7 +9295,7 @@ type Contact_Registered struct { func (x *Contact_Registered) Reset() { *x = Contact_Registered{} - mi := &file_backuppb_Backup_proto_msgTypes[93] + mi := &file_backuppb_Backup_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9427,7 +9307,7 @@ func (x *Contact_Registered) String() string { func (*Contact_Registered) ProtoMessage() {} func (x *Contact_Registered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[93] + mi := &file_backuppb_Backup_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9452,7 +9332,7 @@ type Contact_NotRegistered struct { func (x *Contact_NotRegistered) Reset() { *x = Contact_NotRegistered{} - mi := &file_backuppb_Backup_proto_msgTypes[94] + mi := &file_backuppb_Backup_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9464,7 +9344,7 @@ func (x *Contact_NotRegistered) String() string { func (*Contact_NotRegistered) ProtoMessage() {} func (x *Contact_NotRegistered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[94] + mi := &file_backuppb_Backup_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9497,7 +9377,7 @@ type Contact_Name struct { func (x *Contact_Name) Reset() { *x = Contact_Name{} - mi := &file_backuppb_Backup_proto_msgTypes[95] + mi := &file_backuppb_Backup_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9509,7 +9389,7 @@ func (x *Contact_Name) String() string { func (*Contact_Name) ProtoMessage() {} func (x *Contact_Name) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[95] + mi := &file_backuppb_Backup_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9556,8 +9436,8 @@ type Group_GroupSnapshot struct { MembersPendingProfileKey []*Group_MemberPendingProfileKey `protobuf:"bytes,8,rep,name=membersPendingProfileKey,proto3" json:"membersPendingProfileKey,omitempty"` MembersPendingAdminApproval []*Group_MemberPendingAdminApproval `protobuf:"bytes,9,rep,name=membersPendingAdminApproval,proto3" json:"membersPendingAdminApproval,omitempty"` InviteLinkPassword []byte `protobuf:"bytes,10,opt,name=inviteLinkPassword,proto3" json:"inviteLinkPassword,omitempty"` - AnnouncementsOnly bool `protobuf:"varint,12,opt,name=announcementsOnly,proto3" json:"announcementsOnly,omitempty"` - MembersBanned []*Group_MemberBanned `protobuf:"bytes,13,rep,name=membersBanned,proto3" json:"membersBanned,omitempty"` + AnnouncementsOnly bool `protobuf:"varint,12,opt,name=announcements_only,json=announcementsOnly,proto3" json:"announcements_only,omitempty"` + MembersBanned []*Group_MemberBanned `protobuf:"bytes,13,rep,name=members_banned,json=membersBanned,proto3" json:"members_banned,omitempty"` Terminated bool `protobuf:"varint,14,opt,name=terminated,proto3" json:"terminated,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -9565,7 +9445,7 @@ type Group_GroupSnapshot struct { func (x *Group_GroupSnapshot) Reset() { *x = Group_GroupSnapshot{} - mi := &file_backuppb_Backup_proto_msgTypes[96] + mi := &file_backuppb_Backup_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9577,7 +9457,7 @@ func (x *Group_GroupSnapshot) String() string { func (*Group_GroupSnapshot) ProtoMessage() {} func (x *Group_GroupSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[96] + mi := &file_backuppb_Backup_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9701,7 +9581,7 @@ type Group_GroupAttributeBlob struct { func (x *Group_GroupAttributeBlob) Reset() { *x = Group_GroupAttributeBlob{} - mi := &file_backuppb_Backup_proto_msgTypes[97] + mi := &file_backuppb_Backup_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9713,7 +9593,7 @@ func (x *Group_GroupAttributeBlob) String() string { func (*Group_GroupAttributeBlob) ProtoMessage() {} func (x *Group_GroupAttributeBlob) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[97] + mi := &file_backuppb_Backup_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9813,7 +9693,7 @@ type Group_Member struct { func (x *Group_Member) Reset() { *x = Group_Member{} - mi := &file_backuppb_Backup_proto_msgTypes[98] + mi := &file_backuppb_Backup_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9825,7 +9705,7 @@ func (x *Group_Member) String() string { func (*Group_Member) ProtoMessage() {} func (x *Group_Member) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[98] + mi := &file_backuppb_Backup_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9887,7 +9767,7 @@ type Group_MemberPendingProfileKey struct { func (x *Group_MemberPendingProfileKey) Reset() { *x = Group_MemberPendingProfileKey{} - mi := &file_backuppb_Backup_proto_msgTypes[99] + mi := &file_backuppb_Backup_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9899,7 +9779,7 @@ func (x *Group_MemberPendingProfileKey) String() string { func (*Group_MemberPendingProfileKey) ProtoMessage() {} func (x *Group_MemberPendingProfileKey) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[99] + mi := &file_backuppb_Backup_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9946,7 +9826,7 @@ type Group_MemberPendingAdminApproval struct { func (x *Group_MemberPendingAdminApproval) Reset() { *x = Group_MemberPendingAdminApproval{} - mi := &file_backuppb_Backup_proto_msgTypes[100] + mi := &file_backuppb_Backup_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9958,7 +9838,7 @@ func (x *Group_MemberPendingAdminApproval) String() string { func (*Group_MemberPendingAdminApproval) ProtoMessage() {} func (x *Group_MemberPendingAdminApproval) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[100] + mi := &file_backuppb_Backup_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9998,7 +9878,7 @@ type Group_MemberBanned struct { func (x *Group_MemberBanned) Reset() { *x = Group_MemberBanned{} - mi := &file_backuppb_Backup_proto_msgTypes[101] + mi := &file_backuppb_Backup_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10010,7 +9890,7 @@ func (x *Group_MemberBanned) String() string { func (*Group_MemberBanned) ProtoMessage() {} func (x *Group_MemberBanned) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[101] + mi := &file_backuppb_Backup_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10052,7 +9932,7 @@ type Group_AccessControl struct { func (x *Group_AccessControl) Reset() { *x = Group_AccessControl{} - mi := &file_backuppb_Backup_proto_msgTypes[102] + mi := &file_backuppb_Backup_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10064,7 +9944,7 @@ func (x *Group_AccessControl) String() string { func (*Group_AccessControl) ProtoMessage() {} func (x *Group_AccessControl) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[102] + mi := &file_backuppb_Backup_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10120,7 +10000,7 @@ type ChatItem_IncomingMessageDetails struct { func (x *ChatItem_IncomingMessageDetails) Reset() { *x = ChatItem_IncomingMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[103] + mi := &file_backuppb_Backup_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10132,7 +10012,7 @@ func (x *ChatItem_IncomingMessageDetails) String() string { func (*ChatItem_IncomingMessageDetails) ProtoMessage() {} func (x *ChatItem_IncomingMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[103] + mi := &file_backuppb_Backup_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10186,7 +10066,7 @@ type ChatItem_OutgoingMessageDetails struct { func (x *ChatItem_OutgoingMessageDetails) Reset() { *x = ChatItem_OutgoingMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[104] + mi := &file_backuppb_Backup_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10198,7 +10078,7 @@ func (x *ChatItem_OutgoingMessageDetails) String() string { func (*ChatItem_OutgoingMessageDetails) ProtoMessage() {} func (x *ChatItem_OutgoingMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[104] + mi := &file_backuppb_Backup_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10236,7 +10116,7 @@ type ChatItem_DirectionlessMessageDetails struct { func (x *ChatItem_DirectionlessMessageDetails) Reset() { *x = ChatItem_DirectionlessMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[105] + mi := &file_backuppb_Backup_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10248,7 +10128,7 @@ func (x *ChatItem_DirectionlessMessageDetails) String() string { func (*ChatItem_DirectionlessMessageDetails) ProtoMessage() {} func (x *ChatItem_DirectionlessMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[105] + mi := &file_backuppb_Backup_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10278,7 +10158,7 @@ type ChatItem_PinDetails struct { func (x *ChatItem_PinDetails) Reset() { *x = ChatItem_PinDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[106] + mi := &file_backuppb_Backup_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10290,7 +10170,7 @@ func (x *ChatItem_PinDetails) String() string { func (*ChatItem_PinDetails) ProtoMessage() {} func (x *ChatItem_PinDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[106] + mi := &file_backuppb_Backup_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10362,7 +10242,7 @@ type SendStatus_Pending struct { func (x *SendStatus_Pending) Reset() { *x = SendStatus_Pending{} - mi := &file_backuppb_Backup_proto_msgTypes[107] + mi := &file_backuppb_Backup_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10374,7 +10254,7 @@ func (x *SendStatus_Pending) String() string { func (*SendStatus_Pending) ProtoMessage() {} func (x *SendStatus_Pending) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[107] + mi := &file_backuppb_Backup_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10399,7 +10279,7 @@ type SendStatus_Sent struct { func (x *SendStatus_Sent) Reset() { *x = SendStatus_Sent{} - mi := &file_backuppb_Backup_proto_msgTypes[108] + mi := &file_backuppb_Backup_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10411,7 +10291,7 @@ func (x *SendStatus_Sent) String() string { func (*SendStatus_Sent) ProtoMessage() {} func (x *SendStatus_Sent) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[108] + mi := &file_backuppb_Backup_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10443,7 +10323,7 @@ type SendStatus_Delivered struct { func (x *SendStatus_Delivered) Reset() { *x = SendStatus_Delivered{} - mi := &file_backuppb_Backup_proto_msgTypes[109] + mi := &file_backuppb_Backup_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10455,7 +10335,7 @@ func (x *SendStatus_Delivered) String() string { func (*SendStatus_Delivered) ProtoMessage() {} func (x *SendStatus_Delivered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[109] + mi := &file_backuppb_Backup_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10487,7 +10367,7 @@ type SendStatus_Read struct { func (x *SendStatus_Read) Reset() { *x = SendStatus_Read{} - mi := &file_backuppb_Backup_proto_msgTypes[110] + mi := &file_backuppb_Backup_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10499,7 +10379,7 @@ func (x *SendStatus_Read) String() string { func (*SendStatus_Read) ProtoMessage() {} func (x *SendStatus_Read) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[110] + mi := &file_backuppb_Backup_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10531,7 +10411,7 @@ type SendStatus_Viewed struct { func (x *SendStatus_Viewed) Reset() { *x = SendStatus_Viewed{} - mi := &file_backuppb_Backup_proto_msgTypes[111] + mi := &file_backuppb_Backup_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10543,7 +10423,7 @@ func (x *SendStatus_Viewed) String() string { func (*SendStatus_Viewed) ProtoMessage() {} func (x *SendStatus_Viewed) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[111] + mi := &file_backuppb_Backup_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10575,7 +10455,7 @@ type SendStatus_Skipped struct { func (x *SendStatus_Skipped) Reset() { *x = SendStatus_Skipped{} - mi := &file_backuppb_Backup_proto_msgTypes[112] + mi := &file_backuppb_Backup_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10587,7 +10467,7 @@ func (x *SendStatus_Skipped) String() string { func (*SendStatus_Skipped) ProtoMessage() {} func (x *SendStatus_Skipped) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[112] + mi := &file_backuppb_Backup_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10612,7 +10492,7 @@ type SendStatus_Failed struct { func (x *SendStatus_Failed) Reset() { *x = SendStatus_Failed{} - mi := &file_backuppb_Backup_proto_msgTypes[113] + mi := &file_backuppb_Backup_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10624,7 +10504,7 @@ func (x *SendStatus_Failed) String() string { func (*SendStatus_Failed) ProtoMessage() {} func (x *SendStatus_Failed) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[113] + mi := &file_backuppb_Backup_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10657,7 +10537,7 @@ type DirectStoryReplyMessage_TextReply struct { func (x *DirectStoryReplyMessage_TextReply) Reset() { *x = DirectStoryReplyMessage_TextReply{} - mi := &file_backuppb_Backup_proto_msgTypes[114] + mi := &file_backuppb_Backup_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10669,7 +10549,7 @@ func (x *DirectStoryReplyMessage_TextReply) String() string { func (*DirectStoryReplyMessage_TextReply) ProtoMessage() {} func (x *DirectStoryReplyMessage_TextReply) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[114] + mi := &file_backuppb_Backup_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10714,7 +10594,7 @@ type PaymentNotification_TransactionDetails struct { func (x *PaymentNotification_TransactionDetails) Reset() { *x = PaymentNotification_TransactionDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[115] + mi := &file_backuppb_Backup_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10726,7 +10606,7 @@ func (x *PaymentNotification_TransactionDetails) String() string { func (*PaymentNotification_TransactionDetails) ProtoMessage() {} func (x *PaymentNotification_TransactionDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[115] + mi := &file_backuppb_Backup_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10795,7 +10675,7 @@ type PaymentNotification_TransactionDetails_MobileCoinTxoIdentification struct { func (x *PaymentNotification_TransactionDetails_MobileCoinTxoIdentification) Reset() { *x = PaymentNotification_TransactionDetails_MobileCoinTxoIdentification{} - mi := &file_backuppb_Backup_proto_msgTypes[116] + mi := &file_backuppb_Backup_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10807,7 +10687,7 @@ func (x *PaymentNotification_TransactionDetails_MobileCoinTxoIdentification) Str func (*PaymentNotification_TransactionDetails_MobileCoinTxoIdentification) ProtoMessage() {} func (x *PaymentNotification_TransactionDetails_MobileCoinTxoIdentification) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[116] + mi := &file_backuppb_Backup_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10846,7 +10726,7 @@ type PaymentNotification_TransactionDetails_FailedTransaction struct { func (x *PaymentNotification_TransactionDetails_FailedTransaction) Reset() { *x = PaymentNotification_TransactionDetails_FailedTransaction{} - mi := &file_backuppb_Backup_proto_msgTypes[117] + mi := &file_backuppb_Backup_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10858,7 +10738,7 @@ func (x *PaymentNotification_TransactionDetails_FailedTransaction) String() stri func (*PaymentNotification_TransactionDetails_FailedTransaction) ProtoMessage() {} func (x *PaymentNotification_TransactionDetails_FailedTransaction) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[117] + mi := &file_backuppb_Backup_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10899,7 +10779,7 @@ type PaymentNotification_TransactionDetails_Transaction struct { func (x *PaymentNotification_TransactionDetails_Transaction) Reset() { *x = PaymentNotification_TransactionDetails_Transaction{} - mi := &file_backuppb_Backup_proto_msgTypes[118] + mi := &file_backuppb_Backup_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10911,7 +10791,7 @@ func (x *PaymentNotification_TransactionDetails_Transaction) String() string { func (*PaymentNotification_TransactionDetails_Transaction) ProtoMessage() {} func (x *PaymentNotification_TransactionDetails_Transaction) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[118] + mi := &file_backuppb_Backup_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10990,7 +10870,7 @@ type ContactAttachment_Name struct { func (x *ContactAttachment_Name) Reset() { *x = ContactAttachment_Name{} - mi := &file_backuppb_Backup_proto_msgTypes[119] + mi := &file_backuppb_Backup_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11002,7 +10882,7 @@ func (x *ContactAttachment_Name) String() string { func (*ContactAttachment_Name) ProtoMessage() {} func (x *ContactAttachment_Name) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[119] + mi := &file_backuppb_Backup_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11060,59 +10940,6 @@ func (x *ContactAttachment_Name) GetNickname() string { return "" } -// The sharer's Signal nickname for this contact -type ContactAttachment_SignalNickname struct { - state protoimpl.MessageState `protogen:"open.v1"` - Given string `protobuf:"bytes,1,opt,name=given,proto3" json:"given,omitempty"` - Family string `protobuf:"bytes,2,opt,name=family,proto3" json:"family,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ContactAttachment_SignalNickname) Reset() { - *x = ContactAttachment_SignalNickname{} - mi := &file_backuppb_Backup_proto_msgTypes[120] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ContactAttachment_SignalNickname) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ContactAttachment_SignalNickname) ProtoMessage() {} - -func (x *ContactAttachment_SignalNickname) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[120] - 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 ContactAttachment_SignalNickname.ProtoReflect.Descriptor instead. -func (*ContactAttachment_SignalNickname) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 1} -} - -func (x *ContactAttachment_SignalNickname) GetGiven() string { - if x != nil { - return x.Given - } - return "" -} - -func (x *ContactAttachment_SignalNickname) GetFamily() string { - if x != nil { - return x.Family - } - return "" -} - type ContactAttachment_Phone struct { state protoimpl.MessageState `protogen:"open.v1"` Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` @@ -11124,7 +10951,7 @@ type ContactAttachment_Phone struct { func (x *ContactAttachment_Phone) Reset() { *x = ContactAttachment_Phone{} - mi := &file_backuppb_Backup_proto_msgTypes[121] + mi := &file_backuppb_Backup_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11136,7 +10963,7 @@ func (x *ContactAttachment_Phone) String() string { func (*ContactAttachment_Phone) ProtoMessage() {} func (x *ContactAttachment_Phone) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[121] + mi := &file_backuppb_Backup_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11149,7 +10976,7 @@ func (x *ContactAttachment_Phone) ProtoReflect() protoreflect.Message { // Deprecated: Use ContactAttachment_Phone.ProtoReflect.Descriptor instead. func (*ContactAttachment_Phone) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 2} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 1} } func (x *ContactAttachment_Phone) GetValue() string { @@ -11184,7 +11011,7 @@ type ContactAttachment_Email struct { func (x *ContactAttachment_Email) Reset() { *x = ContactAttachment_Email{} - mi := &file_backuppb_Backup_proto_msgTypes[122] + mi := &file_backuppb_Backup_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11196,7 +11023,7 @@ func (x *ContactAttachment_Email) String() string { func (*ContactAttachment_Email) ProtoMessage() {} func (x *ContactAttachment_Email) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[122] + mi := &file_backuppb_Backup_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11209,7 +11036,7 @@ func (x *ContactAttachment_Email) ProtoReflect() protoreflect.Message { // Deprecated: Use ContactAttachment_Email.ProtoReflect.Descriptor instead. func (*ContactAttachment_Email) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 3} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 2} } func (x *ContactAttachment_Email) GetValue() string { @@ -11250,7 +11077,7 @@ type ContactAttachment_PostalAddress struct { func (x *ContactAttachment_PostalAddress) Reset() { *x = ContactAttachment_PostalAddress{} - mi := &file_backuppb_Backup_proto_msgTypes[123] + mi := &file_backuppb_Backup_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11262,7 +11089,7 @@ func (x *ContactAttachment_PostalAddress) String() string { func (*ContactAttachment_PostalAddress) ProtoMessage() {} func (x *ContactAttachment_PostalAddress) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[123] + mi := &file_backuppb_Backup_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11275,7 +11102,7 @@ func (x *ContactAttachment_PostalAddress) ProtoReflect() protoreflect.Message { // Deprecated: Use ContactAttachment_PostalAddress.ProtoReflect.Descriptor instead. func (*ContactAttachment_PostalAddress) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 4} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{22, 3} } func (x *ContactAttachment_PostalAddress) GetType() ContactAttachment_PostalAddress_Type { @@ -11377,7 +11204,7 @@ type FilePointer_LocatorInfo struct { func (x *FilePointer_LocatorInfo) Reset() { *x = FilePointer_LocatorInfo{} - mi := &file_backuppb_Backup_proto_msgTypes[124] + mi := &file_backuppb_Backup_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11389,7 +11216,7 @@ func (x *FilePointer_LocatorInfo) String() string { func (*FilePointer_LocatorInfo) ProtoMessage() {} func (x *FilePointer_LocatorInfo) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[124] + mi := &file_backuppb_Backup_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11509,7 +11336,7 @@ type Quote_QuotedAttachment struct { func (x *Quote_QuotedAttachment) Reset() { *x = Quote_QuotedAttachment{} - mi := &file_backuppb_Backup_proto_msgTypes[125] + mi := &file_backuppb_Backup_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11521,7 +11348,7 @@ func (x *Quote_QuotedAttachment) String() string { func (*Quote_QuotedAttachment) ProtoMessage() {} func (x *Quote_QuotedAttachment) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[125] + mi := &file_backuppb_Backup_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11568,7 +11395,7 @@ type Poll_PollOption struct { func (x *Poll_PollOption) Reset() { *x = Poll_PollOption{} - mi := &file_backuppb_Backup_proto_msgTypes[126] + mi := &file_backuppb_Backup_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11580,7 +11407,7 @@ func (x *Poll_PollOption) String() string { func (*Poll_PollOption) ProtoMessage() {} func (x *Poll_PollOption) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[126] + mi := &file_backuppb_Backup_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11620,7 +11447,7 @@ type Poll_PollOption_PollVote struct { func (x *Poll_PollOption_PollVote) Reset() { *x = Poll_PollOption_PollVote{} - mi := &file_backuppb_Backup_proto_msgTypes[127] + mi := &file_backuppb_Backup_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11632,7 +11459,7 @@ func (x *Poll_PollOption_PollVote) String() string { func (*Poll_PollOption_PollVote) ProtoMessage() {} func (x *Poll_PollOption_PollVote) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[127] + mi := &file_backuppb_Backup_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11711,7 +11538,7 @@ type GroupChangeChatUpdate_Update struct { func (x *GroupChangeChatUpdate_Update) Reset() { *x = GroupChangeChatUpdate_Update{} - mi := &file_backuppb_Backup_proto_msgTypes[128] + mi := &file_backuppb_Backup_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11723,7 +11550,7 @@ func (x *GroupChangeChatUpdate_Update) String() string { func (*GroupChangeChatUpdate_Update) ProtoMessage() {} func (x *GroupChangeChatUpdate_Update) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[128] + mi := &file_backuppb_Backup_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12329,7 +12156,7 @@ type GroupInvitationRevokedUpdate_Invitee struct { func (x *GroupInvitationRevokedUpdate_Invitee) Reset() { *x = GroupInvitationRevokedUpdate_Invitee{} - mi := &file_backuppb_Backup_proto_msgTypes[129] + mi := &file_backuppb_Backup_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12341,7 +12168,7 @@ func (x *GroupInvitationRevokedUpdate_Invitee) String() string { func (*GroupInvitationRevokedUpdate_Invitee) ProtoMessage() {} func (x *GroupInvitationRevokedUpdate_Invitee) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[129] + mi := &file_backuppb_Backup_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12354,7 +12181,7 @@ func (x *GroupInvitationRevokedUpdate_Invitee) ProtoReflect() protoreflect.Messa // Deprecated: Use GroupInvitationRevokedUpdate_Invitee.ProtoReflect.Descriptor instead. func (*GroupInvitationRevokedUpdate_Invitee) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{64, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{65, 0} } func (x *GroupInvitationRevokedUpdate_Invitee) GetInviterAci() []byte { @@ -12389,7 +12216,7 @@ type ChatStyle_Gradient struct { func (x *ChatStyle_Gradient) Reset() { *x = ChatStyle_Gradient{} - mi := &file_backuppb_Backup_proto_msgTypes[130] + mi := &file_backuppb_Backup_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12401,7 +12228,7 @@ func (x *ChatStyle_Gradient) String() string { func (*ChatStyle_Gradient) ProtoMessage() {} func (x *ChatStyle_Gradient) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[130] + mi := &file_backuppb_Backup_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12454,7 +12281,7 @@ type ChatStyle_CustomChatColor struct { func (x *ChatStyle_CustomChatColor) Reset() { *x = ChatStyle_CustomChatColor{} - mi := &file_backuppb_Backup_proto_msgTypes[131] + mi := &file_backuppb_Backup_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12466,7 +12293,7 @@ func (x *ChatStyle_CustomChatColor) String() string { func (*ChatStyle_CustomChatColor) ProtoMessage() {} func (x *ChatStyle_CustomChatColor) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[131] + mi := &file_backuppb_Backup_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12538,7 +12365,7 @@ type ChatStyle_AutomaticBubbleColor struct { func (x *ChatStyle_AutomaticBubbleColor) Reset() { *x = ChatStyle_AutomaticBubbleColor{} - mi := &file_backuppb_Backup_proto_msgTypes[132] + mi := &file_backuppb_Backup_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12550,7 +12377,7 @@ func (x *ChatStyle_AutomaticBubbleColor) String() string { func (*ChatStyle_AutomaticBubbleColor) ProtoMessage() {} func (x *ChatStyle_AutomaticBubbleColor) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[132] + mi := &file_backuppb_Backup_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12590,7 +12417,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "chatFolder\x18\b \x01(\v2\x19.signal.backup.ChatFolderH\x00R\n" + "chatFolderB\x06\n" + - "\x04item\"\xcf*\n" + + "\x04item\"\x9e)\n" + "\vAccountData\x12\x1e\n" + "\n" + "profileKey\x18\x01 \x01(\fR\n" + @@ -12609,8 +12436,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x06svrPin\x18\v \x01(\tR\x06svrPin\x12l\n" + "\x17androidSpecificSettings\x18\f \x01(\v22.signal.backup.AccountData.AndroidSpecificSettingsR\x17androidSpecificSettings\x12\x18\n" + "\abioText\x18\r \x01(\tR\abioText\x12\x1a\n" + - "\bbioEmoji\x18\x0e \x01(\tR\bbioEmoji\x12`\n" + - "\x13iosSpecificSettings\x18\x10 \x01(\v2..signal.backup.AccountData.IOSSpecificSettingsR\x13iosSpecificSettings\x1a\xf6\x01\n" + + "\bbioEmoji\x18\x0e \x01(\tR\bbioEmoji\x1a\xf6\x01\n" + "\fUsernameLink\x12\x18\n" + "\aentropy\x18\x01 \x01(\fR\aentropy\x12\x1a\n" + "\bserverId\x18\x02 \x01(\fR\bserverId\x12C\n" + @@ -12712,9 +12538,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x10UNKNOWN_BAR_SIZE\x10\x00\x12\n" + "\n" + "\x06NORMAL\x10\x01\x12\v\n" + - "\aCOMPACT\x10\x02\x1aM\n" + - "\x13IOSSpecificSettings\x126\n" + - "\x16isSystemCallLogEnabled\x18\x01 \x01(\bR\x16isSystemCallLogEnabled\"@\n" + + "\aCOMPACT\x10\x02\"@\n" + "\x16PhoneNumberSharingMode\x12\v\n" + "\aUNKNOWN\x10\x00\x12\r\n" + "\tEVERYBODY\x10\x01\x12\n" + @@ -12744,7 +12568,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x04self\x18\x05 \x01(\v2\x13.signal.backup.SelfH\x00R\x04self\x12A\n" + "\freleaseNotes\x18\x06 \x01(\v2\x1b.signal.backup.ReleaseNotesH\x00R\freleaseNotes\x125\n" + "\bcallLink\x18\a \x01(\v2\x17.signal.backup.CallLinkH\x00R\bcallLinkB\r\n" + - "\vdestination\"\x87\f\n" + + "\vdestination\"\xca\v\n" + "\aContact\x12\x15\n" + "\x03aci\x18\x01 \x01(\fH\x01R\x03aci\x88\x01\x01\x12\x15\n" + "\x03pni\x18\x02 \x01(\fH\x02R\x03pni\x88\x01\x01\x12\x1f\n" + @@ -12776,10 +12600,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\vavatarColor\x18\x15 \x01(\x0e2\x1a.signal.backup.AvatarColorH\tR\vavatarColor\x88\x01\x01\x125\n" + "\x13keyTransparencyData\x18\x16 \x01(\fH\n" + "R\x13keyTransparencyData\x88\x01\x01\x12.\n" + - "\x12blockedAtTimestamp\x18\x17 \x01(\x04R\x12blockedAtTimestamp\x12;\n" + - "\n" + - "sharedName\x18\x18 \x01(\v2\x1b.signal.backup.Contact.NameR\n" + - "sharedName\x1a\f\n" + + "\x12blockedAtTimestamp\x18\x17 \x01(\x04R\x12blockedAtTimestamp\x1a\f\n" + "\n" + "Registered\x1aE\n" + "\rNotRegistered\x124\n" + @@ -12808,7 +12629,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x12_profileFamilyNameB\x0e\n" + "\f_identityKeyB\x0e\n" + "\f_avatarColorB\x16\n" + - "\x14_keyTransparencyData\"\xf4\x13\n" + + "\x14_keyTransparencyData\"\xf6\x13\n" + "\x05Group\x12\x1c\n" + "\tmasterKey\x18\x01 \x01(\fR\tmasterKey\x12 \n" + "\vwhitelisted\x18\x02 \x01(\bR\vwhitelisted\x12\x1c\n" + @@ -12817,7 +12638,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\bsnapshot\x18\x05 \x01(\v2\".signal.backup.Group.GroupSnapshotR\bsnapshot\x12\x18\n" + "\ablocked\x18\x06 \x01(\bR\ablocked\x12A\n" + "\vavatarColor\x18\a \x01(\x0e2\x1a.signal.backup.AvatarColorH\x00R\vavatarColor\x88\x01\x01\x12.\n" + - "\x12blockedAtTimestamp\x18\b \x01(\x04R\x12blockedAtTimestamp\x1a\xe3\x06\n" + + "\x12blockedAtTimestamp\x18\b \x01(\x04R\x12blockedAtTimestamp\x1a\xe5\x06\n" + "\rGroupSnapshot\x12=\n" + "\x05title\x18\x02 \x01(\v2'.signal.backup.Group.GroupAttributeBlobR\x05title\x12I\n" + "\vdescription\x18\v \x01(\v2'.signal.backup.Group.GroupAttributeBlobR\vdescription\x12\x1c\n" + @@ -12829,9 +12650,9 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x18membersPendingProfileKey\x18\b \x03(\v2,.signal.backup.Group.MemberPendingProfileKeyR\x18membersPendingProfileKey\x12q\n" + "\x1bmembersPendingAdminApproval\x18\t \x03(\v2/.signal.backup.Group.MemberPendingAdminApprovalR\x1bmembersPendingAdminApproval\x12.\n" + "\x12inviteLinkPassword\x18\n" + - " \x01(\fR\x12inviteLinkPassword\x12,\n" + - "\x11announcementsOnly\x18\f \x01(\bR\x11announcementsOnly\x12G\n" + - "\rmembersBanned\x18\r \x03(\v2!.signal.backup.Group.MemberBannedR\rmembersBanned\x12\x1e\n" + + " \x01(\fR\x12inviteLinkPassword\x12-\n" + + "\x12announcements_only\x18\f \x01(\bR\x11announcementsOnly\x12H\n" + + "\x0emembers_banned\x18\r \x03(\v2!.signal.backup.Group.MemberBannedR\rmembersBanned\x12\x1e\n" + "\n" + "terminated\x18\x0e \x01(\bR\n" + "terminatedJ\x04\b\x01\x10\x02\x1a\xc3\x01\n" + @@ -13105,18 +12926,15 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "attachment\x18\x01 \x01(\v2 .signal.backup.MessageAttachmentR\n" + "attachment\x125\n" + - "\treactions\x18\x02 \x03(\v2\x17.signal.backup.ReactionR\treactions\"\xd4\v\n" + + "\treactions\x18\x02 \x03(\v2\x17.signal.backup.ReactionR\treactions\"\x89\n" + + "\n" + "\x11ContactAttachment\x12>\n" + "\x04name\x18\x01 \x01(\v2%.signal.backup.ContactAttachment.NameH\x00R\x04name\x88\x01\x01\x12>\n" + "\x06number\x18\x03 \x03(\v2&.signal.backup.ContactAttachment.PhoneR\x06number\x12<\n" + "\x05email\x18\x04 \x03(\v2&.signal.backup.ContactAttachment.EmailR\x05email\x12H\n" + "\aaddress\x18\x05 \x03(\v2..signal.backup.ContactAttachment.PostalAddressR\aaddress\x127\n" + "\x06avatar\x18\x06 \x01(\v2\x1a.signal.backup.FilePointerH\x01R\x06avatar\x88\x01\x01\x12\"\n" + - "\forganization\x18\a \x01(\tR\forganization\x12\x10\n" + - "\x03aci\x18\b \x01(\fR\x03aci\x12P\n" + - "\bnickname\x18\t \x01(\v2/.signal.backup.ContactAttachment.SignalNicknameH\x02R\bnickname\x88\x01\x01\x12\x12\n" + - "\x04note\x18\n" + - " \x01(\tR\x04note\x1a\xb0\x01\n" + + "\forganization\x18\a \x01(\tR\forganization\x1a\xb0\x01\n" + "\x04Name\x12\x1c\n" + "\tgivenName\x18\x01 \x01(\tR\tgivenName\x12\x1e\n" + "\n" + @@ -13127,10 +12945,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "middleName\x18\x05 \x01(\tR\n" + "middleName\x12\x1a\n" + - "\bnickname\x18\x06 \x01(\tR\bnickname\x1a>\n" + - "\x0eSignalNickname\x12\x14\n" + - "\x05given\x18\x01 \x01(\tR\x05given\x12\x16\n" + - "\x06family\x18\x02 \x01(\tR\x06family\x1a\xb5\x01\n" + + "\bnickname\x18\x06 \x01(\tR\bnickname\x1a\xb5\x01\n" + "\x05Phone\x12\x14\n" + "\x05value\x18\x01 \x01(\tR\x05value\x12?\n" + "\x04type\x18\x02 \x01(\x0e2+.signal.backup.ContactAttachment.Phone.TypeR\x04type\x12\x14\n" + @@ -13172,8 +12987,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "\x06CUSTOM\x10\x03B\a\n" + "\x05_nameB\t\n" + - "\a_avatarB\v\n" + - "\t_nicknameJ\x04\b\x02\x10\x03\"y\n" + + "\a_avatar\"y\n" + "\x0eStickerMessage\x120\n" + "\asticker\x18\x01 \x01(\v2\x16.signal.backup.StickerR\asticker\x125\n" + "\treactions\x18\x02 \x03(\v2\x17.signal.backup.ReactionR\treactions\"\x16\n" + @@ -13208,7 +13022,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "BORDERLESS\x10\x02\x12\a\n" + "\x03GIF\x10\x03B\r\n" + - "\v_clientUuid\"\xad\t\n" + + "\v_clientUuid\"\x9e\b\n" + "\vFilePointer\x12%\n" + "\vcontentType\x18\x04 \x01(\tH\x00R\vcontentType\x88\x01\x01\x12+\n" + "\x0eincrementalMac\x18\x05 \x01(\fH\x01R\x0eincrementalMac\x88\x01\x01\x12=\n" + @@ -13219,9 +13033,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\acaption\x18\n" + " \x01(\tH\x06R\acaption\x88\x01\x01\x12\x1f\n" + "\bblurHash\x18\v \x01(\tH\aR\bblurHash\x88\x01\x01\x12H\n" + - "\vlocatorInfo\x18\r \x01(\v2&.signal.backup.FilePointer.LocatorInfoR\vlocatorInfo\x12)\n" + - "\raudioWaveform\x18\x0e \x01(\fH\bR\raudioWaveform\x88\x01\x01\x127\n" + - "\x14audioDurationSeconds\x18\x0f \x01(\x02H\tR\x14audioDurationSeconds\x88\x01\x01\x1a\x86\x04\n" + + "\vlocatorInfo\x18\r \x01(\v2&.signal.backup.FilePointer.LocatorInfoR\vlocatorInfo\x1a\x86\x04\n" + "\vLocatorInfo\x12\x10\n" + "\x03key\x18\x01 \x01(\fR\x03key\x12&\n" + "\rplaintextHash\x18\n" + @@ -13247,9 +13059,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\a_heightB\n" + "\n" + "\b_captionB\v\n" + - "\t_blurHashB\x10\n" + - "\x0e_audioWaveformB\x17\n" + - "\x15_audioDurationSecondsJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\f\x10\r\"\xb8\x04\n" + + "\t_blurHashJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\f\x10\r\"\xb8\x04\n" + "\x05Quote\x125\n" + "\x13targetSentTimestamp\x18\x01 \x01(\x04H\x00R\x13targetSentTimestamp\x88\x01\x01\x12\x1a\n" + "\bauthorId\x18\x02 \x01(\x04R\bauthorId\x12,\n" + @@ -13400,13 +13210,10 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\vexpiresInMs\x18\x01 \x01(\x04R\vexpiresInMs\"W\n" + "\x17ProfileChangeChatUpdate\x12\"\n" + "\fpreviousName\x18\x01 \x01(\tR\fpreviousName\x12\x18\n" + - "\anewName\x18\x02 \x01(\tR\anewName\"\x80\x01\n" + + "\anewName\x18\x02 \x01(\tR\anewName\"^\n" + "\x18LearnedProfileChatUpdate\x12\x14\n" + "\x04e164\x18\x01 \x01(\x04H\x00R\x04e164\x12\x1c\n" + - "\busername\x18\x02 \x01(\tH\x00R\busername\x12 \n" + - "\n" + - "sharedName\x18\x03 \x01(\tH\x00R\n" + - "sharedNameB\x0e\n" + + "\busername\x18\x02 \x01(\tH\x00R\busernameB\x0e\n" + "\fpreviousName\";\n" + "\x15ThreadMergeChatUpdate\x12\"\n" + "\fpreviousE164\x18\x01 \x01(\x04R\fpreviousE164\"1\n" + @@ -13490,18 +13297,23 @@ const file_backuppb_Backup_proto_rawDesc = "" + "updaterAci\x18\x01 \x01(\fH\x00R\n" + "updaterAci\x88\x01\x01\x12C\n" + "\vaccessLevel\x18\x02 \x01(\x0e2!.signal.backup.GroupV2AccessLevelR\vaccessLevelB\r\n" + - "\v_updaterAci\"\xa2\x01\n" + - "'GroupMemberLabelAccessLevelChangeUpdate\x12#\n" + - "\n" + - "updaterAci\x18\x01 \x01(\fH\x00R\n" + - "updaterAci\x88\x01\x01\x12C\n" + - "\vaccessLevel\x18\x02 \x01(\x0e2!.signal.backup.GroupV2AccessLevelR\vaccessLevelB\r\n" + "\v_updaterAci\"\xa1\x01\n" + "&GroupAttributesAccessLevelChangeUpdate\x12#\n" + "\n" + "updaterAci\x18\x01 \x01(\fH\x00R\n" + "updaterAci\x88\x01\x01\x12C\n" + "\vaccessLevel\x18\x02 \x01(\x0e2!.signal.backup.GroupV2AccessLevelR\vaccessLevelB\r\n" + + "\v_updaterAci\"\xa2\x01\n" + + "'GroupMemberLabelAccessLevelChangeUpdate\x12#\n" + + "\n" + + "updaterAci\x18\x01 \x01(\fH\x00R\n" + + "updaterAci\x88\x01\x01\x12C\n" + + "\vaccessLevel\x18\x02 \x01(\x0e2!.signal.backup.GroupV2AccessLevelR\vaccessLevelB\r\n" + + "\v_updaterAci\"P\n" + + "\x1aGroupTerminateChangeUpdate\x12#\n" + + "\n" + + "updaterAci\x18\x01 \x01(\fH\x00R\n" + + "updaterAci\x88\x01\x01B\r\n" + "\v_updaterAci\"\x87\x01\n" + "!GroupAnnouncementOnlyChangeUpdate\x12#\n" + "\n" + @@ -13640,11 +13452,6 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "updaterAci\x18\x02 \x01(\fH\x00R\n" + "updaterAci\x88\x01\x01B\r\n" + - "\v_updaterAci\"P\n" + - "\x1aGroupTerminateChangeUpdate\x12#\n" + - "\n" + - "updaterAci\x18\x01 \x01(\fH\x00R\n" + - "updaterAci\x88\x01\x01B\r\n" + "\v_updaterAci\"c\n" + "\x13PollTerminateUpdate\x120\n" + "\x13targetSentTimestamp\x18\x01 \x01(\x04R\x13targetSentTimestamp\x12\x1a\n" + @@ -13811,7 +13618,7 @@ func file_backuppb_Backup_proto_rawDescGZIP() []byte { } var file_backuppb_Backup_proto_enumTypes = make([]protoimpl.EnumInfo, 37) -var file_backuppb_Backup_proto_msgTypes = make([]protoimpl.MessageInfo, 133) +var file_backuppb_Backup_proto_msgTypes = make([]protoimpl.MessageInfo, 131) var file_backuppb_Backup_proto_goTypes = []any{ (AvatarColor)(0), // 0: signal.backup.AvatarColor (GroupV2AccessLevel)(0), // 1: signal.backup.GroupV2AccessLevel @@ -13900,36 +13707,36 @@ var file_backuppb_Backup_proto_goTypes = []any{ (*GroupAvatarUpdate)(nil), // 84: signal.backup.GroupAvatarUpdate (*GroupDescriptionUpdate)(nil), // 85: signal.backup.GroupDescriptionUpdate (*GroupMembershipAccessLevelChangeUpdate)(nil), // 86: signal.backup.GroupMembershipAccessLevelChangeUpdate - (*GroupMemberLabelAccessLevelChangeUpdate)(nil), // 87: signal.backup.GroupMemberLabelAccessLevelChangeUpdate - (*GroupAttributesAccessLevelChangeUpdate)(nil), // 88: signal.backup.GroupAttributesAccessLevelChangeUpdate - (*GroupAnnouncementOnlyChangeUpdate)(nil), // 89: signal.backup.GroupAnnouncementOnlyChangeUpdate - (*GroupAdminStatusUpdate)(nil), // 90: signal.backup.GroupAdminStatusUpdate - (*GroupMemberLeftUpdate)(nil), // 91: signal.backup.GroupMemberLeftUpdate - (*GroupMemberRemovedUpdate)(nil), // 92: signal.backup.GroupMemberRemovedUpdate - (*SelfInvitedToGroupUpdate)(nil), // 93: signal.backup.SelfInvitedToGroupUpdate - (*SelfInvitedOtherUserToGroupUpdate)(nil), // 94: signal.backup.SelfInvitedOtherUserToGroupUpdate - (*GroupUnknownInviteeUpdate)(nil), // 95: signal.backup.GroupUnknownInviteeUpdate - (*GroupInvitationAcceptedUpdate)(nil), // 96: signal.backup.GroupInvitationAcceptedUpdate - (*GroupInvitationDeclinedUpdate)(nil), // 97: signal.backup.GroupInvitationDeclinedUpdate - (*GroupMemberJoinedUpdate)(nil), // 98: signal.backup.GroupMemberJoinedUpdate - (*GroupMemberAddedUpdate)(nil), // 99: signal.backup.GroupMemberAddedUpdate - (*GroupSelfInvitationRevokedUpdate)(nil), // 100: signal.backup.GroupSelfInvitationRevokedUpdate - (*GroupInvitationRevokedUpdate)(nil), // 101: signal.backup.GroupInvitationRevokedUpdate - (*GroupJoinRequestUpdate)(nil), // 102: signal.backup.GroupJoinRequestUpdate - (*GroupJoinRequestApprovalUpdate)(nil), // 103: signal.backup.GroupJoinRequestApprovalUpdate - (*GroupJoinRequestCanceledUpdate)(nil), // 104: signal.backup.GroupJoinRequestCanceledUpdate - (*GroupSequenceOfRequestsAndCancelsUpdate)(nil), // 105: signal.backup.GroupSequenceOfRequestsAndCancelsUpdate - (*GroupInviteLinkResetUpdate)(nil), // 106: signal.backup.GroupInviteLinkResetUpdate - (*GroupInviteLinkEnabledUpdate)(nil), // 107: signal.backup.GroupInviteLinkEnabledUpdate - (*GroupInviteLinkAdminApprovalUpdate)(nil), // 108: signal.backup.GroupInviteLinkAdminApprovalUpdate - (*GroupInviteLinkDisabledUpdate)(nil), // 109: signal.backup.GroupInviteLinkDisabledUpdate - (*GroupMemberJoinedByLinkUpdate)(nil), // 110: signal.backup.GroupMemberJoinedByLinkUpdate - (*GroupV2MigrationUpdate)(nil), // 111: signal.backup.GroupV2MigrationUpdate - (*GroupV2MigrationSelfInvitedUpdate)(nil), // 112: signal.backup.GroupV2MigrationSelfInvitedUpdate - (*GroupV2MigrationInvitedMembersUpdate)(nil), // 113: signal.backup.GroupV2MigrationInvitedMembersUpdate - (*GroupV2MigrationDroppedMembersUpdate)(nil), // 114: signal.backup.GroupV2MigrationDroppedMembersUpdate - (*GroupExpirationTimerUpdate)(nil), // 115: signal.backup.GroupExpirationTimerUpdate - (*GroupTerminateChangeUpdate)(nil), // 116: signal.backup.GroupTerminateChangeUpdate + (*GroupAttributesAccessLevelChangeUpdate)(nil), // 87: signal.backup.GroupAttributesAccessLevelChangeUpdate + (*GroupMemberLabelAccessLevelChangeUpdate)(nil), // 88: signal.backup.GroupMemberLabelAccessLevelChangeUpdate + (*GroupTerminateChangeUpdate)(nil), // 89: signal.backup.GroupTerminateChangeUpdate + (*GroupAnnouncementOnlyChangeUpdate)(nil), // 90: signal.backup.GroupAnnouncementOnlyChangeUpdate + (*GroupAdminStatusUpdate)(nil), // 91: signal.backup.GroupAdminStatusUpdate + (*GroupMemberLeftUpdate)(nil), // 92: signal.backup.GroupMemberLeftUpdate + (*GroupMemberRemovedUpdate)(nil), // 93: signal.backup.GroupMemberRemovedUpdate + (*SelfInvitedToGroupUpdate)(nil), // 94: signal.backup.SelfInvitedToGroupUpdate + (*SelfInvitedOtherUserToGroupUpdate)(nil), // 95: signal.backup.SelfInvitedOtherUserToGroupUpdate + (*GroupUnknownInviteeUpdate)(nil), // 96: signal.backup.GroupUnknownInviteeUpdate + (*GroupInvitationAcceptedUpdate)(nil), // 97: signal.backup.GroupInvitationAcceptedUpdate + (*GroupInvitationDeclinedUpdate)(nil), // 98: signal.backup.GroupInvitationDeclinedUpdate + (*GroupMemberJoinedUpdate)(nil), // 99: signal.backup.GroupMemberJoinedUpdate + (*GroupMemberAddedUpdate)(nil), // 100: signal.backup.GroupMemberAddedUpdate + (*GroupSelfInvitationRevokedUpdate)(nil), // 101: signal.backup.GroupSelfInvitationRevokedUpdate + (*GroupInvitationRevokedUpdate)(nil), // 102: signal.backup.GroupInvitationRevokedUpdate + (*GroupJoinRequestUpdate)(nil), // 103: signal.backup.GroupJoinRequestUpdate + (*GroupJoinRequestApprovalUpdate)(nil), // 104: signal.backup.GroupJoinRequestApprovalUpdate + (*GroupJoinRequestCanceledUpdate)(nil), // 105: signal.backup.GroupJoinRequestCanceledUpdate + (*GroupSequenceOfRequestsAndCancelsUpdate)(nil), // 106: signal.backup.GroupSequenceOfRequestsAndCancelsUpdate + (*GroupInviteLinkResetUpdate)(nil), // 107: signal.backup.GroupInviteLinkResetUpdate + (*GroupInviteLinkEnabledUpdate)(nil), // 108: signal.backup.GroupInviteLinkEnabledUpdate + (*GroupInviteLinkAdminApprovalUpdate)(nil), // 109: signal.backup.GroupInviteLinkAdminApprovalUpdate + (*GroupInviteLinkDisabledUpdate)(nil), // 110: signal.backup.GroupInviteLinkDisabledUpdate + (*GroupMemberJoinedByLinkUpdate)(nil), // 111: signal.backup.GroupMemberJoinedByLinkUpdate + (*GroupV2MigrationUpdate)(nil), // 112: signal.backup.GroupV2MigrationUpdate + (*GroupV2MigrationSelfInvitedUpdate)(nil), // 113: signal.backup.GroupV2MigrationSelfInvitedUpdate + (*GroupV2MigrationInvitedMembersUpdate)(nil), // 114: signal.backup.GroupV2MigrationInvitedMembersUpdate + (*GroupV2MigrationDroppedMembersUpdate)(nil), // 115: signal.backup.GroupV2MigrationDroppedMembersUpdate + (*GroupExpirationTimerUpdate)(nil), // 116: signal.backup.GroupExpirationTimerUpdate (*PollTerminateUpdate)(nil), // 117: signal.backup.PollTerminateUpdate (*PinMessageUpdate)(nil), // 118: signal.backup.PinMessageUpdate (*StickerPack)(nil), // 119: signal.backup.StickerPack @@ -13942,47 +13749,45 @@ var file_backuppb_Backup_proto_goTypes = []any{ (*AccountData_SubscriberData)(nil), // 126: signal.backup.AccountData.SubscriberData (*AccountData_IAPSubscriberData)(nil), // 127: signal.backup.AccountData.IAPSubscriberData (*AccountData_AndroidSpecificSettings)(nil), // 128: signal.backup.AccountData.AndroidSpecificSettings - (*AccountData_IOSSpecificSettings)(nil), // 129: signal.backup.AccountData.IOSSpecificSettings - (*Contact_Registered)(nil), // 130: signal.backup.Contact.Registered - (*Contact_NotRegistered)(nil), // 131: signal.backup.Contact.NotRegistered - (*Contact_Name)(nil), // 132: signal.backup.Contact.Name - (*Group_GroupSnapshot)(nil), // 133: signal.backup.Group.GroupSnapshot - (*Group_GroupAttributeBlob)(nil), // 134: signal.backup.Group.GroupAttributeBlob - (*Group_Member)(nil), // 135: signal.backup.Group.Member - (*Group_MemberPendingProfileKey)(nil), // 136: signal.backup.Group.MemberPendingProfileKey - (*Group_MemberPendingAdminApproval)(nil), // 137: signal.backup.Group.MemberPendingAdminApproval - (*Group_MemberBanned)(nil), // 138: signal.backup.Group.MemberBanned - (*Group_AccessControl)(nil), // 139: signal.backup.Group.AccessControl - (*ChatItem_IncomingMessageDetails)(nil), // 140: signal.backup.ChatItem.IncomingMessageDetails - (*ChatItem_OutgoingMessageDetails)(nil), // 141: signal.backup.ChatItem.OutgoingMessageDetails - (*ChatItem_DirectionlessMessageDetails)(nil), // 142: signal.backup.ChatItem.DirectionlessMessageDetails - (*ChatItem_PinDetails)(nil), // 143: signal.backup.ChatItem.PinDetails - (*SendStatus_Pending)(nil), // 144: signal.backup.SendStatus.Pending - (*SendStatus_Sent)(nil), // 145: signal.backup.SendStatus.Sent - (*SendStatus_Delivered)(nil), // 146: signal.backup.SendStatus.Delivered - (*SendStatus_Read)(nil), // 147: signal.backup.SendStatus.Read - (*SendStatus_Viewed)(nil), // 148: signal.backup.SendStatus.Viewed - (*SendStatus_Skipped)(nil), // 149: signal.backup.SendStatus.Skipped - (*SendStatus_Failed)(nil), // 150: signal.backup.SendStatus.Failed - (*DirectStoryReplyMessage_TextReply)(nil), // 151: signal.backup.DirectStoryReplyMessage.TextReply - (*PaymentNotification_TransactionDetails)(nil), // 152: signal.backup.PaymentNotification.TransactionDetails - (*PaymentNotification_TransactionDetails_MobileCoinTxoIdentification)(nil), // 153: signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification - (*PaymentNotification_TransactionDetails_FailedTransaction)(nil), // 154: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction - (*PaymentNotification_TransactionDetails_Transaction)(nil), // 155: signal.backup.PaymentNotification.TransactionDetails.Transaction - (*ContactAttachment_Name)(nil), // 156: signal.backup.ContactAttachment.Name - (*ContactAttachment_SignalNickname)(nil), // 157: signal.backup.ContactAttachment.SignalNickname - (*ContactAttachment_Phone)(nil), // 158: signal.backup.ContactAttachment.Phone - (*ContactAttachment_Email)(nil), // 159: signal.backup.ContactAttachment.Email - (*ContactAttachment_PostalAddress)(nil), // 160: signal.backup.ContactAttachment.PostalAddress - (*FilePointer_LocatorInfo)(nil), // 161: signal.backup.FilePointer.LocatorInfo - (*Quote_QuotedAttachment)(nil), // 162: signal.backup.Quote.QuotedAttachment - (*Poll_PollOption)(nil), // 163: signal.backup.Poll.PollOption - (*Poll_PollOption_PollVote)(nil), // 164: signal.backup.Poll.PollOption.PollVote - (*GroupChangeChatUpdate_Update)(nil), // 165: signal.backup.GroupChangeChatUpdate.Update - (*GroupInvitationRevokedUpdate_Invitee)(nil), // 166: signal.backup.GroupInvitationRevokedUpdate.Invitee - (*ChatStyle_Gradient)(nil), // 167: signal.backup.ChatStyle.Gradient - (*ChatStyle_CustomChatColor)(nil), // 168: signal.backup.ChatStyle.CustomChatColor - (*ChatStyle_AutomaticBubbleColor)(nil), // 169: signal.backup.ChatStyle.AutomaticBubbleColor + (*Contact_Registered)(nil), // 129: signal.backup.Contact.Registered + (*Contact_NotRegistered)(nil), // 130: signal.backup.Contact.NotRegistered + (*Contact_Name)(nil), // 131: signal.backup.Contact.Name + (*Group_GroupSnapshot)(nil), // 132: signal.backup.Group.GroupSnapshot + (*Group_GroupAttributeBlob)(nil), // 133: signal.backup.Group.GroupAttributeBlob + (*Group_Member)(nil), // 134: signal.backup.Group.Member + (*Group_MemberPendingProfileKey)(nil), // 135: signal.backup.Group.MemberPendingProfileKey + (*Group_MemberPendingAdminApproval)(nil), // 136: signal.backup.Group.MemberPendingAdminApproval + (*Group_MemberBanned)(nil), // 137: signal.backup.Group.MemberBanned + (*Group_AccessControl)(nil), // 138: signal.backup.Group.AccessControl + (*ChatItem_IncomingMessageDetails)(nil), // 139: signal.backup.ChatItem.IncomingMessageDetails + (*ChatItem_OutgoingMessageDetails)(nil), // 140: signal.backup.ChatItem.OutgoingMessageDetails + (*ChatItem_DirectionlessMessageDetails)(nil), // 141: signal.backup.ChatItem.DirectionlessMessageDetails + (*ChatItem_PinDetails)(nil), // 142: signal.backup.ChatItem.PinDetails + (*SendStatus_Pending)(nil), // 143: signal.backup.SendStatus.Pending + (*SendStatus_Sent)(nil), // 144: signal.backup.SendStatus.Sent + (*SendStatus_Delivered)(nil), // 145: signal.backup.SendStatus.Delivered + (*SendStatus_Read)(nil), // 146: signal.backup.SendStatus.Read + (*SendStatus_Viewed)(nil), // 147: signal.backup.SendStatus.Viewed + (*SendStatus_Skipped)(nil), // 148: signal.backup.SendStatus.Skipped + (*SendStatus_Failed)(nil), // 149: signal.backup.SendStatus.Failed + (*DirectStoryReplyMessage_TextReply)(nil), // 150: signal.backup.DirectStoryReplyMessage.TextReply + (*PaymentNotification_TransactionDetails)(nil), // 151: signal.backup.PaymentNotification.TransactionDetails + (*PaymentNotification_TransactionDetails_MobileCoinTxoIdentification)(nil), // 152: signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification + (*PaymentNotification_TransactionDetails_FailedTransaction)(nil), // 153: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction + (*PaymentNotification_TransactionDetails_Transaction)(nil), // 154: signal.backup.PaymentNotification.TransactionDetails.Transaction + (*ContactAttachment_Name)(nil), // 155: signal.backup.ContactAttachment.Name + (*ContactAttachment_Phone)(nil), // 156: signal.backup.ContactAttachment.Phone + (*ContactAttachment_Email)(nil), // 157: signal.backup.ContactAttachment.Email + (*ContactAttachment_PostalAddress)(nil), // 158: signal.backup.ContactAttachment.PostalAddress + (*FilePointer_LocatorInfo)(nil), // 159: signal.backup.FilePointer.LocatorInfo + (*Quote_QuotedAttachment)(nil), // 160: signal.backup.Quote.QuotedAttachment + (*Poll_PollOption)(nil), // 161: signal.backup.Poll.PollOption + (*Poll_PollOption_PollVote)(nil), // 162: signal.backup.Poll.PollOption.PollVote + (*GroupChangeChatUpdate_Update)(nil), // 163: signal.backup.GroupChangeChatUpdate.Update + (*GroupInvitationRevokedUpdate_Invitee)(nil), // 164: signal.backup.GroupInvitationRevokedUpdate.Invitee + (*ChatStyle_Gradient)(nil), // 165: signal.backup.ChatStyle.Gradient + (*ChatStyle_CustomChatColor)(nil), // 166: signal.backup.ChatStyle.CustomChatColor + (*ChatStyle_AutomaticBubbleColor)(nil), // 167: signal.backup.ChatStyle.AutomaticBubbleColor } var file_backuppb_Backup_proto_depIdxs = []int32{ 39, // 0: signal.backup.Frame.account:type_name -> signal.backup.AccountData @@ -13998,197 +13803,194 @@ var file_backuppb_Backup_proto_depIdxs = []int32{ 125, // 10: signal.backup.AccountData.accountSettings:type_name -> signal.backup.AccountData.AccountSettings 127, // 11: signal.backup.AccountData.backupsSubscriberData:type_name -> signal.backup.AccountData.IAPSubscriberData 128, // 12: signal.backup.AccountData.androidSpecificSettings:type_name -> signal.backup.AccountData.AndroidSpecificSettings - 129, // 13: signal.backup.AccountData.iosSpecificSettings:type_name -> signal.backup.AccountData.IOSSpecificSettings - 41, // 14: signal.backup.Recipient.contact:type_name -> signal.backup.Contact - 42, // 15: signal.backup.Recipient.group:type_name -> signal.backup.Group - 48, // 16: signal.backup.Recipient.distributionList:type_name -> signal.backup.DistributionListItem - 43, // 17: signal.backup.Recipient.self:type_name -> signal.backup.Self - 44, // 18: signal.backup.Recipient.releaseNotes:type_name -> signal.backup.ReleaseNotes - 46, // 19: signal.backup.Recipient.callLink:type_name -> signal.backup.CallLink - 11, // 20: signal.backup.Contact.visibility:type_name -> signal.backup.Contact.Visibility - 130, // 21: signal.backup.Contact.registered:type_name -> signal.backup.Contact.Registered - 131, // 22: signal.backup.Contact.notRegistered:type_name -> signal.backup.Contact.NotRegistered - 10, // 23: signal.backup.Contact.identityState:type_name -> signal.backup.Contact.IdentityState - 132, // 24: signal.backup.Contact.nickname:type_name -> signal.backup.Contact.Name - 0, // 25: signal.backup.Contact.avatarColor:type_name -> signal.backup.AvatarColor - 132, // 26: signal.backup.Contact.sharedName:type_name -> signal.backup.Contact.Name - 12, // 27: signal.backup.Group.storySendMode:type_name -> signal.backup.Group.StorySendMode - 133, // 28: signal.backup.Group.snapshot:type_name -> signal.backup.Group.GroupSnapshot - 0, // 29: signal.backup.Group.avatarColor:type_name -> signal.backup.AvatarColor - 0, // 30: signal.backup.Self.avatarColor:type_name -> signal.backup.AvatarColor - 120, // 31: signal.backup.Chat.style:type_name -> signal.backup.ChatStyle - 15, // 32: signal.backup.CallLink.restrictions:type_name -> signal.backup.CallLink.Restrictions - 16, // 33: signal.backup.AdHocCall.state:type_name -> signal.backup.AdHocCall.State - 49, // 34: signal.backup.DistributionListItem.distributionList:type_name -> signal.backup.DistributionList - 17, // 35: signal.backup.DistributionList.privacyMode:type_name -> signal.backup.DistributionList.PrivacyMode - 50, // 36: signal.backup.ChatItem.revisions:type_name -> signal.backup.ChatItem - 140, // 37: signal.backup.ChatItem.incoming:type_name -> signal.backup.ChatItem.IncomingMessageDetails - 141, // 38: signal.backup.ChatItem.outgoing:type_name -> signal.backup.ChatItem.OutgoingMessageDetails - 142, // 39: signal.backup.ChatItem.directionless:type_name -> signal.backup.ChatItem.DirectionlessMessageDetails - 53, // 40: signal.backup.ChatItem.standardMessage:type_name -> signal.backup.StandardMessage - 54, // 41: signal.backup.ChatItem.contactMessage:type_name -> signal.backup.ContactMessage - 60, // 42: signal.backup.ChatItem.stickerMessage:type_name -> signal.backup.StickerMessage - 61, // 43: signal.backup.ChatItem.remoteDeletedMessage:type_name -> signal.backup.RemoteDeletedMessage - 71, // 44: signal.backup.ChatItem.updateMessage:type_name -> signal.backup.ChatUpdateMessage - 56, // 45: signal.backup.ChatItem.paymentNotification:type_name -> signal.backup.PaymentNotification - 57, // 46: signal.backup.ChatItem.giftBadge:type_name -> signal.backup.GiftBadge - 58, // 47: signal.backup.ChatItem.viewOnceMessage:type_name -> signal.backup.ViewOnceMessage - 55, // 48: signal.backup.ChatItem.directStoryReplyMessage:type_name -> signal.backup.DirectStoryReplyMessage - 69, // 49: signal.backup.ChatItem.poll:type_name -> signal.backup.Poll - 70, // 50: signal.backup.ChatItem.adminDeletedMessage:type_name -> signal.backup.AdminDeletedMessage - 143, // 51: signal.backup.ChatItem.pinDetails:type_name -> signal.backup.ChatItem.PinDetails - 144, // 52: signal.backup.SendStatus.pending:type_name -> signal.backup.SendStatus.Pending - 145, // 53: signal.backup.SendStatus.sent:type_name -> signal.backup.SendStatus.Sent - 146, // 54: signal.backup.SendStatus.delivered:type_name -> signal.backup.SendStatus.Delivered - 147, // 55: signal.backup.SendStatus.read:type_name -> signal.backup.SendStatus.Read - 148, // 56: signal.backup.SendStatus.viewed:type_name -> signal.backup.SendStatus.Viewed - 149, // 57: signal.backup.SendStatus.skipped:type_name -> signal.backup.SendStatus.Skipped - 150, // 58: signal.backup.SendStatus.failed:type_name -> signal.backup.SendStatus.Failed - 67, // 59: signal.backup.Text.bodyRanges:type_name -> signal.backup.BodyRange - 66, // 60: signal.backup.StandardMessage.quote:type_name -> signal.backup.Quote - 52, // 61: signal.backup.StandardMessage.text:type_name -> signal.backup.Text - 64, // 62: signal.backup.StandardMessage.attachments:type_name -> signal.backup.MessageAttachment - 63, // 63: signal.backup.StandardMessage.linkPreview:type_name -> signal.backup.LinkPreview - 65, // 64: signal.backup.StandardMessage.longText:type_name -> signal.backup.FilePointer - 68, // 65: signal.backup.StandardMessage.reactions:type_name -> signal.backup.Reaction - 59, // 66: signal.backup.ContactMessage.contact:type_name -> signal.backup.ContactAttachment - 68, // 67: signal.backup.ContactMessage.reactions:type_name -> signal.backup.Reaction - 151, // 68: signal.backup.DirectStoryReplyMessage.textReply:type_name -> signal.backup.DirectStoryReplyMessage.TextReply - 68, // 69: signal.backup.DirectStoryReplyMessage.reactions:type_name -> signal.backup.Reaction - 152, // 70: signal.backup.PaymentNotification.transactionDetails:type_name -> signal.backup.PaymentNotification.TransactionDetails - 21, // 71: signal.backup.GiftBadge.state:type_name -> signal.backup.GiftBadge.State - 64, // 72: signal.backup.ViewOnceMessage.attachment:type_name -> signal.backup.MessageAttachment - 68, // 73: signal.backup.ViewOnceMessage.reactions:type_name -> signal.backup.Reaction - 156, // 74: signal.backup.ContactAttachment.name:type_name -> signal.backup.ContactAttachment.Name - 158, // 75: signal.backup.ContactAttachment.number:type_name -> signal.backup.ContactAttachment.Phone - 159, // 76: signal.backup.ContactAttachment.email:type_name -> signal.backup.ContactAttachment.Email - 160, // 77: signal.backup.ContactAttachment.address:type_name -> signal.backup.ContactAttachment.PostalAddress - 65, // 78: signal.backup.ContactAttachment.avatar:type_name -> signal.backup.FilePointer - 157, // 79: signal.backup.ContactAttachment.nickname:type_name -> signal.backup.ContactAttachment.SignalNickname - 62, // 80: signal.backup.StickerMessage.sticker:type_name -> signal.backup.Sticker - 68, // 81: signal.backup.StickerMessage.reactions:type_name -> signal.backup.Reaction - 65, // 82: signal.backup.Sticker.data:type_name -> signal.backup.FilePointer - 65, // 83: signal.backup.LinkPreview.image:type_name -> signal.backup.FilePointer - 65, // 84: signal.backup.MessageAttachment.pointer:type_name -> signal.backup.FilePointer - 25, // 85: signal.backup.MessageAttachment.flag:type_name -> signal.backup.MessageAttachment.Flag - 161, // 86: signal.backup.FilePointer.locatorInfo:type_name -> signal.backup.FilePointer.LocatorInfo - 52, // 87: signal.backup.Quote.text:type_name -> signal.backup.Text - 162, // 88: signal.backup.Quote.attachments:type_name -> signal.backup.Quote.QuotedAttachment - 26, // 89: signal.backup.Quote.type:type_name -> signal.backup.Quote.Type - 27, // 90: signal.backup.BodyRange.style:type_name -> signal.backup.BodyRange.Style - 163, // 91: signal.backup.Poll.options:type_name -> signal.backup.Poll.PollOption - 68, // 92: signal.backup.Poll.reactions:type_name -> signal.backup.Reaction - 74, // 93: signal.backup.ChatUpdateMessage.simpleUpdate:type_name -> signal.backup.SimpleChatUpdate - 80, // 94: signal.backup.ChatUpdateMessage.groupChange:type_name -> signal.backup.GroupChangeChatUpdate - 75, // 95: signal.backup.ChatUpdateMessage.expirationTimerChange:type_name -> signal.backup.ExpirationTimerChatUpdate - 76, // 96: signal.backup.ChatUpdateMessage.profileChange:type_name -> signal.backup.ProfileChangeChatUpdate - 78, // 97: signal.backup.ChatUpdateMessage.threadMerge:type_name -> signal.backup.ThreadMergeChatUpdate - 79, // 98: signal.backup.ChatUpdateMessage.sessionSwitchover:type_name -> signal.backup.SessionSwitchoverChatUpdate - 72, // 99: signal.backup.ChatUpdateMessage.individualCall:type_name -> signal.backup.IndividualCall - 73, // 100: signal.backup.ChatUpdateMessage.groupCall:type_name -> signal.backup.GroupCall - 77, // 101: signal.backup.ChatUpdateMessage.learnedProfileChange:type_name -> signal.backup.LearnedProfileChatUpdate - 117, // 102: signal.backup.ChatUpdateMessage.pollTerminate:type_name -> signal.backup.PollTerminateUpdate - 118, // 103: signal.backup.ChatUpdateMessage.pinMessage:type_name -> signal.backup.PinMessageUpdate - 28, // 104: signal.backup.IndividualCall.type:type_name -> signal.backup.IndividualCall.Type - 29, // 105: signal.backup.IndividualCall.direction:type_name -> signal.backup.IndividualCall.Direction - 30, // 106: signal.backup.IndividualCall.state:type_name -> signal.backup.IndividualCall.State - 31, // 107: signal.backup.GroupCall.state:type_name -> signal.backup.GroupCall.State - 32, // 108: signal.backup.SimpleChatUpdate.type:type_name -> signal.backup.SimpleChatUpdate.Type - 165, // 109: signal.backup.GroupChangeChatUpdate.updates:type_name -> signal.backup.GroupChangeChatUpdate.Update - 1, // 110: signal.backup.GroupMembershipAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel - 1, // 111: signal.backup.GroupMemberLabelAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel - 1, // 112: signal.backup.GroupAttributesAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel - 166, // 113: signal.backup.GroupInvitationRevokedUpdate.invitees:type_name -> signal.backup.GroupInvitationRevokedUpdate.Invitee - 33, // 114: signal.backup.ChatStyle.wallpaperPreset:type_name -> signal.backup.ChatStyle.WallpaperPreset - 65, // 115: signal.backup.ChatStyle.wallpaperPhoto:type_name -> signal.backup.FilePointer - 169, // 116: signal.backup.ChatStyle.autoBubbleColor:type_name -> signal.backup.ChatStyle.AutomaticBubbleColor - 34, // 117: signal.backup.ChatStyle.bubbleColorPreset:type_name -> signal.backup.ChatStyle.BubbleColorPreset - 35, // 118: signal.backup.NotificationProfile.scheduleDaysEnabled:type_name -> signal.backup.NotificationProfile.DayOfWeek - 36, // 119: signal.backup.ChatFolder.folderType:type_name -> signal.backup.ChatFolder.FolderType - 6, // 120: signal.backup.AccountData.UsernameLink.color:type_name -> signal.backup.AccountData.UsernameLink.Color - 7, // 121: signal.backup.AccountData.AutoDownloadSettings.images:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption - 7, // 122: signal.backup.AccountData.AutoDownloadSettings.audio:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption - 7, // 123: signal.backup.AccountData.AutoDownloadSettings.video:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption - 7, // 124: signal.backup.AccountData.AutoDownloadSettings.documents:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption - 2, // 125: signal.backup.AccountData.AccountSettings.phoneNumberSharingMode:type_name -> signal.backup.AccountData.PhoneNumberSharingMode - 120, // 126: signal.backup.AccountData.AccountSettings.defaultChatStyle:type_name -> signal.backup.ChatStyle - 168, // 127: signal.backup.AccountData.AccountSettings.customChatColors:type_name -> signal.backup.ChatStyle.CustomChatColor - 3, // 128: signal.backup.AccountData.AccountSettings.defaultSentMediaQuality:type_name -> signal.backup.AccountData.SentMediaQuality - 124, // 129: signal.backup.AccountData.AccountSettings.autoDownloadSettings:type_name -> signal.backup.AccountData.AutoDownloadSettings - 4, // 130: signal.backup.AccountData.AccountSettings.appTheme:type_name -> signal.backup.AccountData.AppTheme - 5, // 131: signal.backup.AccountData.AccountSettings.callsUseLessDataSetting:type_name -> signal.backup.AccountData.CallsUseLessDataSetting - 8, // 132: signal.backup.AccountData.AccountSettings.unreadBadgeType:type_name -> signal.backup.AccountData.AccountSettings.UnreadBadgeType - 9, // 133: signal.backup.AccountData.AndroidSpecificSettings.navigationBarSize:type_name -> signal.backup.AccountData.AndroidSpecificSettings.NavigationBarSize - 134, // 134: signal.backup.Group.GroupSnapshot.title:type_name -> signal.backup.Group.GroupAttributeBlob - 134, // 135: signal.backup.Group.GroupSnapshot.description:type_name -> signal.backup.Group.GroupAttributeBlob - 134, // 136: signal.backup.Group.GroupSnapshot.disappearingMessagesTimer:type_name -> signal.backup.Group.GroupAttributeBlob - 139, // 137: signal.backup.Group.GroupSnapshot.accessControl:type_name -> signal.backup.Group.AccessControl - 135, // 138: signal.backup.Group.GroupSnapshot.members:type_name -> signal.backup.Group.Member - 136, // 139: signal.backup.Group.GroupSnapshot.membersPendingProfileKey:type_name -> signal.backup.Group.MemberPendingProfileKey - 137, // 140: signal.backup.Group.GroupSnapshot.membersPendingAdminApproval:type_name -> signal.backup.Group.MemberPendingAdminApproval - 138, // 141: signal.backup.Group.GroupSnapshot.membersBanned:type_name -> signal.backup.Group.MemberBanned - 13, // 142: signal.backup.Group.Member.role:type_name -> signal.backup.Group.Member.Role - 135, // 143: signal.backup.Group.MemberPendingProfileKey.member:type_name -> signal.backup.Group.Member - 14, // 144: signal.backup.Group.AccessControl.attributes:type_name -> signal.backup.Group.AccessControl.AccessRequired - 14, // 145: signal.backup.Group.AccessControl.members:type_name -> signal.backup.Group.AccessControl.AccessRequired - 14, // 146: signal.backup.Group.AccessControl.addFromInviteLink:type_name -> signal.backup.Group.AccessControl.AccessRequired - 14, // 147: signal.backup.Group.AccessControl.memberLabel:type_name -> signal.backup.Group.AccessControl.AccessRequired - 51, // 148: signal.backup.ChatItem.OutgoingMessageDetails.sendStatus:type_name -> signal.backup.SendStatus - 18, // 149: signal.backup.SendStatus.Failed.reason:type_name -> signal.backup.SendStatus.Failed.FailureReason - 52, // 150: signal.backup.DirectStoryReplyMessage.TextReply.text:type_name -> signal.backup.Text - 65, // 151: signal.backup.DirectStoryReplyMessage.TextReply.longText:type_name -> signal.backup.FilePointer - 155, // 152: signal.backup.PaymentNotification.TransactionDetails.transaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction - 154, // 153: signal.backup.PaymentNotification.TransactionDetails.failedTransaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction - 19, // 154: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.reason:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.FailureReason - 20, // 155: signal.backup.PaymentNotification.TransactionDetails.Transaction.status:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction.Status - 153, // 156: signal.backup.PaymentNotification.TransactionDetails.Transaction.mobileCoinIdentification:type_name -> signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification - 22, // 157: signal.backup.ContactAttachment.Phone.type:type_name -> signal.backup.ContactAttachment.Phone.Type - 23, // 158: signal.backup.ContactAttachment.Email.type:type_name -> signal.backup.ContactAttachment.Email.Type - 24, // 159: signal.backup.ContactAttachment.PostalAddress.type:type_name -> signal.backup.ContactAttachment.PostalAddress.Type - 64, // 160: signal.backup.Quote.QuotedAttachment.thumbnail:type_name -> signal.backup.MessageAttachment - 164, // 161: signal.backup.Poll.PollOption.votes:type_name -> signal.backup.Poll.PollOption.PollVote - 81, // 162: signal.backup.GroupChangeChatUpdate.Update.genericGroupUpdate:type_name -> signal.backup.GenericGroupUpdate - 82, // 163: signal.backup.GroupChangeChatUpdate.Update.groupCreationUpdate:type_name -> signal.backup.GroupCreationUpdate - 83, // 164: signal.backup.GroupChangeChatUpdate.Update.groupNameUpdate:type_name -> signal.backup.GroupNameUpdate - 84, // 165: signal.backup.GroupChangeChatUpdate.Update.groupAvatarUpdate:type_name -> signal.backup.GroupAvatarUpdate - 85, // 166: signal.backup.GroupChangeChatUpdate.Update.groupDescriptionUpdate:type_name -> signal.backup.GroupDescriptionUpdate - 86, // 167: signal.backup.GroupChangeChatUpdate.Update.groupMembershipAccessLevelChangeUpdate:type_name -> signal.backup.GroupMembershipAccessLevelChangeUpdate - 88, // 168: signal.backup.GroupChangeChatUpdate.Update.groupAttributesAccessLevelChangeUpdate:type_name -> signal.backup.GroupAttributesAccessLevelChangeUpdate - 89, // 169: signal.backup.GroupChangeChatUpdate.Update.groupAnnouncementOnlyChangeUpdate:type_name -> signal.backup.GroupAnnouncementOnlyChangeUpdate - 90, // 170: signal.backup.GroupChangeChatUpdate.Update.groupAdminStatusUpdate:type_name -> signal.backup.GroupAdminStatusUpdate - 91, // 171: signal.backup.GroupChangeChatUpdate.Update.groupMemberLeftUpdate:type_name -> signal.backup.GroupMemberLeftUpdate - 92, // 172: signal.backup.GroupChangeChatUpdate.Update.groupMemberRemovedUpdate:type_name -> signal.backup.GroupMemberRemovedUpdate - 93, // 173: signal.backup.GroupChangeChatUpdate.Update.selfInvitedToGroupUpdate:type_name -> signal.backup.SelfInvitedToGroupUpdate - 94, // 174: signal.backup.GroupChangeChatUpdate.Update.selfInvitedOtherUserToGroupUpdate:type_name -> signal.backup.SelfInvitedOtherUserToGroupUpdate - 95, // 175: signal.backup.GroupChangeChatUpdate.Update.groupUnknownInviteeUpdate:type_name -> signal.backup.GroupUnknownInviteeUpdate - 96, // 176: signal.backup.GroupChangeChatUpdate.Update.groupInvitationAcceptedUpdate:type_name -> signal.backup.GroupInvitationAcceptedUpdate - 97, // 177: signal.backup.GroupChangeChatUpdate.Update.groupInvitationDeclinedUpdate:type_name -> signal.backup.GroupInvitationDeclinedUpdate - 98, // 178: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedUpdate:type_name -> signal.backup.GroupMemberJoinedUpdate - 99, // 179: signal.backup.GroupChangeChatUpdate.Update.groupMemberAddedUpdate:type_name -> signal.backup.GroupMemberAddedUpdate - 100, // 180: signal.backup.GroupChangeChatUpdate.Update.groupSelfInvitationRevokedUpdate:type_name -> signal.backup.GroupSelfInvitationRevokedUpdate - 101, // 181: signal.backup.GroupChangeChatUpdate.Update.groupInvitationRevokedUpdate:type_name -> signal.backup.GroupInvitationRevokedUpdate - 102, // 182: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestUpdate:type_name -> signal.backup.GroupJoinRequestUpdate - 103, // 183: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestApprovalUpdate:type_name -> signal.backup.GroupJoinRequestApprovalUpdate - 104, // 184: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestCanceledUpdate:type_name -> signal.backup.GroupJoinRequestCanceledUpdate - 106, // 185: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkResetUpdate:type_name -> signal.backup.GroupInviteLinkResetUpdate - 107, // 186: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkEnabledUpdate:type_name -> signal.backup.GroupInviteLinkEnabledUpdate - 108, // 187: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkAdminApprovalUpdate:type_name -> signal.backup.GroupInviteLinkAdminApprovalUpdate - 109, // 188: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkDisabledUpdate:type_name -> signal.backup.GroupInviteLinkDisabledUpdate - 110, // 189: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedByLinkUpdate:type_name -> signal.backup.GroupMemberJoinedByLinkUpdate - 111, // 190: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationUpdate:type_name -> signal.backup.GroupV2MigrationUpdate - 112, // 191: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationSelfInvitedUpdate:type_name -> signal.backup.GroupV2MigrationSelfInvitedUpdate - 113, // 192: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationInvitedMembersUpdate:type_name -> signal.backup.GroupV2MigrationInvitedMembersUpdate - 114, // 193: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationDroppedMembersUpdate:type_name -> signal.backup.GroupV2MigrationDroppedMembersUpdate - 105, // 194: signal.backup.GroupChangeChatUpdate.Update.groupSequenceOfRequestsAndCancelsUpdate:type_name -> signal.backup.GroupSequenceOfRequestsAndCancelsUpdate - 115, // 195: signal.backup.GroupChangeChatUpdate.Update.groupExpirationTimerUpdate:type_name -> signal.backup.GroupExpirationTimerUpdate - 87, // 196: signal.backup.GroupChangeChatUpdate.Update.groupMemberLabelAccessLevelChangeUpdate:type_name -> signal.backup.GroupMemberLabelAccessLevelChangeUpdate - 116, // 197: signal.backup.GroupChangeChatUpdate.Update.groupTerminateChangeUpdate:type_name -> signal.backup.GroupTerminateChangeUpdate - 167, // 198: signal.backup.ChatStyle.CustomChatColor.gradient:type_name -> signal.backup.ChatStyle.Gradient - 199, // [199:199] is the sub-list for method output_type - 199, // [199:199] is the sub-list for method input_type - 199, // [199:199] is the sub-list for extension type_name - 199, // [199:199] is the sub-list for extension extendee - 0, // [0:199] is the sub-list for field type_name + 41, // 13: signal.backup.Recipient.contact:type_name -> signal.backup.Contact + 42, // 14: signal.backup.Recipient.group:type_name -> signal.backup.Group + 48, // 15: signal.backup.Recipient.distributionList:type_name -> signal.backup.DistributionListItem + 43, // 16: signal.backup.Recipient.self:type_name -> signal.backup.Self + 44, // 17: signal.backup.Recipient.releaseNotes:type_name -> signal.backup.ReleaseNotes + 46, // 18: signal.backup.Recipient.callLink:type_name -> signal.backup.CallLink + 11, // 19: signal.backup.Contact.visibility:type_name -> signal.backup.Contact.Visibility + 129, // 20: signal.backup.Contact.registered:type_name -> signal.backup.Contact.Registered + 130, // 21: signal.backup.Contact.notRegistered:type_name -> signal.backup.Contact.NotRegistered + 10, // 22: signal.backup.Contact.identityState:type_name -> signal.backup.Contact.IdentityState + 131, // 23: signal.backup.Contact.nickname:type_name -> signal.backup.Contact.Name + 0, // 24: signal.backup.Contact.avatarColor:type_name -> signal.backup.AvatarColor + 12, // 25: signal.backup.Group.storySendMode:type_name -> signal.backup.Group.StorySendMode + 132, // 26: signal.backup.Group.snapshot:type_name -> signal.backup.Group.GroupSnapshot + 0, // 27: signal.backup.Group.avatarColor:type_name -> signal.backup.AvatarColor + 0, // 28: signal.backup.Self.avatarColor:type_name -> signal.backup.AvatarColor + 120, // 29: signal.backup.Chat.style:type_name -> signal.backup.ChatStyle + 15, // 30: signal.backup.CallLink.restrictions:type_name -> signal.backup.CallLink.Restrictions + 16, // 31: signal.backup.AdHocCall.state:type_name -> signal.backup.AdHocCall.State + 49, // 32: signal.backup.DistributionListItem.distributionList:type_name -> signal.backup.DistributionList + 17, // 33: signal.backup.DistributionList.privacyMode:type_name -> signal.backup.DistributionList.PrivacyMode + 50, // 34: signal.backup.ChatItem.revisions:type_name -> signal.backup.ChatItem + 139, // 35: signal.backup.ChatItem.incoming:type_name -> signal.backup.ChatItem.IncomingMessageDetails + 140, // 36: signal.backup.ChatItem.outgoing:type_name -> signal.backup.ChatItem.OutgoingMessageDetails + 141, // 37: signal.backup.ChatItem.directionless:type_name -> signal.backup.ChatItem.DirectionlessMessageDetails + 53, // 38: signal.backup.ChatItem.standardMessage:type_name -> signal.backup.StandardMessage + 54, // 39: signal.backup.ChatItem.contactMessage:type_name -> signal.backup.ContactMessage + 60, // 40: signal.backup.ChatItem.stickerMessage:type_name -> signal.backup.StickerMessage + 61, // 41: signal.backup.ChatItem.remoteDeletedMessage:type_name -> signal.backup.RemoteDeletedMessage + 71, // 42: signal.backup.ChatItem.updateMessage:type_name -> signal.backup.ChatUpdateMessage + 56, // 43: signal.backup.ChatItem.paymentNotification:type_name -> signal.backup.PaymentNotification + 57, // 44: signal.backup.ChatItem.giftBadge:type_name -> signal.backup.GiftBadge + 58, // 45: signal.backup.ChatItem.viewOnceMessage:type_name -> signal.backup.ViewOnceMessage + 55, // 46: signal.backup.ChatItem.directStoryReplyMessage:type_name -> signal.backup.DirectStoryReplyMessage + 69, // 47: signal.backup.ChatItem.poll:type_name -> signal.backup.Poll + 70, // 48: signal.backup.ChatItem.adminDeletedMessage:type_name -> signal.backup.AdminDeletedMessage + 142, // 49: signal.backup.ChatItem.pinDetails:type_name -> signal.backup.ChatItem.PinDetails + 143, // 50: signal.backup.SendStatus.pending:type_name -> signal.backup.SendStatus.Pending + 144, // 51: signal.backup.SendStatus.sent:type_name -> signal.backup.SendStatus.Sent + 145, // 52: signal.backup.SendStatus.delivered:type_name -> signal.backup.SendStatus.Delivered + 146, // 53: signal.backup.SendStatus.read:type_name -> signal.backup.SendStatus.Read + 147, // 54: signal.backup.SendStatus.viewed:type_name -> signal.backup.SendStatus.Viewed + 148, // 55: signal.backup.SendStatus.skipped:type_name -> signal.backup.SendStatus.Skipped + 149, // 56: signal.backup.SendStatus.failed:type_name -> signal.backup.SendStatus.Failed + 67, // 57: signal.backup.Text.bodyRanges:type_name -> signal.backup.BodyRange + 66, // 58: signal.backup.StandardMessage.quote:type_name -> signal.backup.Quote + 52, // 59: signal.backup.StandardMessage.text:type_name -> signal.backup.Text + 64, // 60: signal.backup.StandardMessage.attachments:type_name -> signal.backup.MessageAttachment + 63, // 61: signal.backup.StandardMessage.linkPreview:type_name -> signal.backup.LinkPreview + 65, // 62: signal.backup.StandardMessage.longText:type_name -> signal.backup.FilePointer + 68, // 63: signal.backup.StandardMessage.reactions:type_name -> signal.backup.Reaction + 59, // 64: signal.backup.ContactMessage.contact:type_name -> signal.backup.ContactAttachment + 68, // 65: signal.backup.ContactMessage.reactions:type_name -> signal.backup.Reaction + 150, // 66: signal.backup.DirectStoryReplyMessage.textReply:type_name -> signal.backup.DirectStoryReplyMessage.TextReply + 68, // 67: signal.backup.DirectStoryReplyMessage.reactions:type_name -> signal.backup.Reaction + 151, // 68: signal.backup.PaymentNotification.transactionDetails:type_name -> signal.backup.PaymentNotification.TransactionDetails + 21, // 69: signal.backup.GiftBadge.state:type_name -> signal.backup.GiftBadge.State + 64, // 70: signal.backup.ViewOnceMessage.attachment:type_name -> signal.backup.MessageAttachment + 68, // 71: signal.backup.ViewOnceMessage.reactions:type_name -> signal.backup.Reaction + 155, // 72: signal.backup.ContactAttachment.name:type_name -> signal.backup.ContactAttachment.Name + 156, // 73: signal.backup.ContactAttachment.number:type_name -> signal.backup.ContactAttachment.Phone + 157, // 74: signal.backup.ContactAttachment.email:type_name -> signal.backup.ContactAttachment.Email + 158, // 75: signal.backup.ContactAttachment.address:type_name -> signal.backup.ContactAttachment.PostalAddress + 65, // 76: signal.backup.ContactAttachment.avatar:type_name -> signal.backup.FilePointer + 62, // 77: signal.backup.StickerMessage.sticker:type_name -> signal.backup.Sticker + 68, // 78: signal.backup.StickerMessage.reactions:type_name -> signal.backup.Reaction + 65, // 79: signal.backup.Sticker.data:type_name -> signal.backup.FilePointer + 65, // 80: signal.backup.LinkPreview.image:type_name -> signal.backup.FilePointer + 65, // 81: signal.backup.MessageAttachment.pointer:type_name -> signal.backup.FilePointer + 25, // 82: signal.backup.MessageAttachment.flag:type_name -> signal.backup.MessageAttachment.Flag + 159, // 83: signal.backup.FilePointer.locatorInfo:type_name -> signal.backup.FilePointer.LocatorInfo + 52, // 84: signal.backup.Quote.text:type_name -> signal.backup.Text + 160, // 85: signal.backup.Quote.attachments:type_name -> signal.backup.Quote.QuotedAttachment + 26, // 86: signal.backup.Quote.type:type_name -> signal.backup.Quote.Type + 27, // 87: signal.backup.BodyRange.style:type_name -> signal.backup.BodyRange.Style + 161, // 88: signal.backup.Poll.options:type_name -> signal.backup.Poll.PollOption + 68, // 89: signal.backup.Poll.reactions:type_name -> signal.backup.Reaction + 74, // 90: signal.backup.ChatUpdateMessage.simpleUpdate:type_name -> signal.backup.SimpleChatUpdate + 80, // 91: signal.backup.ChatUpdateMessage.groupChange:type_name -> signal.backup.GroupChangeChatUpdate + 75, // 92: signal.backup.ChatUpdateMessage.expirationTimerChange:type_name -> signal.backup.ExpirationTimerChatUpdate + 76, // 93: signal.backup.ChatUpdateMessage.profileChange:type_name -> signal.backup.ProfileChangeChatUpdate + 78, // 94: signal.backup.ChatUpdateMessage.threadMerge:type_name -> signal.backup.ThreadMergeChatUpdate + 79, // 95: signal.backup.ChatUpdateMessage.sessionSwitchover:type_name -> signal.backup.SessionSwitchoverChatUpdate + 72, // 96: signal.backup.ChatUpdateMessage.individualCall:type_name -> signal.backup.IndividualCall + 73, // 97: signal.backup.ChatUpdateMessage.groupCall:type_name -> signal.backup.GroupCall + 77, // 98: signal.backup.ChatUpdateMessage.learnedProfileChange:type_name -> signal.backup.LearnedProfileChatUpdate + 117, // 99: signal.backup.ChatUpdateMessage.pollTerminate:type_name -> signal.backup.PollTerminateUpdate + 118, // 100: signal.backup.ChatUpdateMessage.pinMessage:type_name -> signal.backup.PinMessageUpdate + 28, // 101: signal.backup.IndividualCall.type:type_name -> signal.backup.IndividualCall.Type + 29, // 102: signal.backup.IndividualCall.direction:type_name -> signal.backup.IndividualCall.Direction + 30, // 103: signal.backup.IndividualCall.state:type_name -> signal.backup.IndividualCall.State + 31, // 104: signal.backup.GroupCall.state:type_name -> signal.backup.GroupCall.State + 32, // 105: signal.backup.SimpleChatUpdate.type:type_name -> signal.backup.SimpleChatUpdate.Type + 163, // 106: signal.backup.GroupChangeChatUpdate.updates:type_name -> signal.backup.GroupChangeChatUpdate.Update + 1, // 107: signal.backup.GroupMembershipAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel + 1, // 108: signal.backup.GroupAttributesAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel + 1, // 109: signal.backup.GroupMemberLabelAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel + 164, // 110: signal.backup.GroupInvitationRevokedUpdate.invitees:type_name -> signal.backup.GroupInvitationRevokedUpdate.Invitee + 33, // 111: signal.backup.ChatStyle.wallpaperPreset:type_name -> signal.backup.ChatStyle.WallpaperPreset + 65, // 112: signal.backup.ChatStyle.wallpaperPhoto:type_name -> signal.backup.FilePointer + 167, // 113: signal.backup.ChatStyle.autoBubbleColor:type_name -> signal.backup.ChatStyle.AutomaticBubbleColor + 34, // 114: signal.backup.ChatStyle.bubbleColorPreset:type_name -> signal.backup.ChatStyle.BubbleColorPreset + 35, // 115: signal.backup.NotificationProfile.scheduleDaysEnabled:type_name -> signal.backup.NotificationProfile.DayOfWeek + 36, // 116: signal.backup.ChatFolder.folderType:type_name -> signal.backup.ChatFolder.FolderType + 6, // 117: signal.backup.AccountData.UsernameLink.color:type_name -> signal.backup.AccountData.UsernameLink.Color + 7, // 118: signal.backup.AccountData.AutoDownloadSettings.images:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 119: signal.backup.AccountData.AutoDownloadSettings.audio:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 120: signal.backup.AccountData.AutoDownloadSettings.video:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 121: signal.backup.AccountData.AutoDownloadSettings.documents:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 2, // 122: signal.backup.AccountData.AccountSettings.phoneNumberSharingMode:type_name -> signal.backup.AccountData.PhoneNumberSharingMode + 120, // 123: signal.backup.AccountData.AccountSettings.defaultChatStyle:type_name -> signal.backup.ChatStyle + 166, // 124: signal.backup.AccountData.AccountSettings.customChatColors:type_name -> signal.backup.ChatStyle.CustomChatColor + 3, // 125: signal.backup.AccountData.AccountSettings.defaultSentMediaQuality:type_name -> signal.backup.AccountData.SentMediaQuality + 124, // 126: signal.backup.AccountData.AccountSettings.autoDownloadSettings:type_name -> signal.backup.AccountData.AutoDownloadSettings + 4, // 127: signal.backup.AccountData.AccountSettings.appTheme:type_name -> signal.backup.AccountData.AppTheme + 5, // 128: signal.backup.AccountData.AccountSettings.callsUseLessDataSetting:type_name -> signal.backup.AccountData.CallsUseLessDataSetting + 8, // 129: signal.backup.AccountData.AccountSettings.unreadBadgeType:type_name -> signal.backup.AccountData.AccountSettings.UnreadBadgeType + 9, // 130: signal.backup.AccountData.AndroidSpecificSettings.navigationBarSize:type_name -> signal.backup.AccountData.AndroidSpecificSettings.NavigationBarSize + 133, // 131: signal.backup.Group.GroupSnapshot.title:type_name -> signal.backup.Group.GroupAttributeBlob + 133, // 132: signal.backup.Group.GroupSnapshot.description:type_name -> signal.backup.Group.GroupAttributeBlob + 133, // 133: signal.backup.Group.GroupSnapshot.disappearingMessagesTimer:type_name -> signal.backup.Group.GroupAttributeBlob + 138, // 134: signal.backup.Group.GroupSnapshot.accessControl:type_name -> signal.backup.Group.AccessControl + 134, // 135: signal.backup.Group.GroupSnapshot.members:type_name -> signal.backup.Group.Member + 135, // 136: signal.backup.Group.GroupSnapshot.membersPendingProfileKey:type_name -> signal.backup.Group.MemberPendingProfileKey + 136, // 137: signal.backup.Group.GroupSnapshot.membersPendingAdminApproval:type_name -> signal.backup.Group.MemberPendingAdminApproval + 137, // 138: signal.backup.Group.GroupSnapshot.members_banned:type_name -> signal.backup.Group.MemberBanned + 13, // 139: signal.backup.Group.Member.role:type_name -> signal.backup.Group.Member.Role + 134, // 140: signal.backup.Group.MemberPendingProfileKey.member:type_name -> signal.backup.Group.Member + 14, // 141: signal.backup.Group.AccessControl.attributes:type_name -> signal.backup.Group.AccessControl.AccessRequired + 14, // 142: signal.backup.Group.AccessControl.members:type_name -> signal.backup.Group.AccessControl.AccessRequired + 14, // 143: signal.backup.Group.AccessControl.addFromInviteLink:type_name -> signal.backup.Group.AccessControl.AccessRequired + 14, // 144: signal.backup.Group.AccessControl.memberLabel:type_name -> signal.backup.Group.AccessControl.AccessRequired + 51, // 145: signal.backup.ChatItem.OutgoingMessageDetails.sendStatus:type_name -> signal.backup.SendStatus + 18, // 146: signal.backup.SendStatus.Failed.reason:type_name -> signal.backup.SendStatus.Failed.FailureReason + 52, // 147: signal.backup.DirectStoryReplyMessage.TextReply.text:type_name -> signal.backup.Text + 65, // 148: signal.backup.DirectStoryReplyMessage.TextReply.longText:type_name -> signal.backup.FilePointer + 154, // 149: signal.backup.PaymentNotification.TransactionDetails.transaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction + 153, // 150: signal.backup.PaymentNotification.TransactionDetails.failedTransaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction + 19, // 151: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.reason:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.FailureReason + 20, // 152: signal.backup.PaymentNotification.TransactionDetails.Transaction.status:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction.Status + 152, // 153: signal.backup.PaymentNotification.TransactionDetails.Transaction.mobileCoinIdentification:type_name -> signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification + 22, // 154: signal.backup.ContactAttachment.Phone.type:type_name -> signal.backup.ContactAttachment.Phone.Type + 23, // 155: signal.backup.ContactAttachment.Email.type:type_name -> signal.backup.ContactAttachment.Email.Type + 24, // 156: signal.backup.ContactAttachment.PostalAddress.type:type_name -> signal.backup.ContactAttachment.PostalAddress.Type + 64, // 157: signal.backup.Quote.QuotedAttachment.thumbnail:type_name -> signal.backup.MessageAttachment + 162, // 158: signal.backup.Poll.PollOption.votes:type_name -> signal.backup.Poll.PollOption.PollVote + 81, // 159: signal.backup.GroupChangeChatUpdate.Update.genericGroupUpdate:type_name -> signal.backup.GenericGroupUpdate + 82, // 160: signal.backup.GroupChangeChatUpdate.Update.groupCreationUpdate:type_name -> signal.backup.GroupCreationUpdate + 83, // 161: signal.backup.GroupChangeChatUpdate.Update.groupNameUpdate:type_name -> signal.backup.GroupNameUpdate + 84, // 162: signal.backup.GroupChangeChatUpdate.Update.groupAvatarUpdate:type_name -> signal.backup.GroupAvatarUpdate + 85, // 163: signal.backup.GroupChangeChatUpdate.Update.groupDescriptionUpdate:type_name -> signal.backup.GroupDescriptionUpdate + 86, // 164: signal.backup.GroupChangeChatUpdate.Update.groupMembershipAccessLevelChangeUpdate:type_name -> signal.backup.GroupMembershipAccessLevelChangeUpdate + 87, // 165: signal.backup.GroupChangeChatUpdate.Update.groupAttributesAccessLevelChangeUpdate:type_name -> signal.backup.GroupAttributesAccessLevelChangeUpdate + 90, // 166: signal.backup.GroupChangeChatUpdate.Update.groupAnnouncementOnlyChangeUpdate:type_name -> signal.backup.GroupAnnouncementOnlyChangeUpdate + 91, // 167: signal.backup.GroupChangeChatUpdate.Update.groupAdminStatusUpdate:type_name -> signal.backup.GroupAdminStatusUpdate + 92, // 168: signal.backup.GroupChangeChatUpdate.Update.groupMemberLeftUpdate:type_name -> signal.backup.GroupMemberLeftUpdate + 93, // 169: signal.backup.GroupChangeChatUpdate.Update.groupMemberRemovedUpdate:type_name -> signal.backup.GroupMemberRemovedUpdate + 94, // 170: signal.backup.GroupChangeChatUpdate.Update.selfInvitedToGroupUpdate:type_name -> signal.backup.SelfInvitedToGroupUpdate + 95, // 171: signal.backup.GroupChangeChatUpdate.Update.selfInvitedOtherUserToGroupUpdate:type_name -> signal.backup.SelfInvitedOtherUserToGroupUpdate + 96, // 172: signal.backup.GroupChangeChatUpdate.Update.groupUnknownInviteeUpdate:type_name -> signal.backup.GroupUnknownInviteeUpdate + 97, // 173: signal.backup.GroupChangeChatUpdate.Update.groupInvitationAcceptedUpdate:type_name -> signal.backup.GroupInvitationAcceptedUpdate + 98, // 174: signal.backup.GroupChangeChatUpdate.Update.groupInvitationDeclinedUpdate:type_name -> signal.backup.GroupInvitationDeclinedUpdate + 99, // 175: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedUpdate:type_name -> signal.backup.GroupMemberJoinedUpdate + 100, // 176: signal.backup.GroupChangeChatUpdate.Update.groupMemberAddedUpdate:type_name -> signal.backup.GroupMemberAddedUpdate + 101, // 177: signal.backup.GroupChangeChatUpdate.Update.groupSelfInvitationRevokedUpdate:type_name -> signal.backup.GroupSelfInvitationRevokedUpdate + 102, // 178: signal.backup.GroupChangeChatUpdate.Update.groupInvitationRevokedUpdate:type_name -> signal.backup.GroupInvitationRevokedUpdate + 103, // 179: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestUpdate:type_name -> signal.backup.GroupJoinRequestUpdate + 104, // 180: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestApprovalUpdate:type_name -> signal.backup.GroupJoinRequestApprovalUpdate + 105, // 181: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestCanceledUpdate:type_name -> signal.backup.GroupJoinRequestCanceledUpdate + 107, // 182: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkResetUpdate:type_name -> signal.backup.GroupInviteLinkResetUpdate + 108, // 183: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkEnabledUpdate:type_name -> signal.backup.GroupInviteLinkEnabledUpdate + 109, // 184: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkAdminApprovalUpdate:type_name -> signal.backup.GroupInviteLinkAdminApprovalUpdate + 110, // 185: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkDisabledUpdate:type_name -> signal.backup.GroupInviteLinkDisabledUpdate + 111, // 186: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedByLinkUpdate:type_name -> signal.backup.GroupMemberJoinedByLinkUpdate + 112, // 187: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationUpdate:type_name -> signal.backup.GroupV2MigrationUpdate + 113, // 188: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationSelfInvitedUpdate:type_name -> signal.backup.GroupV2MigrationSelfInvitedUpdate + 114, // 189: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationInvitedMembersUpdate:type_name -> signal.backup.GroupV2MigrationInvitedMembersUpdate + 115, // 190: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationDroppedMembersUpdate:type_name -> signal.backup.GroupV2MigrationDroppedMembersUpdate + 106, // 191: signal.backup.GroupChangeChatUpdate.Update.groupSequenceOfRequestsAndCancelsUpdate:type_name -> signal.backup.GroupSequenceOfRequestsAndCancelsUpdate + 116, // 192: signal.backup.GroupChangeChatUpdate.Update.groupExpirationTimerUpdate:type_name -> signal.backup.GroupExpirationTimerUpdate + 88, // 193: signal.backup.GroupChangeChatUpdate.Update.groupMemberLabelAccessLevelChangeUpdate:type_name -> signal.backup.GroupMemberLabelAccessLevelChangeUpdate + 89, // 194: signal.backup.GroupChangeChatUpdate.Update.groupTerminateChangeUpdate:type_name -> signal.backup.GroupTerminateChangeUpdate + 165, // 195: signal.backup.ChatStyle.CustomChatColor.gradient:type_name -> signal.backup.ChatStyle.Gradient + 196, // [196:196] is the sub-list for method output_type + 196, // [196:196] is the sub-list for method input_type + 196, // [196:196] is the sub-list for extension type_name + 196, // [196:196] is the sub-list for extension extendee + 0, // [0:196] is the sub-list for field type_name } func init() { file_backuppb_Backup_proto_init() } @@ -14286,7 +14088,6 @@ func file_backuppb_Backup_proto_init() { file_backuppb_Backup_proto_msgTypes[40].OneofWrappers = []any{ (*LearnedProfileChatUpdate_E164)(nil), (*LearnedProfileChatUpdate_Username)(nil), - (*LearnedProfileChatUpdate_SharedName)(nil), } file_backuppb_Backup_proto_msgTypes[44].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[45].OneofWrappers = []any{} @@ -14298,20 +14099,20 @@ func file_backuppb_Backup_proto_init() { file_backuppb_Backup_proto_msgTypes[51].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[52].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[53].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[55].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[54].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[56].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[58].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[57].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[59].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[60].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[62].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[61].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[63].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[64].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[66].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[69].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[65].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[67].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[70].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[71].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[72].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[78].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[73].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[79].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[83].OneofWrappers = []any{ (*ChatStyle_WallpaperPreset_)(nil), @@ -14326,28 +14127,28 @@ func file_backuppb_Backup_proto_init() { (*AccountData_IAPSubscriberData_PurchaseToken)(nil), (*AccountData_IAPSubscriberData_OriginalTransactionId)(nil), } - file_backuppb_Backup_proto_msgTypes[97].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[96].OneofWrappers = []any{ (*Group_GroupAttributeBlob_Title)(nil), (*Group_GroupAttributeBlob_Avatar)(nil), (*Group_GroupAttributeBlob_DisappearingMessagesDuration)(nil), (*Group_GroupAttributeBlob_DescriptionText)(nil), } - file_backuppb_Backup_proto_msgTypes[103].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[106].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[102].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[105].OneofWrappers = []any{ (*ChatItem_PinDetails_PinExpiresAtTimestamp)(nil), (*ChatItem_PinDetails_PinNeverExpires)(nil), } - file_backuppb_Backup_proto_msgTypes[115].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[114].OneofWrappers = []any{ (*PaymentNotification_TransactionDetails_Transaction_)(nil), (*PaymentNotification_TransactionDetails_FailedTransaction_)(nil), } - file_backuppb_Backup_proto_msgTypes[118].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[124].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[117].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[122].OneofWrappers = []any{ (*FilePointer_LocatorInfo_PlaintextHash)(nil), (*FilePointer_LocatorInfo_EncryptedDigest)(nil), } - file_backuppb_Backup_proto_msgTypes[125].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[128].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[123].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[126].OneofWrappers = []any{ (*GroupChangeChatUpdate_Update_GenericGroupUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupCreationUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupNameUpdate)(nil), @@ -14385,8 +14186,8 @@ func file_backuppb_Backup_proto_init() { (*GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate)(nil), } - file_backuppb_Backup_proto_msgTypes[129].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[131].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[127].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[129].OneofWrappers = []any{ (*ChatStyle_CustomChatColor_Solid)(nil), (*ChatStyle_CustomChatColor_Gradient)(nil), } @@ -14396,7 +14197,7 @@ func file_backuppb_Backup_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_backuppb_Backup_proto_rawDesc), len(file_backuppb_Backup_proto_rawDesc)), NumEnums: 37, - NumMessages: 133, + NumMessages: 131, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/backuppb/Backup.proto b/pkg/signalmeow/protobuf/backuppb/Backup.proto index 721e641..32b3ac3 100644 --- a/pkg/signalmeow/protobuf/backuppb/Backup.proto +++ b/pkg/signalmeow/protobuf/backuppb/Backup.proto @@ -182,10 +182,6 @@ message AccountData { NavigationBarSize navigationBarSize = 3; // If unset, treat the same as "Unknown" case } - message IOSSpecificSettings { - bool isSystemCallLogEnabled = 1; - } - bytes profileKey = 1; optional string username = 2; UsernameLink usernameLink = 3; @@ -200,8 +196,7 @@ message AccountData { AndroidSpecificSettings androidSpecificSettings = 12; string bioText = 13; string bioEmoji = 14; - reserved /*keyTransparencyData*/ 15; - IOSSpecificSettings iosSpecificSettings = 16; + reserved /*keyTransparencyData*/ 15; // No longer want to persist self-KT data } message Recipient { @@ -290,10 +285,8 @@ message Contact { string systemFamilyName = 19; string systemNickname = 20; optional AvatarColor avatarColor = 21; - // Opaque blob containing key transparency data for the contact optional bytes keyTransparencyData = 22; uint64 blockedAtTimestamp = 23; // if `blocked` is true, 0 means unknown block time - Name sharedName = 24; // absent iff both `given` and `family` are empty, name provided by third party } message Group { @@ -329,8 +322,8 @@ message Group { repeated MemberPendingProfileKey membersPendingProfileKey = 8; repeated MemberPendingAdminApproval membersPendingAdminApproval = 9; bytes inviteLinkPassword = 10; - bool announcementsOnly = 12; - repeated MemberBanned membersBanned = 13; + bool announcements_only = 12; + repeated MemberBanned members_banned = 13; bool terminated = 14; } @@ -694,12 +687,6 @@ message ContactAttachment { string nickname = 6; } - // The sharer's Signal nickname for this contact - message SignalNickname { - string given = 1; - string family = 2; - } - message Phone { enum Type { UNKNOWN = 0; // Interpret as "Home" @@ -748,15 +735,11 @@ message ContactAttachment { } optional Name name = 1; - reserved 2; repeated Phone number = 3; repeated Email email = 4; repeated PostalAddress address = 5; optional FilePointer avatar = 6; string organization = 7; - bytes aci = 8; // should be 16 bytes - optional SignalNickname nickname = 9; // absent iff both `given` and `family` are empty - string note = 10; } message StickerMessage { @@ -866,11 +849,6 @@ message FilePointer { optional string caption = 10; optional string blurHash = 11; LocatorInfo locatorInfo = 13; - // Waveform for audio attachments. Each byte represents a "bar" in the - // waveform, with 0 as silence 255 as loudest. At most 100 bytes/bars. - optional bytes audioWaveform = 14; - // Duration of an audio attachment, in seconds. - optional float audioDurationSeconds = 15; } message Quote { @@ -1071,7 +1049,6 @@ message LearnedProfileChatUpdate { oneof previousName { uint64 e164 = 1; string username = 2; - string sharedName = 3; } } @@ -1169,14 +1146,18 @@ message GroupMembershipAccessLevelChangeUpdate { GroupV2AccessLevel accessLevel = 2; } +message GroupAttributesAccessLevelChangeUpdate { + optional bytes updaterAci = 1; + GroupV2AccessLevel accessLevel = 2; +} + message GroupMemberLabelAccessLevelChangeUpdate { optional bytes updaterAci = 1; GroupV2AccessLevel accessLevel = 2; } -message GroupAttributesAccessLevelChangeUpdate { +message GroupTerminateChangeUpdate { optional bytes updaterAci = 1; - GroupV2AccessLevel accessLevel = 2; } message GroupAnnouncementOnlyChangeUpdate { @@ -1337,10 +1318,6 @@ message GroupExpirationTimerUpdate { optional bytes updaterAci = 2; } -message GroupTerminateChangeUpdate { - optional bytes updaterAci = 1; -} - message PollTerminateUpdate { uint64 targetSentTimestamp = 1; string question = 2; // Between 1-100 characters @@ -1358,12 +1335,6 @@ message StickerPack { message ChatStyle { message Gradient { - // Color ordering: - // 0 degrees: bottom-to-top - // 90 degrees: left-to-right - // 180 degrees: top-to-bottom - // 270 degrees: right-to-left - uint32 angle = 1; // degrees repeated fixed32 colors = 2; // 0xAARRGGBB repeated float positions = 3; // percent from 0 to 1 diff --git a/pkg/signalmeow/protobuf/org/signal/chat/account.proto b/pkg/signalmeow/protobuf/org/signal/chat/account.proto index b5ccede..c12755b 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/account.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/account.proto @@ -80,42 +80,22 @@ service Accounts { // Generates and stores a pending TOTP key for the authenticated account. // To "activate" the key, callers must call the `ConfirmTotpKey` endpoint. - // - // TOTP keys may only be generated for accounts without phone numbers. rpc GenerateTotpKey(GenerateTotpKeyRequest) returns (GenerateTotpKeyResponse) {} // Confirms that the caller has stored and can derive one-time passwords from // a pending TOTP key generated via `GenerateTotpKey` and stores/activates the // key for the caller's account - // - // TOTP keys may only be generated for accounts without phone numbers. rpc ConfirmTotpKey(ConfirmTotpKeyRequest) returns (ConfirmTotpKeyResponse) {} - // Returns parameters for initiating a WebAuthn registration ceremony - // - // WebAuthn credentials may only be registered for accounts without phone numbers - rpc StartWebAuthnRegistration(StartWebAuthnRegistrationRequest) returns (StartWebAuthnRegistrationResponse) {} - - // Concludes a WebAuthn registration ceremony to add a passkey to the authenticated account - // - // WebAuthn credentials may only be registered for accounts without phone numbers - rpc FinishWebAuthnRegistration(FinishWebAuthnRegistrationRequest) returns (FinishWebAuthnRegistrationResponse) {} - - // Returns a list of confirmed MFA keys for the authenticated account - rpc ListMfaKeys(ListMfaKeysRequest) returns (ListMfaKeysResponse) {} + // Returns a list of confirmed TOTP keys for the authenticated account + rpc ListTotpKeys(ListTotpKeysRequest) returns (ListTotpKeysResponse) {} // Updates encrypted, user-supplied metadata (e.g. a human-readable name and - // creation timestamp) for an existing, confirmed MFA key - rpc SetMfaKeyMetadata(SetMfaKeyMetadataRequest) returns (SetMfaKeyMetadataResponse) {} + // creation timestamp) for an existing, confirmed TOTP key + rpc SetTotpKeyMetadata(SetTotpKeyMetadataRequest) returns (SetTotpKeyMetadataResponse) {} - // Removes an MFA key from the authenticated account - rpc RemoveMfaKey(RemoveMfaKeyRequest) returns (RemoveMfaKeyResponse) {} - - // Requests the parameters needed to verify with an MFA factor associated with this account. - rpc StartMfaVerification(StartMfaVerificationRequest) returns (StartMfaVerificationResponse) {} - - // Attemps to verify an MFA factor associated with this account. - rpc FinishMfaVerification(FinishMfaVerificationRequest) returns (FinishMfaVerificationResponse) {} + // Removes a TOTP from the authenticated account + rpc RemoveTotpKey(RemoveTotpKeyRequest) returns (RemoveTotpKeyResponse) {} } // Provides methods for looking up Signal accounts. Callers must not provide @@ -553,10 +533,6 @@ message GenerateTotpKeyResponse { // The authenticated account already has too many TOTP keys, and the caller // must remove one before adding more errors.FailedPrecondition too_many_totp_keys = 2 [(tag.reason) = "too_many_totp_keys"]; - - // The authenticated account already has too many MFA keys of all types, and - // the caller must remove one before adding more - errors.FailedPrecondition too_many_mfa_keys = 3 [(tag.reason) = "too_many_mfa_keys"]; } } @@ -573,7 +549,7 @@ message ConfirmTotpKeyRequest { message ConfirmTotpKeyResponse { message KeyConfirmed { // The account-specific identifier for the newly-confirmed TOTP key - uint32 key_id = 1 [(require.range) = {min: 0, max: 127}]; + uint32 key_id = 1; } oneof response { @@ -584,160 +560,49 @@ message ConfirmTotpKeyResponse { // The provided one-time password was not valid for any reason (including // incorrect passwords, misaligned clocks, or missing account records) errors.FailedPrecondition one_time_password_not_verified = 2 [(tag.reason) = "one_time_password_not_verified"]; - - // The authenticated account already has too many MFA keys of all types, and - // the caller must remove one before adding more - errors.FailedPrecondition too_many_mfa_keys = 3 [(tag.reason) = "too_many_mfa_keys"]; } } -message StartWebAuthnRegistrationRequest { -} +message ListTotpKeysRequest {} -message StartWebAuthnRegistrationResponse { - message WebAuthnCreateParameters { - // The "user handle" (user.id) that should be handed to the authenticator - bytes user_handle = 1; +message ListTotpKeysResponse { + message TotpKeyMetadata { + // The user-provided ciphertext for metadata associated with this TOTP key + bytes metadata_ciphertext = 1; - // The COSE IDs (https://www.iana.org/assignments/cose#algorithms) of - // acceptable algorithms for the created key - repeated int64 allowed_algorithms = 2; - - // A list of the credential IDs already registered for this account; these - // can be passed to candidate authenticators to tell them not to create a - // new key if they already have a private key matching one of these - repeated bytes exclude_credential_ids = 3; + // The TOTP parameters associated with this key + TotpParameters totp_parameters = 2; } - oneof response { - // The parameters to use for a WebAuthn registration ceremony - WebAuthnCreateParameters params = 1; - - // The authenticated account already has too many MFA keys, and the - // caller must remove one before adding one - errors.FailedPrecondition too_many_mfa_keys = 2 [(tag.reason) = "too_many_mfa_keys"]; - } + map keys = 1; } -message FinishWebAuthnRegistrationRequest { - // The attestation object from a completed registration ceremony, serialized - // as specified in https://www.w3.org/TR/webauthn/#attestation-object - bytes attestation_object = 1; - - // The "collected client data" map used in the registration ceremony, as the - // exact JSON map that was hashed for the authenticator - string collected_client_data_json = 2; - - // The ciphertext of user-provided metadata (presumably including a - // human-readable name and creation timestamp) to be attached to the - // newly-confirmed key - bytes metadata_ciphertext = 3 [(require.exactlySize) = 160]; -} - -message FinishWebAuthnRegistrationResponse { - message KeyConfirmed { - // An account-specific identifier for the new WebAuthn key - uint32 key_id = 1 [(require.range) = {min: 0, max: 127}]; - } - - oneof response { - // The provided public key has been registered for the account - KeyConfirmed key_confirmed = 1; - - // The registration response was not verified successfully for any reason - errors.FailedPrecondition key_not_confirmed = 2 [(tag.reason) = "registration_ceremony_unsuccessful"]; - - // The authenticated account already has too many MFA keys, and the - // caller must remove one before adding one (this can be true even if it - // was not when starting the request, since there is nothing to prevent - // multiple registrations from occurring in parallel) - errors.FailedPrecondition too_many_mfa_keys = 3 [(tag.reason) = "too_many_mfa_keys"]; - } -} - -message ListMfaKeysRequest {} - -message ListMfaKeysResponse { - message MfaKeyMetadata { - enum MfaKeyType { - MFA_KEY_TYPE_UNSPECIFIED = 0; - MFA_KEY_TYPE_TOTP = 1; - MFA_KEY_TYPE_WEBAUTHN = 2; - } - - // The user-provided ciphertext for metadata associated with this MFA key - bytes metadata_ciphertext = 1 [(require.exactlySize) = 160]; - - // The type of MFA factor this key is for - MfaKeyType type = 2; - } - - map keys = 1; -} - -message SetMfaKeyMetadataRequest { - // The account-specific identifier of the MFA key to modify - uint32 key_id = 1 [(require.range) = {min: 0, max: 127}]; +message SetTotpKeyMetadataRequest { + // The account-specific identifier of the TOTP key to modify + uint32 key_id = 1; // The ciphertext of the new user-provided metadata to be attached to the // identified key bytes metadata_ciphertext = 2 [(require.exactlySize) = 160]; } -message SetMfaKeyMetadataResponse { +message SetTotpKeyMetadataResponse { message MetadataUpdated { } oneof response { - // New metadata was stored for the identified key - MetadataUpdated success = 1; + // New metadata was stored for the identified TOTP key + MetadataUpdated metadata_updated = 1; // No TOTP was found with the given ID errors.NotFound key_not_found = 2 [(tag.reason) = "key_not_found"]; } } -message RemoveMfaKeyRequest { - // The account-specific identifier of the MFA key to remove - uint32 key_id = 1 [(require.range) = {min: 0, max: 127}]; +message RemoveTotpKeyRequest { + // The account-specific identifier of the TOTP key to remove + uint32 key_id = 1; } -message RemoveMfaKeyResponse { -} - -message StartMfaVerificationRequest { -} - -message StartMfaVerificationResponse { - /// If true, a TOTP password will be accepted for verification - bool has_totp = 1; - - message WebAuthnAuthenticationParameters { - /// A random challenge that must be included in the authenticator response, to prevent replay attacks - bytes challenge = 1; - - /// The estimated amount of time, in seconds, after which an otherwise-valid response will be rejected - uint32 timeout_seconds = 2; - - /// A list of credential IDs associated with this account - repeated bytes allowed_credential_ids = 3; - } - - /// If present, information required to complete a WebAuthn authentication - optional WebAuthnAuthenticationParameters webauthn_authentication_parameters = 2; -} - -message FinishMfaVerificationRequest { - oneof credential { - /// A 6-digit TOTP password to validate - uint32 totp_password = 1; - - /// A WebAuthn-compatible JSON-serialized authentication response - string webauthn_authentication_response_json = 2; - } -} - -message FinishMfaVerificationResponse { - /// If true, the selected authentication factor was verified correctly. - bool success = 1; +message RemoveTotpKeyResponse { } diff --git a/pkg/signalmeow/protobuf/org/signal/chat/backups.proto b/pkg/signalmeow/protobuf/org/signal/chat/backups.proto index fec7709..92b7506 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/backups.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/backups.proto @@ -59,9 +59,6 @@ service Backups { // Clients must validate the receipt level on the credential matches a known // receipt level before using it. rpc GetBackupAuthCredentials(GetBackupAuthCredentialsRequest) returns (GetBackupAuthCredentialsResponse) {} - - // Retrieve backup ID rotation limits - rpc GetBackupIdLimits(google.protobuf.Empty) returns (GetBackupIdLimitsResponse) {} } message SetBackupIdRequest { @@ -128,13 +125,6 @@ message GetBackupAuthCredentialsResponse { Credentials credentials = 1; } -message GetBackupIdLimitsResponse { - // If true, a call to SetBackupId may succeed without waiting - bool hasPermitsRemaining = 1; - // How long to wait before a permit becomes available, in seconds - uint64 retryAfterSeconds = 2; -} - // Service for backup operations with anonymous credentials // // This service never requires account authentication. It instead requires a diff --git a/pkg/signalmeow/protobuf/org/signal/chat/challenge.proto b/pkg/signalmeow/protobuf/org/signal/chat/challenge.proto index 3476143..a3eef30 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/challenge.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/challenge.proto @@ -9,46 +9,17 @@ option java_multiple_files = true; package org.signal.chat.challenge; -import "google/protobuf/empty.proto"; -import "org/signal/chat/errors.proto"; import "org/signal/chat/require.proto"; -import "org/signal/chat/tag.proto"; service Challenge { option (require.auth) = AUTH_ONLY_AUTHENTICATED; + // Submit proof of a challenge completion - // Submit proof of a challenge completion. - // - // Some server endpoints (the "send message" endpoint, for example) may return - // a response indicating the client must complete a challenge before continuing. - // Clients may use this endpoint to provide proof of a completed challenge. - // If successful, the client may then continue their original operation. - rpc AnswerChallenge(AnswerChallengeRequest) returns (AnswerChallengeResponse) {} - - // Requests that a challenge value be sent to the authenticated account's - // primary device via push notification. Once received, callers may present - // the challenge value via the HandleChallengeResponse RPC. - // - // APNs challenge payloads will be formatted as follows: - // - // ``` - // { - // "aps": { - // "sound": "default", - // "alert": { - // "loc-key": "APN_Message" - // } - // }, - // "rateLimitChallenge": "{CHALLENGE_TOKEN}" - // } - // ``` - // - // FCM challenge payloads will be formatted as follows: - // - // ``` - // {"rateLimitChallenge": "{CHALLENGE_TOKEN}"} - // ``` - rpc RequestPushChallenge(RequestPushChallengeRequest) returns (RequestPushChallengeResponse) {} + // Some server endpoints (the "send message" endpoint, for example) may return + // a response indicating the client must complete a challenge before continuing. + // Clients may use this endpoint to provide proof of a completed challenge. + // If successful, the client may then continue their original operation. + rpc HandleChallengeResponse(AnswerChallengeRequest) returns (AnswerChallengeResponse) {} } message AnswerChallengeRequest { @@ -72,26 +43,10 @@ message AnswerChallengeRequest { AnswerPushChallengeRequest push = 2; AnswerCaptchaChallengeRequest captcha = 3; } + } message AnswerChallengeResponse { // Whether the challenge proof was accepted bool success = 1; } - -message RequestPushChallengeRequest { -} - -message RequestPushChallengeResponse { - message SentPushChallenge { - } - - oneof response { - // The server attempted to send a challenge value to the authenticated - // account's primary device via a push notification. - google.protobuf.Empty sent_push_challenge = 1; - - // The authenticated account's primary device does not have a push token. - errors.FailedPrecondition no_push_token = 2 [(tag.reason) = "no_push_token"]; - } -} diff --git a/pkg/signalmeow/protobuf/org/signal/chat/credentials.proto b/pkg/signalmeow/protobuf/org/signal/chat/credentials.proto index b7d58af..fa9dce7 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/credentials.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/credentials.proto @@ -7,7 +7,6 @@ syntax = "proto3"; option java_multiple_files = true; -import "org/signal/chat/common.proto"; import "org/signal/chat/require.proto"; package org.signal.chat.credentials; @@ -34,8 +33,8 @@ service Credentials { returns (GetGroupCredentialsResponse) {} // Generates zero-knowledge credentials for creating call links. - rpc GetCreateCallLinkCredential(GetCreateCallLinkCredentialRequest) - returns (GetCreateCallLinkCredentialResponse) {} + rpc GetCreateCallLinkCredentials(GetCreateCallLinkCredentialsRequest) + returns (GetCreateCallLinkCredentialsResponse) {} } // Provides methods for working with previously-generated credentials without @@ -131,26 +130,37 @@ message GetGroupCredentialsRequest { } message GetGroupCredentialsResponse { + // A zero-knowledge credential that may be redeemed at or up to one day after + // the given redemption time + message CredentialAndRedemptionTime { + bytes credential = 1; + uint64 redemption_time_seconds = 2; + } + // A collection of credentials allowing the holder to anonymously // authenticate themselves for group-related actions - repeated common.ZkCredential group_credentials = 1; + repeated CredentialAndRedemptionTime group_credentials = 1; // A collection of credentials allowing the holder to read, update, and delete // group call links - repeated common.ZkCredential call_link_auth_credentials = 2; + repeated CredentialAndRedemptionTime call_link_auth_credentials = 2; // The phone number identifier for which the included credentials were // generated. Empty if the account does not have a phone number. bytes pni = 3; } -message GetCreateCallLinkCredentialRequest { +message GetCreateCallLinkCredentialsRequest { // A zero-knowledge credential request bytes credential_request = 1; } -message GetCreateCallLinkCredentialResponse { +message GetCreateCallLinkCredentialsResponse { // A zero-knowledge credential that may be redeemed at or up to one day after // the given redemption time bytes credential = 1; + + // The earliest time, in seconds since the epoch, at which the associated + // credential may be redeemed + uint64 redemption_time_seconds = 2; } diff --git a/pkg/signalmeow/protobuf/org/signal/chat/donations.proto b/pkg/signalmeow/protobuf/org/signal/chat/donations.proto index 220514e..0ea3022 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/donations.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/donations.proto @@ -16,7 +16,7 @@ import "org/signal/chat/tag.proto"; service Donations { option (require.auth) = AUTH_ONLY_AUTHENTICATED; - // Redeem a receipt acquired from Subscriptions.GetReceiptCredential + // Redeem a receipt acquired from Subscriptions.CreateSubscriptionReceiptCredentials // to add a badge to the account. After successful redemption, profile // responses will include the corresponding badge (if configured as visible) // until the expiration time on the receipt. diff --git a/pkg/signalmeow/protobuf/org/signal/chat/messages.proto b/pkg/signalmeow/protobuf/org/signal/chat/messages.proto index 0b7f4b3..b6bb6a7 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/messages.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/messages.proto @@ -49,9 +49,6 @@ service Messages { // a STREAM_CLOSED error reason. A GetMessagesStreamClosed message will be // present in the error details. rpc GetMessages(stream GetMessagesRequest) returns (stream GetMessagesResponse) {} - - // Reports a message as spam. - rpc ReportMessage(ReportMessageRequest) returns (ReportMessageResponse) {} } message GetMessagesRequest { @@ -438,18 +435,3 @@ message ChallengeRequired { // resolved by waiting. optional uint64 retry_after_seconds = 3; } - -message ReportMessageRequest { - // The service identifier of the party that sent the offending message - common.ServiceIdentifier source_service_identifier = 1; - - // The GUID of the offending message - bytes message_guid = 2 [(require.exactlySize) = 16]; - - // The spam-reporting token attached to the offending message - bytes report_spam_token = 3; -} - - -message ReportMessageResponse { -} diff --git a/pkg/signalmeow/protobuf/org/signal/chat/one_time_donations.proto b/pkg/signalmeow/protobuf/org/signal/chat/one_time_donations.proto index 6ad57e0..11e53ab 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/one_time_donations.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/one_time_donations.proto @@ -21,18 +21,11 @@ service OneTimeDonations { option (require.auth) = AUTH_ONLY_ANONYMOUS; // Create a Stripe payment intent and return a client secret that can be used to complete the payment. - // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredential + // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredentials rpc CreateBoost(CreateBoostRequest) returns (CreateBoostResponse) {} // Create a PayPal one-time payment. - // - // Once the payment is complete, call ConfirmPayPalBoost with the payment ID - // and token. - // - // The PayPal approval page presented to the user may be localized. Callers - // should set their language preferences via an "Accept-Language" header on - // the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Once the payment is complete, call ConfirmPayPalBoost with the payment ID and token rpc CreatePayPalBoost(CreatePayPalBoostRequest) returns (CreatePayPalBoostResponse) {} // Confirm a PayPal one-time payment @@ -41,19 +34,19 @@ service OneTimeDonations { // Obtain a ZK receipt credential for a completed one-time donation payment. // The receipt credential can then be used to redeem the one-time donation entitlement // via Donations.RedeemReceipt - rpc CreateBoostReceiptCredential(CreateBoostReceiptCredentialRequest) returns (CreateBoostReceiptCredentialResponse) {} + rpc CreateBoostReceiptCredentials(CreateBoostReceiptCredentialsRequest) returns (CreateBoostReceiptCredentialsResponse) {} } // The amount is below the minimum for the currency. message AmountBelowMinimumError { - // The minimum amount for the currency in the [currency's minor unit](https://docs.stripe.com/currencies#minor-units) - uint64 minimum = 1; + // The minimum amount for the currency + string minimum = 1; } // The SEPA Direct Debit amount exceeds the allowed maximum. message AmountAboveSepaLimitError { - // The maximum amount for a SEPA transaction in the [currency's minor unit](https://docs.stripe.com/currencies#minor-units) - uint64 maximum = 1; + // The maximum amount for a SEPA transaction + string maximum = 1; } message CreateBoostRequest { @@ -149,7 +142,7 @@ message ConfirmPayPalBoostResponse { } } -message CreateBoostReceiptCredentialRequest { +message CreateBoostReceiptCredentialsRequest { // a payment ID from the processor string payment_intent_id = 1 [(require.nonEmpty) = true]; // ZK blind-signature receipt credential request bytes @@ -158,12 +151,12 @@ message CreateBoostReceiptCredentialRequest { PaymentProvider processor = 3 [(require.specified) = true]; } -message CreateBoostReceiptCredentialResponse { - message CreateBoostReceiptCredentialResult { +message CreateBoostReceiptCredentialsResponse { + message CreateBoostReceiptCredentialsResult { bytes receipt_credential_response = 1; } oneof response { - CreateBoostReceiptCredentialResult result = 1; + CreateBoostReceiptCredentialsResult result = 1; // Payment is still processing; client should retry errors.FailedPrecondition payment_still_processing = 2 [(tag.reason) = "payment_still_processing"]; // Payment failed diff --git a/pkg/signalmeow/protobuf/org/signal/chat/product_configuration.proto b/pkg/signalmeow/protobuf/org/signal/chat/product_configuration.proto index 8273261..c9e894e 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/product_configuration.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/product_configuration.proto @@ -31,31 +31,29 @@ message GetConfigurationResponse { map badge_levels = 2; // Configuration for backup subscription options BackupConfiguration backup = 3; - // Maximum value of a one-time SEPA donation, in EUR [minor units](https://docs.stripe.com/currencies#minor-units) - uint64 sepa_maximum_euros = 4; + // Maximum value of a one-time SEPA donation + string sepa_maximum_euros = 4; // Configuration for one-time Signal Login purchases LoginConfiguration login = 5; } message AmountList { - // Amount in the currency's minor unit. Unless otherwise noted, currencies are - // two-decimal: divide by 100 to get the value in the specified currency. - // Some currencies are [zero-decimal](https://docs.stripe.com/currencies#zero-decimal); - // for zero-decimal currencies no multiplication is required. - repeated uint64 amounts = 1; + // NOTE: this is a string instead of a numeric type because it is intended + // for display purposes only + repeated string amounts = 1; } message CurrencyConfiguration { - // Minimum one-time donation in the currency's minor unit - uint64 minimum = 1; + // Minimum one-time donation + // NOTE: this is a string instead of a numeric type because it is intended + // for display purposes only + string minimum = 1; // Map of one-time donation level IDs to suggested amounts map one_time = 2; - // Map of subscription level IDs to the amount charged in the currency's minor - // unit - map subscription = 3; - // Map of backup subscription level IDs to the amount charged in the - // currency's minor unit - map backup_subscription = 4; + // Map of subscription level IDs to the amount charged + map subscription = 3; + // Map of backup subscription level IDs to the amount charged + map backup_subscription = 4; repeated PaymentMethod supported_payment_methods = 5; } @@ -92,8 +90,6 @@ message LoginConfiguration { uint64 level = 1; // The play billing productID associated with a Signal Login purchase string play_product_id = 2; - // The play billing optionID to use to purchase a Signal Login - string play_option_id = 4; // The App Store productID associated with a Signal Login purchase string app_store_product_id = 3; } diff --git a/pkg/signalmeow/protobuf/org/signal/chat/profile.proto b/pkg/signalmeow/protobuf/org/signal/chat/profile.proto index e79a844..78d4370 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/profile.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/profile.proto @@ -20,28 +20,17 @@ import "org/signal/chat/tag.proto"; service Profile { option (require.auth) = AUTH_ONLY_AUTHENTICATED; - // Sets profile data and, if needed, returns a credential used by clients to upload a v1 avatar. + // Sets profile data and, if needed, returns credentials used by clients to upload a v1 avatar. rpc SetProfile(SetProfileRequest) returns (SetProfileResponse) {} // Retrieves profile data. Callers with an unidentified access key for the account // should use the version of this method in `ProfileAnonymous` instead. rpc GetProfile(GetProfileRequest) returns (GetProfileResponse) {} - // Returns an anonymous credential that may be presented with avatar operations in ProfilesAnonymous + // Returns anonymous credentials that may be presented with avatar operations in ProfilesAnonymous // // Note: `Accounts.SetZkCredentialKey` is a pre-requisite for this RPC - rpc GetAvatarCredential(GetAvatarCredentialRequest) returns (GetAvatarCredentialResponse) {} - - // Returns a credential used by clients to upload a v1 avatar, deleting any current avatar. - // - // This RPC streamlines avatar changes during the v1 -> v2 transition by minimizing uploads: - // 1. SetV1Avatar - // 2. Upload to CDN - // 3. SetProfile with v1 `AVATAR_CHANGE_UNCHANGED` and the v1 avatar in the v2 profile body - // - // Clients that do this will be required to upload current avatars using `ProfilesAnonymous.GetAvatarUploadFormRequest` - // once v1 Profile APIs are no longer supported. - rpc SetV1Avatar(SetV1AvatarRequest) returns (SetV1AvatarResponse) {} + rpc GetAvatarCredentials(GetAvatarCredentialsRequest) returns (GetAvatarCredentialsResponse) {} } // Provides methods for working with profiles and profile-related data using "unidentified access" @@ -57,16 +46,16 @@ service ProfileAnonymous { rpc GetProfile(GetProfileAnonymousRequest) returns (GetProfileAnonymousResponse) {} // Retrieves a profile key credential. - rpc GetProfileKeyCredential(GetProfileKeyCredentialRequest) returns (GetProfileKeyCredentialResponse) {} + rpc GetExpiringProfileKeyCredential(GetExpiringProfileKeyCredentialAnonymousRequest) returns (GetExpiringProfileKeyCredentialAnonymousResponse) {} - // Returns a credential to upload a v2 avatar. After uploading the avatar, the client + // Returns credentials to upload a v2 avatar. After uploading the avatar, the client // must call SetProfile with the new avatar URL in the encrypted `data`. // // Because avatars are uploaded anonymously, they have an expiration equal to the // idle account expiration. Clients must periodically (recommended: every 90 days) // call ExtendAvatarTTL to extend the TTl. // - // Note: any existing avatar associated with this credential will be deleted immediately + // Note: any existing avatar associated with these credentials will be deleted immediately rpc GetAvatarUploadForm(GetAvatarUploadFormRequest) returns (GetAvatarUploadFormResponse) {} // Extends the TTL of the avatar currently associated with the request’s avatar auth credential @@ -101,19 +90,6 @@ message SetProfileV1Request { bytes phone_number_sharing = 6 [(require.exactlySize) = 29]; } -message SetV1AvatarRequest { - // The profile version. Required. - string version = 1 [(require.exactlySize) = 64]; - - // The profile key commitment. Required if this is a new profile version. - bytes commitment = 2 [(require.exactlySize) = 0, (require.exactlySize) = 97]; -} - -message SetV1AvatarResponse { - // the policy and credential used by clients to upload an avatar to the CDN - common.S3UploadForm form = 1; -} - message SetProfileRequest { // The profile version. Required. @@ -189,7 +165,11 @@ message SetProfileResponse { // another device on the account may have created a new version the caller does not know about. errors.FailedPrecondition expected_version_write_conflict = 4 [(tag.reason) = "expected_version_write_conflict"]; - // next: 5 + // Because this is a temporary field during the migration, it has the highest + // field number without serialization overhead. This is purely aesthetic. + ProfilesV2CapabilityRequired profiles_v2_capability_required = 15 [(tag.reason) = "profiles_v2_capability_required"]; + + // next: 4 } } @@ -332,31 +312,34 @@ message GetProfileAnonymousResponse { // next: 5 } -message GetProfileKeyCredentialRequest { +message GetExpiringProfileKeyCredentialRequest { // The ACI of the account for which to get a profile key credential. common.ServiceIdentifier account_identifier = 1 [(require.present) = true, (require.identityType) = IDENTITY_TYPE_ACI]; - // A zkgroup request for a profile key credential for the target’s current profile. + // A zkgroup request for a profile key credential. bytes credential_request = 2 [(require.nonEmpty) = true]; // The type of credential being requested. CredentialType credential_type = 3 [(require.specified) = true]; - // The unidentified access key for the targeted account. - bytes unidentified_access_key = 4 [(require.exactlySize) = 16]; + // The profile version for which to generate a profile key credential. + bytes version = 4 [(require.exactlySize) = 32]; } -message GetProfileKeyCredentialResult { +message GetExpiringProfileKeyCredentialAnonymousRequest { + // Contains the data necessary to request an expiring profile key credential. + GetExpiringProfileKeyCredentialRequest request = 1 [(require.present) = true]; + // The unidentified access key for the targeted account. + bytes unidentified_access_key = 2 [(require.exactlySize) = 16]; +} + +message GetExpiringProfileKeyCredentialResult { // A zkgroup credential used by a client to prove that it has the profile key // of a targeted account. bytes profile_key_credential = 1; } -message GetProfileKeyCredentialResponse { +message GetExpiringProfileKeyCredentialAnonymousResponse { oneof response { - GetProfileKeyCredentialResult result = 1; - // Indicates the account was not found or the account's current profile was - // not found. Use `AccountsAnonymous.CheckAccountExistence` for a canonical - // account existence check. + GetExpiringProfileKeyCredentialResult result = 1; errors.NotFound not_found = 2 [(tag.reason) = "not_found"]; - // The provided unidentified access key was incorrect errors.FailedUnidentifiedAuthorization failed_unidentified_authorization = 3 [(tag.reason) = "failed_unidentified_authorization"]; } } @@ -368,13 +351,13 @@ enum CredentialType { // avatar auth -message GetAvatarCredentialRequest { - bytes avatar_credential_request = 1; +message GetAvatarCredentialsRequest { + bytes avatar_credentials_request = 1; } -message GetAvatarCredentialResponse { +message GetAvatarCredentialsResponse { oneof response { - bytes avatar_credential = 1; + bytes avatar_credentials = 1; // the client must call Accounts.SetZkCredentialKey to call this method errors.FailedPrecondition missing_zk_credential_key = 2 [(tag.reason) = "missing_zk_credential_key"]; @@ -382,7 +365,7 @@ message GetAvatarCredentialResponse { } message GetAvatarUploadFormRequest { - bytes avatar_credential_presentation = 1; + bytes avatar_credentials_presentation = 1; // The length of the attachment for the requested upload form. Uploads // performed with this form will be limited to the provided length. @@ -391,34 +374,33 @@ message GetAvatarUploadFormRequest { message GetAvatarUploadFormResponse { oneof response { - // the policy and credential used by clients to upload an avatar to the CDN common.S3UploadForm avatar_upload_form = 1; - errors.FailedZkAuthentication invalid_credential_presentation = 2 [(tag.reason) = "invalid_credential_presentation"]; + errors.FailedZkAuthentication invalid_credentials_presentation = 2 [(tag.reason) = "invalid_credentials_presentation"]; } } message ExtendAvatarTTLRequest { - bytes avatar_credential_presentation = 1; + bytes avatar_credentials_presentation = 1; } message ExtendAvatarTTLResponse { oneof response { // The avatar that was extended. May be used as a check against state de-synchronization. string path = 1; - errors.FailedZkAuthentication invalid_credential_presentation = 2 [(tag.reason) = "invalid_credential_presentation"]; + errors.FailedZkAuthentication invalid_credentials_presentation = 2 [(tag.reason) = "invalid_credentials_presentation"]; // the identity does not have an active avatar errors.NotFound not_found = 3 [(tag.reason) = "no_active_avatar"]; } } message DeleteAvatarRequest { - bytes avatar_credential_presentation = 1; + bytes avatar_credentials_presentation = 1; } message DeleteAvatarResponse { oneof response { google.protobuf.Empty success = 1; - errors.FailedZkAuthentication invalid_credential_presentation = 2 [(tag.reason) = "invalid_credential_presentation"]; + errors.FailedZkAuthentication invalid_credentials_presentation = 2 [(tag.reason) = "invalid_credentials_presentation"]; } } diff --git a/pkg/signalmeow/protobuf/org/signal/chat/subscriptions.proto b/pkg/signalmeow/protobuf/org/signal/chat/subscriptions.proto index c9a270a..a820bac 100644 --- a/pkg/signalmeow/protobuf/org/signal/chat/subscriptions.proto +++ b/pkg/signalmeow/protobuf/org/signal/chat/subscriptions.proto @@ -21,7 +21,7 @@ import "org/signal/chat/tag.proto"; service Subscriptions { option (require.auth) = AUTH_ONLY_ANONYMOUS; // Creates a subscriber record if it does not exist, otherwise refreshes its last access time. - // + // Subscribers MUST periodically hit this endpoint to update the access time on the subscription record. Subscribers // SHOULD attempt to make an update call approximately every 3 days. Not accessing this endpoint for an extended // period of time will result in the subscription being canceled. @@ -37,10 +37,6 @@ service Subscriptions { rpc CreatePaymentMethod(CreatePaymentMethodRequest) returns (CreatePaymentMethodResponse) {} // Returns a PayPal billing agreement approval URL and token that can be used to set up PayPal as a payment method. - // - // The presented billing agreement may be localized. Callers should set their - // language preferences via an "Accept-Language" header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 rpc CreatePayPalPaymentMethod(CreatePayPalPaymentMethodRequest) returns (CreatePayPalPaymentMethodResponse) {} // Sets the default payment method for a subscriber. @@ -65,7 +61,7 @@ service Subscriptions { // invoice. Clients SHOULD retry requests at this endpoint with the same ReceiptCredentialRequest value until // receiving a response. After receiving a response, clients should then compute the ReceiptCredentialPresentation // and redeem it at the receipt redemption endpoint. Once the first attempt is made there, the same - // ReceiptCredentialRequest MUST NOT be used again to request a receipt credential. + // ReceiptCredentialRequest MUST NOT be used again to request receipt credentials. // // Note that you may in fact redeem TWO or more invoices for the same ReceiptCredentialRequest while retrying this // operation if a later invoice gets paid while you are retrying. However, the returned receipt is always for the @@ -75,7 +71,7 @@ service Subscriptions { // cannot be redeemed. // // Clients MUST validate that the generated receipt credential's level and expiration matches their expectations. - rpc GetReceiptCredential(GetReceiptCredentialRequest) returns (GetReceiptCredentialResponse) {} + rpc GetReceiptCredentials(GetReceiptCredentialsRequest) returns (GetReceiptCredentialsResponse) {} // Set a token that represents an IAP subscription made with App Store/Google Play Billing. // @@ -84,7 +80,7 @@ service Subscriptions { // 2. [Create a subscription](https://developer.apple.com/documentation/storekit/in-app_purchase/) with the App Store // directly via StoreKit and obtain a originalTransactionId. // 3. Call this RPC with the originalTransactionId - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // Play Billing: Set a purchaseToken that represents an IAP subscription made with Google Play Billing. @@ -95,7 +91,7 @@ service Subscriptions { // directly and obtain a purchaseToken. Do not [acknowledge](https://developer.android.com/google/play/billing/integrate#subscriptions) // the purchaseToken. // 3. Call this RPC with the purchaseToken - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // After calling this method, the payment is confirmed. Callers must durably store their subscriberId before calling @@ -106,16 +102,11 @@ service Subscriptions { // associated with the old purchaseToken will be cancelled. rpc SetIapSubscription(SetIapSubscriptionRequest) returns (SetIapSubscriptionResponse) {} - // Returns a localized bank mandate for the specified bank transfer type. - // - // Callers should set their language preferences via an "Accept-Language" - // header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Returns a localized bank mandate for the specified bank transfer type rpc GetBankMandate(GetBankMandateRequest) returns (GetBankMandateResponse) {} } message UpdateSubscriberRequest { - // New subscriber-ids must be a randomly-generated 32 byte byte-string. bytes subscriber_id = 1 [(require.exactlySize) = 32]; // A libsignal DonationPermit from rpc Donations.CreateDonationPermit. // Not required if the subscriber already exists. @@ -125,8 +116,10 @@ message UpdateSubscriberRequest { message UpdateSubscriberResponse { oneof response { google.protobuf.Empty success = 1; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 2 [(tag.reason) = "subscriber_id_mismatch"]; // The donation permit was expired or already spent - errors.FailedZkAuthentication permit_rejected = 2 [(tag.reason) = "permit_rejected"]; + errors.FailedZkAuthentication permit_rejected = 3 [(tag.reason) = "permit_rejected"]; } } @@ -137,7 +130,6 @@ message DeleteSubscriberRequest { message DeleteSubscriberResponse { oneof response { google.protobuf.Empty success = 1; - // The subscriber did not exist errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; // The associated subscription is not a type that can be cancelled by the server. Cancel client-side, and then retry. errors.FailedPrecondition cannot_cancel_subscription = 3 [(tag.reason) = "cannot_cancel_subscription"]; @@ -197,13 +189,13 @@ message CreatePaymentMethodResponse { oneof response { CreatePaymentMethodResult result = 1; - // The subscriber did not exist errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; - // New payment processor does not match existing processor associated with - // the subscription - errors.FailedPrecondition subscription_processor_conflict = 3 [(tag.reason) = "subscription_processor_conflict"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; + // New payment processor does not match existing processor associated with the subscription + errors.FailedPrecondition subscription_processor_conflict = 4 [(tag.reason) = "subscription_processor_conflict"]; // The donation permit was expired or already spent - errors.FailedZkAuthentication permit_rejected = 4 [(tag.reason) = "permit_rejected"]; + errors.FailedZkAuthentication permit_rejected = 5 [(tag.reason) = "permit_rejected"]; } } @@ -225,11 +217,11 @@ message CreatePayPalPaymentMethodResponse { oneof response { CreatePayPalPaymentMethodResult result = 1; - // The subscriber did not exist errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; - // New payment processor does not match existing processor associated with - // the subscription - errors.FailedPrecondition subscription_processor_conflict = 3 [(tag.reason) = "subscription_processor_conflict"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; + // New payment processor does not match existing processor associated with the subscription + errors.FailedPrecondition subscription_processor_conflict = 4 [(tag.reason) = "subscription_processor_conflict"]; } } @@ -255,11 +247,12 @@ message SetDefaultPaymentMethodRequest { message SetDefaultPaymentMethodResponse { oneof response { google.protobuf.Empty success = 1; - // The subscriber did not exist, or the referenced setup intent was not found errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; - // No payment method has been created for the subscriber, or the provided - // payment method has not finished being set up with the processor - errors.FailedPrecondition payment_method_not_set_up = 3 [(tag.reason) = "payment_method_not_set_up"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; + errors.FailedPrecondition payment_method_not_set_up = 4 [(tag.reason) = "payment_method_not_set_up"]; + // Payment processor does not match existing processor associated with the subscription + errors.FailedPrecondition subscription_processor_conflict = 5 [(tag.reason) = "subscription_processor_conflict"]; } } @@ -314,27 +307,26 @@ message SetSubscriptionLevelResponse { oneof response { SetSubscriptionLevelResult success = 1; - // The subscriber did not exist errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; - // New payment processor does not match existing processor associated with - // the subscription - errors.FailedPrecondition subscription_processor_conflict = 3 [(tag.reason) = "subscription_processor_conflict"]; - // No payment method has been created for the subscriber - errors.FailedPrecondition payment_method_not_set_up = 4 [(tag.reason) = "payment_method_not_set_up"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; + // New payment processor does not match existing processor associated with the subscription + errors.FailedPrecondition subscription_processor_conflict = 4 [(tag.reason) = "subscription_processor_conflict"]; + errors.FailedPrecondition payment_method_not_set_up = 5 [(tag.reason) = "payment_method_not_set_up"]; // The payment processor does not support this operation - errors.FailedPrecondition unsupported_operation = 5 [(tag.reason) = "unsupported_operation"]; + errors.FailedPrecondition unsupported_operation = 6 [(tag.reason) = "unsupported_operation"]; // The requested level was invalid - errors.FailedPrecondition unsupported_level = 6 [(tag.reason) = "unsupported_level"]; + errors.FailedPrecondition unsupported_level = 7 [(tag.reason) = "unsupported_level"]; // The requested currency was invalid - errors.FailedPrecondition unsupported_currency = 7 [(tag.reason) = "unsupported_currency"]; + errors.FailedPrecondition unsupported_currency = 8 [(tag.reason) = "unsupported_currency"]; // The card could not be charged - errors.FailedPrecondition payment_requires_action = 8 [(tag.reason) = "payment_requires_action"]; + errors.FailedPrecondition payment_requires_action = 9 [(tag.reason) = "payment_requires_action"]; // Cannot transition from existing level to the requested level - errors.FailedPrecondition invalid_level_transition = 9 [(tag.reason) = "invalid_level_transition"]; + errors.FailedPrecondition invalid_level_transition = 10 [(tag.reason) = "invalid_level_transition"]; // The idempotency key was invalid or re-used with a modified request - errors.FailedPrecondition invalid_idempotency_key = 10 [(tag.reason) = "invalid_idempotency_key"]; + errors.FailedPrecondition invalid_idempotency_key = 11 [(tag.reason) = "invalid_idempotency_key"]; // The payment failed; see charge failure details - ChargeFailure charge_failure = 11 [(tag.reason) = "charge_failure"]; + ChargeFailure charge_failure = 12 [(tag.reason) = "charge_failure"]; } } @@ -360,40 +352,37 @@ message SetIapSubscriptionResponse { oneof response { SetIapSubscriptionResult success = 1; - // The subscriber did not exist or the provided purchase identifier does not exist errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; - // New payment processor does not match existing processor associated with - // the subscription - errors.FailedPrecondition subscription_processor_conflict = 3 [(tag.reason) = "subscription_processor_conflict"]; - // The subscription is not in a purchase state that grants the user an - // entitlement - errors.FailedPrecondition payment_required = 4 [(tag.reason) = "payment_required"]; - // The provided purchase identifier is malformed or the identified - // transaction is not supported for use at this endpoint - errors.FailedPrecondition invalid_transaction = 5 [(tag.reason) = "invalid_transaction"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; + // New payment processor does not match existing processor associated with the subscription + errors.FailedPrecondition subscription_processor_conflict = 4 [(tag.reason) = "subscription_processor_conflict"]; + errors.FailedPrecondition payment_required = 5 [(tag.reason) = "payment_required"]; + errors.FailedPrecondition invalid_transaction = 6 [(tag.reason) = "invalid_transaction"]; } } -message GetReceiptCredentialRequest { +message GetReceiptCredentialsRequest { bytes subscriberId = 1 [(require.exactlySize) = 32]; bytes receiptCredentialRequest = 2 [(require.exactlySize) = 97]; } -message GetReceiptCredentialResponse { - message GetReceiptCredentialResult { +message GetReceiptCredentialsResponse { + message GetReceiptCredentialsResult { bytes receiptCredentialResponse = 1; } oneof response { - GetReceiptCredentialResult success = 1; - // The subscriber did not exist or it did not have an associated subscription + GetReceiptCredentialsResult success = 1; errors.NotFound subscriber_not_found = 2 [(tag.reason) = "subscriber_not_found"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 3 [(tag.reason) = "subscriber_id_mismatch"]; // No invoice has been issued for this subscription OR invoice is in 'draft' or 'open' state - errors.FailedPrecondition no_paid_invoice = 3 [(tag.reason) = "no_paid_invoice"]; + errors.FailedPrecondition no_paid_invoice = 4 [(tag.reason) = "no_paid_invoice"]; // Invoice is in any state other than 'draft', 'open', or 'paid'; Charge failure details may be present - PaymentRequired payment_required = 4 [(tag.reason) = "payment_required"]; + PaymentRequired payment_required = 5 [(tag.reason) = "payment_required"]; // Latest paid receipt on subscription was already redeemed for a receipt credential but with a different GetReceiptCredentialRequest - errors.FailedPrecondition already_redeemed = 5 [(tag.reason) = "already_redeemed"]; + errors.FailedPrecondition already_redeemed = 6 [(tag.reason) = "already_redeemed"]; } } @@ -415,7 +404,7 @@ message GetSubscriptionInformationResponse { bool cancel_at_period_end = 5; // A three-letter ISO 4217 currency code for currency used in the subscription string currency = 6; - // The amount paid for the subscription in the currency's minor unit + // The amount paid for the subscription in the currency's smallest unit uint64 amount = 7; // The subscription's status, mapped to Stripe's statuses. trialing will never be returned SubscriptionStatus status = 8; @@ -431,10 +420,10 @@ message GetSubscriptionInformationResponse { oneof response { Subscription success = 1; - // The subscriber exists but has no subscription with a payment processor google.protobuf.Empty no_subscription = 2; - // The subscriber did not exist errors.NotFound subscriber_not_found = 3 [(tag.reason) = "subscriber_not_found"]; + // subscriberId authentication failure + errors.FailedUnidentifiedAuthorization subscriber_id_mismatch = 4 [(tag.reason) = "subscriber_id_mismatch"]; } } diff --git a/pkg/signalmeow/protobuf/rpc/account/account.pb.go b/pkg/signalmeow/protobuf/rpc/account/account.pb.go index 45702d1..9b9e4ae 100644 --- a/pkg/signalmeow/protobuf/rpc/account/account.pb.go +++ b/pkg/signalmeow/protobuf/rpc/account/account.pb.go @@ -27,55 +27,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType int32 - -const ( - ListMfaKeysResponse_MfaKeyMetadata_MFA_KEY_TYPE_UNSPECIFIED ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType = 0 - ListMfaKeysResponse_MfaKeyMetadata_MFA_KEY_TYPE_TOTP ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType = 1 - ListMfaKeysResponse_MfaKeyMetadata_MFA_KEY_TYPE_WEBAUTHN ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType = 2 -) - -// Enum value maps for ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType. -var ( - ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType_name = map[int32]string{ - 0: "MFA_KEY_TYPE_UNSPECIFIED", - 1: "MFA_KEY_TYPE_TOTP", - 2: "MFA_KEY_TYPE_WEBAUTHN", - } - ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType_value = map[string]int32{ - "MFA_KEY_TYPE_UNSPECIFIED": 0, - "MFA_KEY_TYPE_TOTP": 1, - "MFA_KEY_TYPE_WEBAUTHN": 2, - } -) - -func (x ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) Enum() *ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType { - p := new(ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) - *p = x - return p -} - -func (x ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) Descriptor() protoreflect.EnumDescriptor { - return file_org_signal_chat_account_proto_enumTypes[0].Descriptor() -} - -func (ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) Type() protoreflect.EnumType { - return &file_org_signal_chat_account_proto_enumTypes[0] -} - -func (x ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType.Descriptor instead. -func (ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType) EnumDescriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{57, 0, 0} -} - type GetAccountIdentityRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -2850,7 +2801,6 @@ type GenerateTotpKeyResponse struct { // // *GenerateTotpKeyResponse_KeyGenerated_ // *GenerateTotpKeyResponse_TooManyTotpKeys - // *GenerateTotpKeyResponse_TooManyMfaKeys Response isGenerateTotpKeyResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2911,15 +2861,6 @@ func (x *GenerateTotpKeyResponse) GetTooManyTotpKeys() *errors.FailedPreconditio return nil } -func (x *GenerateTotpKeyResponse) GetTooManyMfaKeys() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*GenerateTotpKeyResponse_TooManyMfaKeys); ok { - return x.TooManyMfaKeys - } - } - return nil -} - type isGenerateTotpKeyResponse_Response interface { isGenerateTotpKeyResponse_Response() } @@ -2936,18 +2877,10 @@ type GenerateTotpKeyResponse_TooManyTotpKeys struct { TooManyTotpKeys *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=too_many_totp_keys,json=tooManyTotpKeys,proto3,oneof"` } -type GenerateTotpKeyResponse_TooManyMfaKeys struct { - // The authenticated account already has too many MFA keys of all types, and - // the caller must remove one before adding more - TooManyMfaKeys *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=too_many_mfa_keys,json=tooManyMfaKeys,proto3,oneof"` -} - func (*GenerateTotpKeyResponse_KeyGenerated_) isGenerateTotpKeyResponse_Response() {} func (*GenerateTotpKeyResponse_TooManyTotpKeys) isGenerateTotpKeyResponse_Response() {} -func (*GenerateTotpKeyResponse_TooManyMfaKeys) isGenerateTotpKeyResponse_Response() {} - type ConfirmTotpKeyRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // A one-time password derived from the current pending TOTP key @@ -3010,7 +2943,6 @@ type ConfirmTotpKeyResponse struct { // // *ConfirmTotpKeyResponse_KeyConfirmed_ // *ConfirmTotpKeyResponse_OneTimePasswordNotVerified - // *ConfirmTotpKeyResponse_TooManyMfaKeys Response isConfirmTotpKeyResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -3071,15 +3003,6 @@ func (x *ConfirmTotpKeyResponse) GetOneTimePasswordNotVerified() *errors.FailedP return nil } -func (x *ConfirmTotpKeyResponse) GetTooManyMfaKeys() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*ConfirmTotpKeyResponse_TooManyMfaKeys); ok { - return x.TooManyMfaKeys - } - } - return nil -} - type isConfirmTotpKeyResponse_Response interface { isConfirmTotpKeyResponse_Response() } @@ -3096,38 +3019,30 @@ type ConfirmTotpKeyResponse_OneTimePasswordNotVerified struct { OneTimePasswordNotVerified *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=one_time_password_not_verified,json=oneTimePasswordNotVerified,proto3,oneof"` } -type ConfirmTotpKeyResponse_TooManyMfaKeys struct { - // The authenticated account already has too many MFA keys of all types, and - // the caller must remove one before adding more - TooManyMfaKeys *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=too_many_mfa_keys,json=tooManyMfaKeys,proto3,oneof"` -} - func (*ConfirmTotpKeyResponse_KeyConfirmed_) isConfirmTotpKeyResponse_Response() {} func (*ConfirmTotpKeyResponse_OneTimePasswordNotVerified) isConfirmTotpKeyResponse_Response() {} -func (*ConfirmTotpKeyResponse_TooManyMfaKeys) isConfirmTotpKeyResponse_Response() {} - -type StartWebAuthnRegistrationRequest struct { +type ListTotpKeysRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *StartWebAuthnRegistrationRequest) Reset() { - *x = StartWebAuthnRegistrationRequest{} +func (x *ListTotpKeysRequest) Reset() { + *x = ListTotpKeysRequest{} mi := &file_org_signal_chat_account_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *StartWebAuthnRegistrationRequest) String() string { +func (x *ListTotpKeysRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartWebAuthnRegistrationRequest) ProtoMessage() {} +func (*ListTotpKeysRequest) ProtoMessage() {} -func (x *StartWebAuthnRegistrationRequest) ProtoReflect() protoreflect.Message { +func (x *ListTotpKeysRequest) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_account_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3139,36 +3054,32 @@ func (x *StartWebAuthnRegistrationRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StartWebAuthnRegistrationRequest.ProtoReflect.Descriptor instead. -func (*StartWebAuthnRegistrationRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTotpKeysRequest.ProtoReflect.Descriptor instead. +func (*ListTotpKeysRequest) Descriptor() ([]byte, []int) { return file_org_signal_chat_account_proto_rawDescGZIP(), []int{52} } -type StartWebAuthnRegistrationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Response: - // - // *StartWebAuthnRegistrationResponse_Params - // *StartWebAuthnRegistrationResponse_TooManyMfaKeys - Response isStartWebAuthnRegistrationResponse_Response `protobuf_oneof:"response"` +type ListTotpKeysResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Keys map[int32]*ListTotpKeysResponse_TotpKeyMetadata `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *StartWebAuthnRegistrationResponse) Reset() { - *x = StartWebAuthnRegistrationResponse{} +func (x *ListTotpKeysResponse) Reset() { + *x = ListTotpKeysResponse{} mi := &file_org_signal_chat_account_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *StartWebAuthnRegistrationResponse) String() string { +func (x *ListTotpKeysResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartWebAuthnRegistrationResponse) ProtoMessage() {} +func (*ListTotpKeysResponse) ProtoMessage() {} -func (x *StartWebAuthnRegistrationResponse) ProtoReflect() protoreflect.Message { +func (x *ListTotpKeysResponse) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_account_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3180,313 +3091,21 @@ func (x *StartWebAuthnRegistrationResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use StartWebAuthnRegistrationResponse.ProtoReflect.Descriptor instead. -func (*StartWebAuthnRegistrationResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTotpKeysResponse.ProtoReflect.Descriptor instead. +func (*ListTotpKeysResponse) Descriptor() ([]byte, []int) { return file_org_signal_chat_account_proto_rawDescGZIP(), []int{53} } -func (x *StartWebAuthnRegistrationResponse) GetResponse() isStartWebAuthnRegistrationResponse_Response { - if x != nil { - return x.Response - } - return nil -} - -func (x *StartWebAuthnRegistrationResponse) GetParams() *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters { - if x != nil { - if x, ok := x.Response.(*StartWebAuthnRegistrationResponse_Params); ok { - return x.Params - } - } - return nil -} - -func (x *StartWebAuthnRegistrationResponse) GetTooManyMfaKeys() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*StartWebAuthnRegistrationResponse_TooManyMfaKeys); ok { - return x.TooManyMfaKeys - } - } - return nil -} - -type isStartWebAuthnRegistrationResponse_Response interface { - isStartWebAuthnRegistrationResponse_Response() -} - -type StartWebAuthnRegistrationResponse_Params struct { - // The parameters to use for a WebAuthn registration ceremony - Params *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters `protobuf:"bytes,1,opt,name=params,proto3,oneof"` -} - -type StartWebAuthnRegistrationResponse_TooManyMfaKeys struct { - // The authenticated account already has too many MFA keys, and the - // caller must remove one before adding one - TooManyMfaKeys *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=too_many_mfa_keys,json=tooManyMfaKeys,proto3,oneof"` -} - -func (*StartWebAuthnRegistrationResponse_Params) isStartWebAuthnRegistrationResponse_Response() {} - -func (*StartWebAuthnRegistrationResponse_TooManyMfaKeys) isStartWebAuthnRegistrationResponse_Response() { -} - -type FinishWebAuthnRegistrationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The attestation object from a completed registration ceremony, serialized - // as specified in https://www.w3.org/TR/webauthn/#attestation-object - AttestationObject []byte `protobuf:"bytes,1,opt,name=attestation_object,json=attestationObject,proto3" json:"attestation_object,omitempty"` - // The "collected client data" map used in the registration ceremony, as the - // exact JSON map that was hashed for the authenticator - CollectedClientDataJson string `protobuf:"bytes,2,opt,name=collected_client_data_json,json=collectedClientDataJson,proto3" json:"collected_client_data_json,omitempty"` - // The ciphertext of user-provided metadata (presumably including a - // human-readable name and creation timestamp) to be attached to the - // newly-confirmed key - MetadataCiphertext []byte `protobuf:"bytes,3,opt,name=metadata_ciphertext,json=metadataCiphertext,proto3" json:"metadata_ciphertext,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FinishWebAuthnRegistrationRequest) Reset() { - *x = FinishWebAuthnRegistrationRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FinishWebAuthnRegistrationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FinishWebAuthnRegistrationRequest) ProtoMessage() {} - -func (x *FinishWebAuthnRegistrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[54] - 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 FinishWebAuthnRegistrationRequest.ProtoReflect.Descriptor instead. -func (*FinishWebAuthnRegistrationRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{54} -} - -func (x *FinishWebAuthnRegistrationRequest) GetAttestationObject() []byte { - if x != nil { - return x.AttestationObject - } - return nil -} - -func (x *FinishWebAuthnRegistrationRequest) GetCollectedClientDataJson() string { - if x != nil { - return x.CollectedClientDataJson - } - return "" -} - -func (x *FinishWebAuthnRegistrationRequest) GetMetadataCiphertext() []byte { - if x != nil { - return x.MetadataCiphertext - } - return nil -} - -type FinishWebAuthnRegistrationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Response: - // - // *FinishWebAuthnRegistrationResponse_KeyConfirmed_ - // *FinishWebAuthnRegistrationResponse_KeyNotConfirmed - // *FinishWebAuthnRegistrationResponse_TooManyMfaKeys - Response isFinishWebAuthnRegistrationResponse_Response `protobuf_oneof:"response"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FinishWebAuthnRegistrationResponse) Reset() { - *x = FinishWebAuthnRegistrationResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[55] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FinishWebAuthnRegistrationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FinishWebAuthnRegistrationResponse) ProtoMessage() {} - -func (x *FinishWebAuthnRegistrationResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[55] - 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 FinishWebAuthnRegistrationResponse.ProtoReflect.Descriptor instead. -func (*FinishWebAuthnRegistrationResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{55} -} - -func (x *FinishWebAuthnRegistrationResponse) GetResponse() isFinishWebAuthnRegistrationResponse_Response { - if x != nil { - return x.Response - } - return nil -} - -func (x *FinishWebAuthnRegistrationResponse) GetKeyConfirmed() *FinishWebAuthnRegistrationResponse_KeyConfirmed { - if x != nil { - if x, ok := x.Response.(*FinishWebAuthnRegistrationResponse_KeyConfirmed_); ok { - return x.KeyConfirmed - } - } - return nil -} - -func (x *FinishWebAuthnRegistrationResponse) GetKeyNotConfirmed() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*FinishWebAuthnRegistrationResponse_KeyNotConfirmed); ok { - return x.KeyNotConfirmed - } - } - return nil -} - -func (x *FinishWebAuthnRegistrationResponse) GetTooManyMfaKeys() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*FinishWebAuthnRegistrationResponse_TooManyMfaKeys); ok { - return x.TooManyMfaKeys - } - } - return nil -} - -type isFinishWebAuthnRegistrationResponse_Response interface { - isFinishWebAuthnRegistrationResponse_Response() -} - -type FinishWebAuthnRegistrationResponse_KeyConfirmed_ struct { - // The provided public key has been registered for the account - KeyConfirmed *FinishWebAuthnRegistrationResponse_KeyConfirmed `protobuf:"bytes,1,opt,name=key_confirmed,json=keyConfirmed,proto3,oneof"` -} - -type FinishWebAuthnRegistrationResponse_KeyNotConfirmed struct { - // The registration response was not verified successfully for any reason - KeyNotConfirmed *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=key_not_confirmed,json=keyNotConfirmed,proto3,oneof"` -} - -type FinishWebAuthnRegistrationResponse_TooManyMfaKeys struct { - // The authenticated account already has too many MFA keys, and the - // caller must remove one before adding one (this can be true even if it - // was not when starting the request, since there is nothing to prevent - // multiple registrations from occurring in parallel) - TooManyMfaKeys *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=too_many_mfa_keys,json=tooManyMfaKeys,proto3,oneof"` -} - -func (*FinishWebAuthnRegistrationResponse_KeyConfirmed_) isFinishWebAuthnRegistrationResponse_Response() { -} - -func (*FinishWebAuthnRegistrationResponse_KeyNotConfirmed) isFinishWebAuthnRegistrationResponse_Response() { -} - -func (*FinishWebAuthnRegistrationResponse_TooManyMfaKeys) isFinishWebAuthnRegistrationResponse_Response() { -} - -type ListMfaKeysRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListMfaKeysRequest) Reset() { - *x = ListMfaKeysRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[56] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListMfaKeysRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListMfaKeysRequest) ProtoMessage() {} - -func (x *ListMfaKeysRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[56] - 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 ListMfaKeysRequest.ProtoReflect.Descriptor instead. -func (*ListMfaKeysRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{56} -} - -type ListMfaKeysResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Keys map[uint32]*ListMfaKeysResponse_MfaKeyMetadata `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListMfaKeysResponse) Reset() { - *x = ListMfaKeysResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListMfaKeysResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListMfaKeysResponse) ProtoMessage() {} - -func (x *ListMfaKeysResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[57] - 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 ListMfaKeysResponse.ProtoReflect.Descriptor instead. -func (*ListMfaKeysResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{57} -} - -func (x *ListMfaKeysResponse) GetKeys() map[uint32]*ListMfaKeysResponse_MfaKeyMetadata { +func (x *ListTotpKeysResponse) GetKeys() map[int32]*ListTotpKeysResponse_TotpKeyMetadata { if x != nil { return x.Keys } return nil } -type SetMfaKeyMetadataRequest struct { +type SetTotpKeyMetadataRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // The account-specific identifier of the MFA key to modify + // The account-specific identifier of the TOTP key to modify KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` // The ciphertext of the new user-provided metadata to be attached to the // identified key @@ -3495,21 +3114,21 @@ type SetMfaKeyMetadataRequest struct { sizeCache protoimpl.SizeCache } -func (x *SetMfaKeyMetadataRequest) Reset() { - *x = SetMfaKeyMetadataRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[58] +func (x *SetTotpKeyMetadataRequest) Reset() { + *x = SetTotpKeyMetadataRequest{} + mi := &file_org_signal_chat_account_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SetMfaKeyMetadataRequest) String() string { +func (x *SetTotpKeyMetadataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetMfaKeyMetadataRequest) ProtoMessage() {} +func (*SetTotpKeyMetadataRequest) ProtoMessage() {} -func (x *SetMfaKeyMetadataRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[58] +func (x *SetTotpKeyMetadataRequest) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3520,51 +3139,51 @@ func (x *SetMfaKeyMetadataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetMfaKeyMetadataRequest.ProtoReflect.Descriptor instead. -func (*SetMfaKeyMetadataRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{58} +// Deprecated: Use SetTotpKeyMetadataRequest.ProtoReflect.Descriptor instead. +func (*SetTotpKeyMetadataRequest) Descriptor() ([]byte, []int) { + return file_org_signal_chat_account_proto_rawDescGZIP(), []int{54} } -func (x *SetMfaKeyMetadataRequest) GetKeyId() uint32 { +func (x *SetTotpKeyMetadataRequest) GetKeyId() uint32 { if x != nil { return x.KeyId } return 0 } -func (x *SetMfaKeyMetadataRequest) GetMetadataCiphertext() []byte { +func (x *SetTotpKeyMetadataRequest) GetMetadataCiphertext() []byte { if x != nil { return x.MetadataCiphertext } return nil } -type SetMfaKeyMetadataResponse struct { +type SetTotpKeyMetadataResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Response: // - // *SetMfaKeyMetadataResponse_Success - // *SetMfaKeyMetadataResponse_KeyNotFound - Response isSetMfaKeyMetadataResponse_Response `protobuf_oneof:"response"` + // *SetTotpKeyMetadataResponse_MetadataUpdated_ + // *SetTotpKeyMetadataResponse_KeyNotFound + Response isSetTotpKeyMetadataResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SetMfaKeyMetadataResponse) Reset() { - *x = SetMfaKeyMetadataResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[59] +func (x *SetTotpKeyMetadataResponse) Reset() { + *x = SetTotpKeyMetadataResponse{} + mi := &file_org_signal_chat_account_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SetMfaKeyMetadataResponse) String() string { +func (x *SetTotpKeyMetadataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetMfaKeyMetadataResponse) ProtoMessage() {} +func (*SetTotpKeyMetadataResponse) ProtoMessage() {} -func (x *SetMfaKeyMetadataResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[59] +func (x *SetTotpKeyMetadataResponse) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3575,77 +3194,77 @@ func (x *SetMfaKeyMetadataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SetMfaKeyMetadataResponse.ProtoReflect.Descriptor instead. -func (*SetMfaKeyMetadataResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{59} +// Deprecated: Use SetTotpKeyMetadataResponse.ProtoReflect.Descriptor instead. +func (*SetTotpKeyMetadataResponse) Descriptor() ([]byte, []int) { + return file_org_signal_chat_account_proto_rawDescGZIP(), []int{55} } -func (x *SetMfaKeyMetadataResponse) GetResponse() isSetMfaKeyMetadataResponse_Response { +func (x *SetTotpKeyMetadataResponse) GetResponse() isSetTotpKeyMetadataResponse_Response { if x != nil { return x.Response } return nil } -func (x *SetMfaKeyMetadataResponse) GetSuccess() *SetMfaKeyMetadataResponse_MetadataUpdated { +func (x *SetTotpKeyMetadataResponse) GetMetadataUpdated() *SetTotpKeyMetadataResponse_MetadataUpdated { if x != nil { - if x, ok := x.Response.(*SetMfaKeyMetadataResponse_Success); ok { - return x.Success + if x, ok := x.Response.(*SetTotpKeyMetadataResponse_MetadataUpdated_); ok { + return x.MetadataUpdated } } return nil } -func (x *SetMfaKeyMetadataResponse) GetKeyNotFound() *errors.NotFound { +func (x *SetTotpKeyMetadataResponse) GetKeyNotFound() *errors.NotFound { if x != nil { - if x, ok := x.Response.(*SetMfaKeyMetadataResponse_KeyNotFound); ok { + if x, ok := x.Response.(*SetTotpKeyMetadataResponse_KeyNotFound); ok { return x.KeyNotFound } } return nil } -type isSetMfaKeyMetadataResponse_Response interface { - isSetMfaKeyMetadataResponse_Response() +type isSetTotpKeyMetadataResponse_Response interface { + isSetTotpKeyMetadataResponse_Response() } -type SetMfaKeyMetadataResponse_Success struct { - // New metadata was stored for the identified key - Success *SetMfaKeyMetadataResponse_MetadataUpdated `protobuf:"bytes,1,opt,name=success,proto3,oneof"` +type SetTotpKeyMetadataResponse_MetadataUpdated_ struct { + // New metadata was stored for the identified TOTP key + MetadataUpdated *SetTotpKeyMetadataResponse_MetadataUpdated `protobuf:"bytes,1,opt,name=metadata_updated,json=metadataUpdated,proto3,oneof"` } -type SetMfaKeyMetadataResponse_KeyNotFound struct { +type SetTotpKeyMetadataResponse_KeyNotFound struct { // No TOTP was found with the given ID KeyNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=key_not_found,json=keyNotFound,proto3,oneof"` } -func (*SetMfaKeyMetadataResponse_Success) isSetMfaKeyMetadataResponse_Response() {} +func (*SetTotpKeyMetadataResponse_MetadataUpdated_) isSetTotpKeyMetadataResponse_Response() {} -func (*SetMfaKeyMetadataResponse_KeyNotFound) isSetMfaKeyMetadataResponse_Response() {} +func (*SetTotpKeyMetadataResponse_KeyNotFound) isSetTotpKeyMetadataResponse_Response() {} -type RemoveMfaKeyRequest struct { +type RemoveTotpKeyRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // The account-specific identifier of the MFA key to remove + // The account-specific identifier of the TOTP key to remove KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *RemoveMfaKeyRequest) Reset() { - *x = RemoveMfaKeyRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[60] +func (x *RemoveTotpKeyRequest) Reset() { + *x = RemoveTotpKeyRequest{} + mi := &file_org_signal_chat_account_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *RemoveMfaKeyRequest) String() string { +func (x *RemoveTotpKeyRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveMfaKeyRequest) ProtoMessage() {} +func (*RemoveTotpKeyRequest) ProtoMessage() {} -func (x *RemoveMfaKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[60] +func (x *RemoveTotpKeyRequest) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3656,39 +3275,39 @@ func (x *RemoveMfaKeyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveMfaKeyRequest.ProtoReflect.Descriptor instead. -func (*RemoveMfaKeyRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{60} +// Deprecated: Use RemoveTotpKeyRequest.ProtoReflect.Descriptor instead. +func (*RemoveTotpKeyRequest) Descriptor() ([]byte, []int) { + return file_org_signal_chat_account_proto_rawDescGZIP(), []int{56} } -func (x *RemoveMfaKeyRequest) GetKeyId() uint32 { +func (x *RemoveTotpKeyRequest) GetKeyId() uint32 { if x != nil { return x.KeyId } return 0 } -type RemoveMfaKeyResponse struct { +type RemoveTotpKeyResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *RemoveMfaKeyResponse) Reset() { - *x = RemoveMfaKeyResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[61] +func (x *RemoveTotpKeyResponse) Reset() { + *x = RemoveTotpKeyResponse{} + mi := &file_org_signal_chat_account_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *RemoveMfaKeyResponse) String() string { +func (x *RemoveTotpKeyResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RemoveMfaKeyResponse) ProtoMessage() {} +func (*RemoveTotpKeyResponse) ProtoMessage() {} -func (x *RemoveMfaKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[61] +func (x *RemoveTotpKeyResponse) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3699,229 +3318,9 @@ func (x *RemoveMfaKeyResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RemoveMfaKeyResponse.ProtoReflect.Descriptor instead. -func (*RemoveMfaKeyResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{61} -} - -type StartMfaVerificationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartMfaVerificationRequest) Reset() { - *x = StartMfaVerificationRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartMfaVerificationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartMfaVerificationRequest) ProtoMessage() {} - -func (x *StartMfaVerificationRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[62] - 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 StartMfaVerificationRequest.ProtoReflect.Descriptor instead. -func (*StartMfaVerificationRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{62} -} - -type StartMfaVerificationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // / If true, a TOTP password will be accepted for verification - HasTotp bool `protobuf:"varint,1,opt,name=has_totp,json=hasTotp,proto3" json:"has_totp,omitempty"` - // / If present, information required to complete a WebAuthn authentication - WebauthnAuthenticationParameters *StartMfaVerificationResponse_WebAuthnAuthenticationParameters `protobuf:"bytes,2,opt,name=webauthn_authentication_parameters,json=webauthnAuthenticationParameters,proto3,oneof" json:"webauthn_authentication_parameters,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartMfaVerificationResponse) Reset() { - *x = StartMfaVerificationResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[63] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartMfaVerificationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartMfaVerificationResponse) ProtoMessage() {} - -func (x *StartMfaVerificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[63] - 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 StartMfaVerificationResponse.ProtoReflect.Descriptor instead. -func (*StartMfaVerificationResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{63} -} - -func (x *StartMfaVerificationResponse) GetHasTotp() bool { - if x != nil { - return x.HasTotp - } - return false -} - -func (x *StartMfaVerificationResponse) GetWebauthnAuthenticationParameters() *StartMfaVerificationResponse_WebAuthnAuthenticationParameters { - if x != nil { - return x.WebauthnAuthenticationParameters - } - return nil -} - -type FinishMfaVerificationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Credential: - // - // *FinishMfaVerificationRequest_TotpPassword - // *FinishMfaVerificationRequest_WebauthnAuthenticationResponseJson - Credential isFinishMfaVerificationRequest_Credential `protobuf_oneof:"credential"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FinishMfaVerificationRequest) Reset() { - *x = FinishMfaVerificationRequest{} - mi := &file_org_signal_chat_account_proto_msgTypes[64] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FinishMfaVerificationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FinishMfaVerificationRequest) ProtoMessage() {} - -func (x *FinishMfaVerificationRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[64] - 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 FinishMfaVerificationRequest.ProtoReflect.Descriptor instead. -func (*FinishMfaVerificationRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{64} -} - -func (x *FinishMfaVerificationRequest) GetCredential() isFinishMfaVerificationRequest_Credential { - if x != nil { - return x.Credential - } - return nil -} - -func (x *FinishMfaVerificationRequest) GetTotpPassword() uint32 { - if x != nil { - if x, ok := x.Credential.(*FinishMfaVerificationRequest_TotpPassword); ok { - return x.TotpPassword - } - } - return 0 -} - -func (x *FinishMfaVerificationRequest) GetWebauthnAuthenticationResponseJson() string { - if x != nil { - if x, ok := x.Credential.(*FinishMfaVerificationRequest_WebauthnAuthenticationResponseJson); ok { - return x.WebauthnAuthenticationResponseJson - } - } - return "" -} - -type isFinishMfaVerificationRequest_Credential interface { - isFinishMfaVerificationRequest_Credential() -} - -type FinishMfaVerificationRequest_TotpPassword struct { - // / A 6-digit TOTP password to validate - TotpPassword uint32 `protobuf:"varint,1,opt,name=totp_password,json=totpPassword,proto3,oneof"` -} - -type FinishMfaVerificationRequest_WebauthnAuthenticationResponseJson struct { - // / A WebAuthn-compatible JSON-serialized authentication response - WebauthnAuthenticationResponseJson string `protobuf:"bytes,2,opt,name=webauthn_authentication_response_json,json=webauthnAuthenticationResponseJson,proto3,oneof"` -} - -func (*FinishMfaVerificationRequest_TotpPassword) isFinishMfaVerificationRequest_Credential() {} - -func (*FinishMfaVerificationRequest_WebauthnAuthenticationResponseJson) isFinishMfaVerificationRequest_Credential() { -} - -type FinishMfaVerificationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // / If true, the selected authentication factor was verified correctly. - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FinishMfaVerificationResponse) Reset() { - *x = FinishMfaVerificationResponse{} - mi := &file_org_signal_chat_account_proto_msgTypes[65] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FinishMfaVerificationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FinishMfaVerificationResponse) ProtoMessage() {} - -func (x *FinishMfaVerificationResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[65] - 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 FinishMfaVerificationResponse.ProtoReflect.Descriptor instead. -func (*FinishMfaVerificationResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{65} -} - -func (x *FinishMfaVerificationResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false +// Deprecated: Use RemoveTotpKeyResponse.ProtoReflect.Descriptor instead. +func (*RemoveTotpKeyResponse) Descriptor() ([]byte, []int) { + return file_org_signal_chat_account_proto_rawDescGZIP(), []int{57} } type GetEntitlementsResponse_BadgeEntitlement struct { @@ -3940,7 +3339,7 @@ type GetEntitlementsResponse_BadgeEntitlement struct { func (x *GetEntitlementsResponse_BadgeEntitlement) Reset() { *x = GetEntitlementsResponse_BadgeEntitlement{} - mi := &file_org_signal_chat_account_proto_msgTypes[66] + mi := &file_org_signal_chat_account_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3952,7 +3351,7 @@ func (x *GetEntitlementsResponse_BadgeEntitlement) String() string { func (*GetEntitlementsResponse_BadgeEntitlement) ProtoMessage() {} func (x *GetEntitlementsResponse_BadgeEntitlement) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[66] + mi := &file_org_signal_chat_account_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4001,7 +3400,7 @@ type GetEntitlementsResponse_BackupEntitlement struct { func (x *GetEntitlementsResponse_BackupEntitlement) Reset() { *x = GetEntitlementsResponse_BackupEntitlement{} - mi := &file_org_signal_chat_account_proto_msgTypes[67] + mi := &file_org_signal_chat_account_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4013,7 +3412,7 @@ func (x *GetEntitlementsResponse_BackupEntitlement) String() string { func (*GetEntitlementsResponse_BackupEntitlement) ProtoMessage() {} func (x *GetEntitlementsResponse_BackupEntitlement) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[67] + mi := &file_org_signal_chat_account_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4053,7 +3452,7 @@ type ConfirmUsernameHashResponse_ConfirmedUsernameHash struct { func (x *ConfirmUsernameHashResponse_ConfirmedUsernameHash) Reset() { *x = ConfirmUsernameHashResponse_ConfirmedUsernameHash{} - mi := &file_org_signal_chat_account_proto_msgTypes[68] + mi := &file_org_signal_chat_account_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4065,7 +3464,7 @@ func (x *ConfirmUsernameHashResponse_ConfirmedUsernameHash) String() string { func (*ConfirmUsernameHashResponse_ConfirmedUsernameHash) ProtoMessage() {} func (x *ConfirmUsernameHashResponse_ConfirmedUsernameHash) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[68] + mi := &file_org_signal_chat_account_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4100,7 +3499,7 @@ type GenerateTotpKeyResponse_KeyGenerated struct { func (x *GenerateTotpKeyResponse_KeyGenerated) Reset() { *x = GenerateTotpKeyResponse_KeyGenerated{} - mi := &file_org_signal_chat_account_proto_msgTypes[72] + mi := &file_org_signal_chat_account_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4112,7 +3511,7 @@ func (x *GenerateTotpKeyResponse_KeyGenerated) String() string { func (*GenerateTotpKeyResponse_KeyGenerated) ProtoMessage() {} func (x *GenerateTotpKeyResponse_KeyGenerated) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[72] + mi := &file_org_signal_chat_account_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4152,7 +3551,7 @@ type ConfirmTotpKeyResponse_KeyConfirmed struct { func (x *ConfirmTotpKeyResponse_KeyConfirmed) Reset() { *x = ConfirmTotpKeyResponse_KeyConfirmed{} - mi := &file_org_signal_chat_account_proto_msgTypes[73] + mi := &file_org_signal_chat_account_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4164,7 +3563,7 @@ func (x *ConfirmTotpKeyResponse_KeyConfirmed) String() string { func (*ConfirmTotpKeyResponse_KeyConfirmed) ProtoMessage() {} func (x *ConfirmTotpKeyResponse_KeyConfirmed) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[73] + mi := &file_org_signal_chat_account_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4187,36 +3586,31 @@ func (x *ConfirmTotpKeyResponse_KeyConfirmed) GetKeyId() uint32 { return 0 } -type StartWebAuthnRegistrationResponse_WebAuthnCreateParameters struct { +type ListTotpKeysResponse_TotpKeyMetadata struct { state protoimpl.MessageState `protogen:"open.v1"` - // The "user handle" (user.id) that should be handed to the authenticator - UserHandle []byte `protobuf:"bytes,1,opt,name=user_handle,json=userHandle,proto3" json:"user_handle,omitempty"` - // The COSE IDs (https://www.iana.org/assignments/cose#algorithms) of - // acceptable algorithms for the created key - AllowedAlgorithms []int64 `protobuf:"varint,2,rep,packed,name=allowed_algorithms,json=allowedAlgorithms,proto3" json:"allowed_algorithms,omitempty"` - // A list of the credential IDs already registered for this account; these - // can be passed to candidate authenticators to tell them not to create a - // new key if they already have a private key matching one of these - ExcludeCredentialIds [][]byte `protobuf:"bytes,3,rep,name=exclude_credential_ids,json=excludeCredentialIds,proto3" json:"exclude_credential_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // The user-provided ciphertext for metadata associated with this TOTP key + MetadataCiphertext []byte `protobuf:"bytes,1,opt,name=metadata_ciphertext,json=metadataCiphertext,proto3" json:"metadata_ciphertext,omitempty"` + // The TOTP parameters associated with this key + TotpParameters *TotpParameters `protobuf:"bytes,2,opt,name=totp_parameters,json=totpParameters,proto3" json:"totp_parameters,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) Reset() { - *x = StartWebAuthnRegistrationResponse_WebAuthnCreateParameters{} - mi := &file_org_signal_chat_account_proto_msgTypes[74] +func (x *ListTotpKeysResponse_TotpKeyMetadata) Reset() { + *x = ListTotpKeysResponse_TotpKeyMetadata{} + mi := &file_org_signal_chat_account_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) String() string { +func (x *ListTotpKeysResponse_TotpKeyMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) ProtoMessage() {} +func (*ListTotpKeysResponse_TotpKeyMetadata) ProtoMessage() {} -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[74] +func (x *ListTotpKeysResponse_TotpKeyMetadata) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4227,152 +3621,46 @@ func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) ProtoReflec return mi.MessageOf(x) } -// Deprecated: Use StartWebAuthnRegistrationResponse_WebAuthnCreateParameters.ProtoReflect.Descriptor instead. -func (*StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTotpKeysResponse_TotpKeyMetadata.ProtoReflect.Descriptor instead. +func (*ListTotpKeysResponse_TotpKeyMetadata) Descriptor() ([]byte, []int) { return file_org_signal_chat_account_proto_rawDescGZIP(), []int{53, 0} } -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) GetUserHandle() []byte { - if x != nil { - return x.UserHandle - } - return nil -} - -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) GetAllowedAlgorithms() []int64 { - if x != nil { - return x.AllowedAlgorithms - } - return nil -} - -func (x *StartWebAuthnRegistrationResponse_WebAuthnCreateParameters) GetExcludeCredentialIds() [][]byte { - if x != nil { - return x.ExcludeCredentialIds - } - return nil -} - -type FinishWebAuthnRegistrationResponse_KeyConfirmed struct { - state protoimpl.MessageState `protogen:"open.v1"` - // An account-specific identifier for the new WebAuthn key - KeyId uint32 `protobuf:"varint,1,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FinishWebAuthnRegistrationResponse_KeyConfirmed) Reset() { - *x = FinishWebAuthnRegistrationResponse_KeyConfirmed{} - mi := &file_org_signal_chat_account_proto_msgTypes[75] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FinishWebAuthnRegistrationResponse_KeyConfirmed) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FinishWebAuthnRegistrationResponse_KeyConfirmed) ProtoMessage() {} - -func (x *FinishWebAuthnRegistrationResponse_KeyConfirmed) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[75] - 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 FinishWebAuthnRegistrationResponse_KeyConfirmed.ProtoReflect.Descriptor instead. -func (*FinishWebAuthnRegistrationResponse_KeyConfirmed) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{55, 0} -} - -func (x *FinishWebAuthnRegistrationResponse_KeyConfirmed) GetKeyId() uint32 { - if x != nil { - return x.KeyId - } - return 0 -} - -type ListMfaKeysResponse_MfaKeyMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The user-provided ciphertext for metadata associated with this MFA key - MetadataCiphertext []byte `protobuf:"bytes,1,opt,name=metadata_ciphertext,json=metadataCiphertext,proto3" json:"metadata_ciphertext,omitempty"` - // The type of MFA factor this key is for - Type ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType `protobuf:"varint,2,opt,name=type,proto3,enum=org.signal.chat.account.ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType" json:"type,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ListMfaKeysResponse_MfaKeyMetadata) Reset() { - *x = ListMfaKeysResponse_MfaKeyMetadata{} - mi := &file_org_signal_chat_account_proto_msgTypes[76] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ListMfaKeysResponse_MfaKeyMetadata) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListMfaKeysResponse_MfaKeyMetadata) ProtoMessage() {} - -func (x *ListMfaKeysResponse_MfaKeyMetadata) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[76] - 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 ListMfaKeysResponse_MfaKeyMetadata.ProtoReflect.Descriptor instead. -func (*ListMfaKeysResponse_MfaKeyMetadata) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{57, 0} -} - -func (x *ListMfaKeysResponse_MfaKeyMetadata) GetMetadataCiphertext() []byte { +func (x *ListTotpKeysResponse_TotpKeyMetadata) GetMetadataCiphertext() []byte { if x != nil { return x.MetadataCiphertext } return nil } -func (x *ListMfaKeysResponse_MfaKeyMetadata) GetType() ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType { +func (x *ListTotpKeysResponse_TotpKeyMetadata) GetTotpParameters() *TotpParameters { if x != nil { - return x.Type + return x.TotpParameters } - return ListMfaKeysResponse_MfaKeyMetadata_MFA_KEY_TYPE_UNSPECIFIED + return nil } -type SetMfaKeyMetadataResponse_MetadataUpdated struct { +type SetTotpKeyMetadataResponse_MetadataUpdated struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SetMfaKeyMetadataResponse_MetadataUpdated) Reset() { - *x = SetMfaKeyMetadataResponse_MetadataUpdated{} - mi := &file_org_signal_chat_account_proto_msgTypes[78] +func (x *SetTotpKeyMetadataResponse_MetadataUpdated) Reset() { + *x = SetTotpKeyMetadataResponse_MetadataUpdated{} + mi := &file_org_signal_chat_account_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SetMfaKeyMetadataResponse_MetadataUpdated) String() string { +func (x *SetTotpKeyMetadataResponse_MetadataUpdated) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SetMfaKeyMetadataResponse_MetadataUpdated) ProtoMessage() {} +func (*SetTotpKeyMetadataResponse_MetadataUpdated) ProtoMessage() {} -func (x *SetMfaKeyMetadataResponse_MetadataUpdated) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[78] +func (x *SetTotpKeyMetadataResponse_MetadataUpdated) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_account_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4383,72 +3671,9 @@ func (x *SetMfaKeyMetadataResponse_MetadataUpdated) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use SetMfaKeyMetadataResponse_MetadataUpdated.ProtoReflect.Descriptor instead. -func (*SetMfaKeyMetadataResponse_MetadataUpdated) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{59, 0} -} - -type StartMfaVerificationResponse_WebAuthnAuthenticationParameters struct { - state protoimpl.MessageState `protogen:"open.v1"` - // / A random challenge that must be included in the authenticator response, to prevent replay attacks - Challenge []byte `protobuf:"bytes,1,opt,name=challenge,proto3" json:"challenge,omitempty"` - // / The estimated amount of time, in seconds, after which an otherwise-valid response will be rejected - TimeoutSeconds uint32 `protobuf:"varint,2,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - // / A list of credential IDs associated with this account - AllowedCredentialIds [][]byte `protobuf:"bytes,3,rep,name=allowed_credential_ids,json=allowedCredentialIds,proto3" json:"allowed_credential_ids,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) Reset() { - *x = StartMfaVerificationResponse_WebAuthnAuthenticationParameters{} - mi := &file_org_signal_chat_account_proto_msgTypes[79] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartMfaVerificationResponse_WebAuthnAuthenticationParameters) ProtoMessage() {} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_account_proto_msgTypes[79] - 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 StartMfaVerificationResponse_WebAuthnAuthenticationParameters.ProtoReflect.Descriptor instead. -func (*StartMfaVerificationResponse_WebAuthnAuthenticationParameters) Descriptor() ([]byte, []int) { - return file_org_signal_chat_account_proto_rawDescGZIP(), []int{63, 0} -} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) GetChallenge() []byte { - if x != nil { - return x.Challenge - } - return nil -} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) GetTimeoutSeconds() uint32 { - if x != nil { - return x.TimeoutSeconds - } - return 0 -} - -func (x *StartMfaVerificationResponse_WebAuthnAuthenticationParameters) GetAllowedCredentialIds() [][]byte { - if x != nil { - return x.AllowedCredentialIds - } - return nil +// Deprecated: Use SetTotpKeyMetadataResponse_MetadataUpdated.ProtoReflect.Descriptor instead. +func (*SetTotpKeyMetadataResponse_MetadataUpdated) Descriptor() ([]byte, []int) { + return file_org_signal_chat_account_proto_rawDescGZIP(), []int{55, 0} } var File_org_signal_chat_account_proto protoreflect.FileDescriptor @@ -4608,11 +3833,10 @@ const file_org_signal_chat_account_proto_rawDesc = "" + "\talgorithm\x18\x01 \x01(\tR\talgorithm\x12'\n" + "\x0fpassword_length\x18\x02 \x01(\rR\x0epasswordLength\x12*\n" + "\x11time_step_seconds\x18\x03 \x01(\rR\x0ftimeStepSeconds\"\x18\n" + - "\x16GenerateTotpKeyRequest\"\xe2\x03\n" + + "\x16GenerateTotpKeyRequest\"\xf2\x02\n" + "\x17GenerateTotpKeyResponse\x12d\n" + "\rkey_generated\x18\x01 \x01(\v2=.org.signal.chat.account.GenerateTotpKeyResponse.KeyGeneratedH\x00R\fkeyGenerated\x12q\n" + - "\x12too_many_totp_keys\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x16\xc2\xd5\"\x12too_many_totp_keysH\x00R\x0ftooManyTotpKeys\x12n\n" + - "\x11too_many_mfa_keys\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11too_many_mfa_keysH\x00R\x0etooManyMfaKeys\x1ar\n" + + "\x12too_many_totp_keys\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x16\xc2\xd5\"\x12too_many_totp_keysH\x00R\x0ftooManyTotpKeys\x1ar\n" + "\fKeyGenerated\x12\x10\n" + "\x03key\x18\x01 \x01(\fR\x03key\x12P\n" + "\x0ftotp_parameters\x18\x02 \x01(\v2'.org.signal.chat.account.TotpParametersR\x0etotpParametersB\n" + @@ -4620,80 +3844,35 @@ const file_org_signal_chat_account_proto_rawDesc = "" + "\bresponse\"|\n" + "\x15ConfirmTotpKeyRequest\x12*\n" + "\x11one_time_password\x18\x01 \x01(\rR\x0foneTimePassword\x127\n" + - "\x13metadata_ciphertext\x18\x02 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\"\xc1\x03\n" + + "\x13metadata_ciphertext\x18\x02 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\"\xc7\x02\n" + "\x16ConfirmTotpKeyResponse\x12c\n" + "\rkey_confirmed\x18\x01 \x01(\v2<.org.signal.chat.account.ConfirmTotpKeyResponse.KeyConfirmedH\x00R\fkeyConfirmed\x12\x94\x01\n" + - "\x1eone_time_password_not_verified\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\"\xc2\xd5\"\x1eone_time_password_not_verifiedH\x00R\x1aoneTimePasswordNotVerified\x12n\n" + - "\x11too_many_mfa_keys\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11too_many_mfa_keysH\x00R\x0etooManyMfaKeys\x1a/\n" + - "\fKeyConfirmed\x12\x1f\n" + - "\x06key_id\x18\x01 \x01(\rB\b\xb2\x97\"\x04\b\x00\x10\x7fR\x05keyIdB\n" + + "\x1eone_time_password_not_verified\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\"\xc2\xd5\"\x1eone_time_password_not_verifiedH\x00R\x1aoneTimePasswordNotVerified\x1a%\n" + + "\fKeyConfirmed\x12\x15\n" + + "\x06key_id\x18\x01 \x01(\rR\x05keyIdB\n" + "\n" + - "\bresponse\"\"\n" + - " StartWebAuthnRegistrationRequest\"\xb1\x03\n" + - "!StartWebAuthnRegistrationResponse\x12m\n" + - "\x06params\x18\x01 \x01(\v2S.org.signal.chat.account.StartWebAuthnRegistrationResponse.WebAuthnCreateParametersH\x00R\x06params\x12n\n" + - "\x11too_many_mfa_keys\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11too_many_mfa_keysH\x00R\x0etooManyMfaKeys\x1a\xa0\x01\n" + - "\x18WebAuthnCreateParameters\x12\x1f\n" + - "\vuser_handle\x18\x01 \x01(\fR\n" + - "userHandle\x12-\n" + - "\x12allowed_algorithms\x18\x02 \x03(\x03R\x11allowedAlgorithms\x124\n" + - "\x16exclude_credential_ids\x18\x03 \x03(\fR\x14excludeCredentialIdsB\n" + - "\n" + - "\bresponse\"\xc8\x01\n" + - "!FinishWebAuthnRegistrationRequest\x12-\n" + - "\x12attestation_object\x18\x01 \x01(\fR\x11attestationObject\x12;\n" + - "\x1acollected_client_data_json\x18\x02 \x01(\tR\x17collectedClientDataJson\x127\n" + - "\x13metadata_ciphertext\x18\x03 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\"\xc5\x03\n" + - "\"FinishWebAuthnRegistrationResponse\x12o\n" + - "\rkey_confirmed\x18\x01 \x01(\v2H.org.signal.chat.account.FinishWebAuthnRegistrationResponse.KeyConfirmedH\x00R\fkeyConfirmed\x12\x80\x01\n" + - "\x11key_not_confirmed\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB&\xc2\xd5\"\"registration_ceremony_unsuccessfulH\x00R\x0fkeyNotConfirmed\x12n\n" + - "\x11too_many_mfa_keys\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11too_many_mfa_keysH\x00R\x0etooManyMfaKeys\x1a/\n" + - "\fKeyConfirmed\x12\x1f\n" + - "\x06key_id\x18\x01 \x01(\rB\b\xb2\x97\"\x04\b\x00\x10\x7fR\x05keyIdB\n" + - "\n" + - "\bresponse\"\x14\n" + - "\x12ListMfaKeysRequest\"\xdd\x03\n" + - "\x13ListMfaKeysResponse\x12J\n" + - "\x04keys\x18\x01 \x03(\v26.org.signal.chat.account.ListMfaKeysResponse.KeysEntryR\x04keys\x1a\x83\x02\n" + - "\x0eMfaKeyMetadata\x127\n" + - "\x13metadata_ciphertext\x18\x01 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\x12Z\n" + - "\x04type\x18\x02 \x01(\x0e2F.org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata.MfaKeyTypeR\x04type\"\\\n" + - "\n" + - "MfaKeyType\x12\x1c\n" + - "\x18MFA_KEY_TYPE_UNSPECIFIED\x10\x00\x12\x15\n" + - "\x11MFA_KEY_TYPE_TOTP\x10\x01\x12\x19\n" + - "\x15MFA_KEY_TYPE_WEBAUTHN\x10\x02\x1at\n" + + "\bresponse\"\x15\n" + + "\x13ListTotpKeysRequest\"\xf2\x02\n" + + "\x14ListTotpKeysResponse\x12K\n" + + "\x04keys\x18\x01 \x03(\v27.org.signal.chat.account.ListTotpKeysResponse.KeysEntryR\x04keys\x1a\x94\x01\n" + + "\x0fTotpKeyMetadata\x12/\n" + + "\x13metadata_ciphertext\x18\x01 \x01(\fR\x12metadataCiphertext\x12P\n" + + "\x0ftotp_parameters\x18\x02 \x01(\v2'.org.signal.chat.account.TotpParametersR\x0etotpParameters\x1av\n" + "\tKeysEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\rR\x03key\x12Q\n" + - "\x05value\x18\x02 \x01(\v2;.org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadataR\x05value:\x028\x01\"t\n" + - "\x18SetMfaKeyMetadataRequest\x12\x1f\n" + - "\x06key_id\x18\x01 \x01(\rB\b\xb2\x97\"\x04\b\x00\x10\x7fR\x05keyId\x127\n" + - "\x13metadata_ciphertext\x18\x02 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\"\xf5\x01\n" + - "\x19SetMfaKeyMetadataResponse\x12^\n" + - "\asuccess\x18\x01 \x01(\v2B.org.signal.chat.account.SetMfaKeyMetadataResponse.MetadataUpdatedH\x00R\asuccess\x12Y\n" + + "\x03key\x18\x01 \x01(\x05R\x03key\x12S\n" + + "\x05value\x18\x02 \x01(\v2=.org.signal.chat.account.ListTotpKeysResponse.TotpKeyMetadataR\x05value:\x028\x01\"k\n" + + "\x19SetTotpKeyMetadataRequest\x12\x15\n" + + "\x06key_id\x18\x01 \x01(\rR\x05keyId\x127\n" + + "\x13metadata_ciphertext\x18\x02 \x01(\fB\x06\xa2\x97\"\x02\xa0\x01R\x12metadataCiphertext\"\x88\x02\n" + + "\x1aSetTotpKeyMetadataResponse\x12p\n" + + "\x10metadata_updated\x18\x01 \x01(\v2C.org.signal.chat.account.SetTotpKeyMetadataResponse.MetadataUpdatedH\x00R\x0fmetadataUpdated\x12Y\n" + "\rkey_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x11\xc2\xd5\"\rkey_not_foundH\x00R\vkeyNotFound\x1a\x11\n" + "\x0fMetadataUpdatedB\n" + "\n" + - "\bresponse\"6\n" + - "\x13RemoveMfaKeyRequest\x12\x1f\n" + - "\x06key_id\x18\x01 \x01(\rB\b\xb2\x97\"\x04\b\x00\x10\x7fR\x05keyId\"\x16\n" + - "\x14RemoveMfaKeyResponse\"\x1d\n" + - "\x1bStartMfaVerificationRequest\"\xae\x03\n" + - "\x1cStartMfaVerificationResponse\x12\x19\n" + - "\bhas_totp\x18\x01 \x01(\bR\ahasTotp\x12\xa9\x01\n" + - "\"webauthn_authentication_parameters\x18\x02 \x01(\v2V.org.signal.chat.account.StartMfaVerificationResponse.WebAuthnAuthenticationParametersH\x00R webauthnAuthenticationParameters\x88\x01\x01\x1a\x9f\x01\n" + - " WebAuthnAuthenticationParameters\x12\x1c\n" + - "\tchallenge\x18\x01 \x01(\fR\tchallenge\x12'\n" + - "\x0ftimeout_seconds\x18\x02 \x01(\rR\x0etimeoutSeconds\x124\n" + - "\x16allowed_credential_ids\x18\x03 \x03(\fR\x14allowedCredentialIdsB%\n" + - "#_webauthn_authentication_parameters\"\xa8\x01\n" + - "\x1cFinishMfaVerificationRequest\x12%\n" + - "\rtotp_password\x18\x01 \x01(\rH\x00R\ftotpPassword\x12S\n" + - "%webauthn_authentication_response_json\x18\x02 \x01(\tH\x00R\"webauthnAuthenticationResponseJsonB\f\n" + - "\n" + - "credential\"9\n" + - "\x1dFinishMfaVerificationResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess2\xef\x1a\n" + + "\bresponse\"-\n" + + "\x14RemoveTotpKeyRequest\x12\x15\n" + + "\x06key_id\x18\x01 \x01(\rR\x05keyId\"\x17\n" + + "\x15RemoveTotpKeyResponse2\xb4\x16\n" + "\bAccounts\x12\x7f\n" + "\x12GetAccountIdentity\x122.org.signal.chat.account.GetAccountIdentityRequest\x1a3.org.signal.chat.account.GetAccountIdentityResponse\"\x00\x12v\n" + "\x0fGetEntitlements\x12/.org.signal.chat.account.GetEntitlementsRequest\x1a0.org.signal.chat.account.GetEntitlementsResponse\"\x00\x12p\n" + @@ -4713,14 +3892,10 @@ const file_org_signal_chat_account_proto_rawDesc = "" + "\x14GetAccountDataReport\x124.org.signal.chat.account.GetAccountDataReportRequest\x1a5.org.signal.chat.account.GetAccountDataReportResponse\"\x00\x12v\n" + "\x0fGetCapabilities\x12/.org.signal.chat.account.GetCapabilitiesRequest\x1a0.org.signal.chat.account.GetCapabilitiesResponse\"\x00\x12v\n" + "\x0fGenerateTotpKey\x12/.org.signal.chat.account.GenerateTotpKeyRequest\x1a0.org.signal.chat.account.GenerateTotpKeyResponse\"\x00\x12s\n" + - "\x0eConfirmTotpKey\x12..org.signal.chat.account.ConfirmTotpKeyRequest\x1a/.org.signal.chat.account.ConfirmTotpKeyResponse\"\x00\x12\x94\x01\n" + - "\x19StartWebAuthnRegistration\x129.org.signal.chat.account.StartWebAuthnRegistrationRequest\x1a:.org.signal.chat.account.StartWebAuthnRegistrationResponse\"\x00\x12\x97\x01\n" + - "\x1aFinishWebAuthnRegistration\x12:.org.signal.chat.account.FinishWebAuthnRegistrationRequest\x1a;.org.signal.chat.account.FinishWebAuthnRegistrationResponse\"\x00\x12j\n" + - "\vListMfaKeys\x12+.org.signal.chat.account.ListMfaKeysRequest\x1a,.org.signal.chat.account.ListMfaKeysResponse\"\x00\x12|\n" + - "\x11SetMfaKeyMetadata\x121.org.signal.chat.account.SetMfaKeyMetadataRequest\x1a2.org.signal.chat.account.SetMfaKeyMetadataResponse\"\x00\x12m\n" + - "\fRemoveMfaKey\x12,.org.signal.chat.account.RemoveMfaKeyRequest\x1a-.org.signal.chat.account.RemoveMfaKeyResponse\"\x00\x12\x85\x01\n" + - "\x14StartMfaVerification\x124.org.signal.chat.account.StartMfaVerificationRequest\x1a5.org.signal.chat.account.StartMfaVerificationResponse\"\x00\x12\x88\x01\n" + - "\x15FinishMfaVerification\x125.org.signal.chat.account.FinishMfaVerificationRequest\x1a6.org.signal.chat.account.FinishMfaVerificationResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xb1\x04\n" + + "\x0eConfirmTotpKey\x12..org.signal.chat.account.ConfirmTotpKeyRequest\x1a/.org.signal.chat.account.ConfirmTotpKeyResponse\"\x00\x12m\n" + + "\fListTotpKeys\x12,.org.signal.chat.account.ListTotpKeysRequest\x1a-.org.signal.chat.account.ListTotpKeysResponse\"\x00\x12\x7f\n" + + "\x12SetTotpKeyMetadata\x122.org.signal.chat.account.SetTotpKeyMetadataRequest\x1a3.org.signal.chat.account.SetTotpKeyMetadataResponse\"\x00\x12p\n" + + "\rRemoveTotpKey\x12-.org.signal.chat.account.RemoveTotpKeyRequest\x1a..org.signal.chat.account.RemoveTotpKeyResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xb1\x04\n" + "\x11AccountsAnonymous\x12\x88\x01\n" + "\x15CheckAccountExistence\x125.org.signal.chat.account.CheckAccountExistenceRequest\x1a6.org.signal.chat.account.CheckAccountExistenceResponse\"\x00\x12\x7f\n" + "\x12LookupUsernameHash\x122.org.signal.chat.account.LookupUsernameHashRequest\x1a3.org.signal.chat.account.LookupUsernameHashResponse\"\x00\x12\x7f\n" + @@ -4739,220 +3914,191 @@ func file_org_signal_chat_account_proto_rawDescGZIP() []byte { return file_org_signal_chat_account_proto_rawDescData } -var file_org_signal_chat_account_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_org_signal_chat_account_proto_msgTypes = make([]protoimpl.MessageInfo, 80) +var file_org_signal_chat_account_proto_msgTypes = make([]protoimpl.MessageInfo, 69) var file_org_signal_chat_account_proto_goTypes = []any{ - (ListMfaKeysResponse_MfaKeyMetadata_MfaKeyType)(0), // 0: org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata.MfaKeyType - (*GetAccountIdentityRequest)(nil), // 1: org.signal.chat.account.GetAccountIdentityRequest - (*GetAccountIdentityResponse)(nil), // 2: org.signal.chat.account.GetAccountIdentityResponse - (*GetEntitlementsRequest)(nil), // 3: org.signal.chat.account.GetEntitlementsRequest - (*GetEntitlementsResponse)(nil), // 4: org.signal.chat.account.GetEntitlementsResponse - (*DeleteAccountRequest)(nil), // 5: org.signal.chat.account.DeleteAccountRequest - (*DeleteAccountResponse)(nil), // 6: org.signal.chat.account.DeleteAccountResponse - (*SetRegistrationLockRequest)(nil), // 7: org.signal.chat.account.SetRegistrationLockRequest - (*SetRegistrationLockResponse)(nil), // 8: org.signal.chat.account.SetRegistrationLockResponse - (*ClearRegistrationLockRequest)(nil), // 9: org.signal.chat.account.ClearRegistrationLockRequest - (*ClearRegistrationLockResponse)(nil), // 10: org.signal.chat.account.ClearRegistrationLockResponse - (*ReserveUsernameHashRequest)(nil), // 11: org.signal.chat.account.ReserveUsernameHashRequest - (*UsernameNotAvailable)(nil), // 12: org.signal.chat.account.UsernameNotAvailable - (*ReserveUsernameHashResponse)(nil), // 13: org.signal.chat.account.ReserveUsernameHashResponse - (*ConfirmUsernameHashRequest)(nil), // 14: org.signal.chat.account.ConfirmUsernameHashRequest - (*ConfirmUsernameHashResponse)(nil), // 15: org.signal.chat.account.ConfirmUsernameHashResponse - (*DeleteUsernameHashRequest)(nil), // 16: org.signal.chat.account.DeleteUsernameHashRequest - (*DeleteUsernameHashResponse)(nil), // 17: org.signal.chat.account.DeleteUsernameHashResponse - (*SetUsernameLinkRequest)(nil), // 18: org.signal.chat.account.SetUsernameLinkRequest - (*SetUsernameLinkResponse)(nil), // 19: org.signal.chat.account.SetUsernameLinkResponse - (*DeleteUsernameLinkRequest)(nil), // 20: org.signal.chat.account.DeleteUsernameLinkRequest - (*DeleteUsernameLinkResponse)(nil), // 21: org.signal.chat.account.DeleteUsernameLinkResponse - (*ConfigureUnidentifiedAccessRequest)(nil), // 22: org.signal.chat.account.ConfigureUnidentifiedAccessRequest - (*ConfigureUnidentifiedAccessResponse)(nil), // 23: org.signal.chat.account.ConfigureUnidentifiedAccessResponse - (*SetDiscoverableByPhoneNumberRequest)(nil), // 24: org.signal.chat.account.SetDiscoverableByPhoneNumberRequest - (*SetDiscoverableByPhoneNumberResponse)(nil), // 25: org.signal.chat.account.SetDiscoverableByPhoneNumberResponse - (*SetRegistrationRecoveryPasswordRequest)(nil), // 26: org.signal.chat.account.SetRegistrationRecoveryPasswordRequest - (*SetRegistrationRecoveryPasswordResponse)(nil), // 27: org.signal.chat.account.SetRegistrationRecoveryPasswordResponse - (*CheckAccountExistenceRequest)(nil), // 28: org.signal.chat.account.CheckAccountExistenceRequest - (*CheckAccountExistenceResponse)(nil), // 29: org.signal.chat.account.CheckAccountExistenceResponse - (*LookupUsernameHashRequest)(nil), // 30: org.signal.chat.account.LookupUsernameHashRequest - (*LookupUsernameHashResponse)(nil), // 31: org.signal.chat.account.LookupUsernameHashResponse - (*LookupUsernameLinkRequest)(nil), // 32: org.signal.chat.account.LookupUsernameLinkRequest - (*LookupUsernameLinkResponse)(nil), // 33: org.signal.chat.account.LookupUsernameLinkResponse - (*SetZkCredentialKeyRequest)(nil), // 34: org.signal.chat.account.SetZkCredentialKeyRequest - (*SetZkCredentialKeyResponse)(nil), // 35: org.signal.chat.account.SetZkCredentialKeyResponse - (*ChangeNumberRequest)(nil), // 36: org.signal.chat.account.ChangeNumberRequest - (*ChangeNumberResponse)(nil), // 37: org.signal.chat.account.ChangeNumberResponse - (*RegistrationLockFailure)(nil), // 38: org.signal.chat.account.RegistrationLockFailure - (*ExternalServiceCredentials)(nil), // 39: org.signal.chat.account.ExternalServiceCredentials - (*StaleDevices)(nil), // 40: org.signal.chat.account.StaleDevices - (*GetAccountDataReportRequest)(nil), // 41: org.signal.chat.account.GetAccountDataReportRequest - (*GetAccountDataReportResponse)(nil), // 42: org.signal.chat.account.GetAccountDataReportResponse - (*GetCapabilitiesRequest)(nil), // 43: org.signal.chat.account.GetCapabilitiesRequest - (*Capabilities)(nil), // 44: org.signal.chat.account.Capabilities - (*GetCapabilitiesResponse)(nil), // 45: org.signal.chat.account.GetCapabilitiesResponse - (*GetCapabilitiesAnonymousRequest)(nil), // 46: org.signal.chat.account.GetCapabilitiesAnonymousRequest - (*GetCapabilitiesAnonymousResponse)(nil), // 47: org.signal.chat.account.GetCapabilitiesAnonymousResponse - (*TotpParameters)(nil), // 48: org.signal.chat.account.TotpParameters - (*GenerateTotpKeyRequest)(nil), // 49: org.signal.chat.account.GenerateTotpKeyRequest - (*GenerateTotpKeyResponse)(nil), // 50: org.signal.chat.account.GenerateTotpKeyResponse - (*ConfirmTotpKeyRequest)(nil), // 51: org.signal.chat.account.ConfirmTotpKeyRequest - (*ConfirmTotpKeyResponse)(nil), // 52: org.signal.chat.account.ConfirmTotpKeyResponse - (*StartWebAuthnRegistrationRequest)(nil), // 53: org.signal.chat.account.StartWebAuthnRegistrationRequest - (*StartWebAuthnRegistrationResponse)(nil), // 54: org.signal.chat.account.StartWebAuthnRegistrationResponse - (*FinishWebAuthnRegistrationRequest)(nil), // 55: org.signal.chat.account.FinishWebAuthnRegistrationRequest - (*FinishWebAuthnRegistrationResponse)(nil), // 56: org.signal.chat.account.FinishWebAuthnRegistrationResponse - (*ListMfaKeysRequest)(nil), // 57: org.signal.chat.account.ListMfaKeysRequest - (*ListMfaKeysResponse)(nil), // 58: org.signal.chat.account.ListMfaKeysResponse - (*SetMfaKeyMetadataRequest)(nil), // 59: org.signal.chat.account.SetMfaKeyMetadataRequest - (*SetMfaKeyMetadataResponse)(nil), // 60: org.signal.chat.account.SetMfaKeyMetadataResponse - (*RemoveMfaKeyRequest)(nil), // 61: org.signal.chat.account.RemoveMfaKeyRequest - (*RemoveMfaKeyResponse)(nil), // 62: org.signal.chat.account.RemoveMfaKeyResponse - (*StartMfaVerificationRequest)(nil), // 63: org.signal.chat.account.StartMfaVerificationRequest - (*StartMfaVerificationResponse)(nil), // 64: org.signal.chat.account.StartMfaVerificationResponse - (*FinishMfaVerificationRequest)(nil), // 65: org.signal.chat.account.FinishMfaVerificationRequest - (*FinishMfaVerificationResponse)(nil), // 66: org.signal.chat.account.FinishMfaVerificationResponse - (*GetEntitlementsResponse_BadgeEntitlement)(nil), // 67: org.signal.chat.account.GetEntitlementsResponse.BadgeEntitlement - (*GetEntitlementsResponse_BackupEntitlement)(nil), // 68: org.signal.chat.account.GetEntitlementsResponse.BackupEntitlement - (*ConfirmUsernameHashResponse_ConfirmedUsernameHash)(nil), // 69: org.signal.chat.account.ConfirmUsernameHashResponse.ConfirmedUsernameHash - nil, // 70: org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry - nil, // 71: org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry - nil, // 72: org.signal.chat.account.ChangeNumberRequest.PniRegistrationIdsEntry - (*GenerateTotpKeyResponse_KeyGenerated)(nil), // 73: org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated - (*ConfirmTotpKeyResponse_KeyConfirmed)(nil), // 74: org.signal.chat.account.ConfirmTotpKeyResponse.KeyConfirmed - (*StartWebAuthnRegistrationResponse_WebAuthnCreateParameters)(nil), // 75: org.signal.chat.account.StartWebAuthnRegistrationResponse.WebAuthnCreateParameters - (*FinishWebAuthnRegistrationResponse_KeyConfirmed)(nil), // 76: org.signal.chat.account.FinishWebAuthnRegistrationResponse.KeyConfirmed - (*ListMfaKeysResponse_MfaKeyMetadata)(nil), // 77: org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata - nil, // 78: org.signal.chat.account.ListMfaKeysResponse.KeysEntry - (*SetMfaKeyMetadataResponse_MetadataUpdated)(nil), // 79: org.signal.chat.account.SetMfaKeyMetadataResponse.MetadataUpdated - (*StartMfaVerificationResponse_WebAuthnAuthenticationParameters)(nil), // 80: org.signal.chat.account.StartMfaVerificationResponse.WebAuthnAuthenticationParameters - (*common.AccountIdentifiers)(nil), // 81: org.signal.chat.common.AccountIdentifiers - (*errors.FailedPrecondition)(nil), // 82: org.signal.chat.errors.FailedPrecondition - (*emptypb.Empty)(nil), // 83: google.protobuf.Empty - (*common.ServiceIdentifier)(nil), // 84: org.signal.chat.common.ServiceIdentifier - (*errors.NotFound)(nil), // 85: org.signal.chat.errors.NotFound - (*messages.IndividualRecipientMessageBundle)(nil), // 86: org.signal.chat.messages.IndividualRecipientMessageBundle - (*messages.MismatchedDevices)(nil), // 87: org.signal.chat.messages.MismatchedDevices - (common.DeviceCapability)(0), // 88: org.signal.chat.common.DeviceCapability - (*errors.FailedUnidentifiedAuthorization)(nil), // 89: org.signal.chat.errors.FailedUnidentifiedAuthorization - (*common.EcSignedPreKey)(nil), // 90: org.signal.chat.common.EcSignedPreKey - (*common.KemSignedPreKey)(nil), // 91: org.signal.chat.common.KemSignedPreKey + (*GetAccountIdentityRequest)(nil), // 0: org.signal.chat.account.GetAccountIdentityRequest + (*GetAccountIdentityResponse)(nil), // 1: org.signal.chat.account.GetAccountIdentityResponse + (*GetEntitlementsRequest)(nil), // 2: org.signal.chat.account.GetEntitlementsRequest + (*GetEntitlementsResponse)(nil), // 3: org.signal.chat.account.GetEntitlementsResponse + (*DeleteAccountRequest)(nil), // 4: org.signal.chat.account.DeleteAccountRequest + (*DeleteAccountResponse)(nil), // 5: org.signal.chat.account.DeleteAccountResponse + (*SetRegistrationLockRequest)(nil), // 6: org.signal.chat.account.SetRegistrationLockRequest + (*SetRegistrationLockResponse)(nil), // 7: org.signal.chat.account.SetRegistrationLockResponse + (*ClearRegistrationLockRequest)(nil), // 8: org.signal.chat.account.ClearRegistrationLockRequest + (*ClearRegistrationLockResponse)(nil), // 9: org.signal.chat.account.ClearRegistrationLockResponse + (*ReserveUsernameHashRequest)(nil), // 10: org.signal.chat.account.ReserveUsernameHashRequest + (*UsernameNotAvailable)(nil), // 11: org.signal.chat.account.UsernameNotAvailable + (*ReserveUsernameHashResponse)(nil), // 12: org.signal.chat.account.ReserveUsernameHashResponse + (*ConfirmUsernameHashRequest)(nil), // 13: org.signal.chat.account.ConfirmUsernameHashRequest + (*ConfirmUsernameHashResponse)(nil), // 14: org.signal.chat.account.ConfirmUsernameHashResponse + (*DeleteUsernameHashRequest)(nil), // 15: org.signal.chat.account.DeleteUsernameHashRequest + (*DeleteUsernameHashResponse)(nil), // 16: org.signal.chat.account.DeleteUsernameHashResponse + (*SetUsernameLinkRequest)(nil), // 17: org.signal.chat.account.SetUsernameLinkRequest + (*SetUsernameLinkResponse)(nil), // 18: org.signal.chat.account.SetUsernameLinkResponse + (*DeleteUsernameLinkRequest)(nil), // 19: org.signal.chat.account.DeleteUsernameLinkRequest + (*DeleteUsernameLinkResponse)(nil), // 20: org.signal.chat.account.DeleteUsernameLinkResponse + (*ConfigureUnidentifiedAccessRequest)(nil), // 21: org.signal.chat.account.ConfigureUnidentifiedAccessRequest + (*ConfigureUnidentifiedAccessResponse)(nil), // 22: org.signal.chat.account.ConfigureUnidentifiedAccessResponse + (*SetDiscoverableByPhoneNumberRequest)(nil), // 23: org.signal.chat.account.SetDiscoverableByPhoneNumberRequest + (*SetDiscoverableByPhoneNumberResponse)(nil), // 24: org.signal.chat.account.SetDiscoverableByPhoneNumberResponse + (*SetRegistrationRecoveryPasswordRequest)(nil), // 25: org.signal.chat.account.SetRegistrationRecoveryPasswordRequest + (*SetRegistrationRecoveryPasswordResponse)(nil), // 26: org.signal.chat.account.SetRegistrationRecoveryPasswordResponse + (*CheckAccountExistenceRequest)(nil), // 27: org.signal.chat.account.CheckAccountExistenceRequest + (*CheckAccountExistenceResponse)(nil), // 28: org.signal.chat.account.CheckAccountExistenceResponse + (*LookupUsernameHashRequest)(nil), // 29: org.signal.chat.account.LookupUsernameHashRequest + (*LookupUsernameHashResponse)(nil), // 30: org.signal.chat.account.LookupUsernameHashResponse + (*LookupUsernameLinkRequest)(nil), // 31: org.signal.chat.account.LookupUsernameLinkRequest + (*LookupUsernameLinkResponse)(nil), // 32: org.signal.chat.account.LookupUsernameLinkResponse + (*SetZkCredentialKeyRequest)(nil), // 33: org.signal.chat.account.SetZkCredentialKeyRequest + (*SetZkCredentialKeyResponse)(nil), // 34: org.signal.chat.account.SetZkCredentialKeyResponse + (*ChangeNumberRequest)(nil), // 35: org.signal.chat.account.ChangeNumberRequest + (*ChangeNumberResponse)(nil), // 36: org.signal.chat.account.ChangeNumberResponse + (*RegistrationLockFailure)(nil), // 37: org.signal.chat.account.RegistrationLockFailure + (*ExternalServiceCredentials)(nil), // 38: org.signal.chat.account.ExternalServiceCredentials + (*StaleDevices)(nil), // 39: org.signal.chat.account.StaleDevices + (*GetAccountDataReportRequest)(nil), // 40: org.signal.chat.account.GetAccountDataReportRequest + (*GetAccountDataReportResponse)(nil), // 41: org.signal.chat.account.GetAccountDataReportResponse + (*GetCapabilitiesRequest)(nil), // 42: org.signal.chat.account.GetCapabilitiesRequest + (*Capabilities)(nil), // 43: org.signal.chat.account.Capabilities + (*GetCapabilitiesResponse)(nil), // 44: org.signal.chat.account.GetCapabilitiesResponse + (*GetCapabilitiesAnonymousRequest)(nil), // 45: org.signal.chat.account.GetCapabilitiesAnonymousRequest + (*GetCapabilitiesAnonymousResponse)(nil), // 46: org.signal.chat.account.GetCapabilitiesAnonymousResponse + (*TotpParameters)(nil), // 47: org.signal.chat.account.TotpParameters + (*GenerateTotpKeyRequest)(nil), // 48: org.signal.chat.account.GenerateTotpKeyRequest + (*GenerateTotpKeyResponse)(nil), // 49: org.signal.chat.account.GenerateTotpKeyResponse + (*ConfirmTotpKeyRequest)(nil), // 50: org.signal.chat.account.ConfirmTotpKeyRequest + (*ConfirmTotpKeyResponse)(nil), // 51: org.signal.chat.account.ConfirmTotpKeyResponse + (*ListTotpKeysRequest)(nil), // 52: org.signal.chat.account.ListTotpKeysRequest + (*ListTotpKeysResponse)(nil), // 53: org.signal.chat.account.ListTotpKeysResponse + (*SetTotpKeyMetadataRequest)(nil), // 54: org.signal.chat.account.SetTotpKeyMetadataRequest + (*SetTotpKeyMetadataResponse)(nil), // 55: org.signal.chat.account.SetTotpKeyMetadataResponse + (*RemoveTotpKeyRequest)(nil), // 56: org.signal.chat.account.RemoveTotpKeyRequest + (*RemoveTotpKeyResponse)(nil), // 57: org.signal.chat.account.RemoveTotpKeyResponse + (*GetEntitlementsResponse_BadgeEntitlement)(nil), // 58: org.signal.chat.account.GetEntitlementsResponse.BadgeEntitlement + (*GetEntitlementsResponse_BackupEntitlement)(nil), // 59: org.signal.chat.account.GetEntitlementsResponse.BackupEntitlement + (*ConfirmUsernameHashResponse_ConfirmedUsernameHash)(nil), // 60: org.signal.chat.account.ConfirmUsernameHashResponse.ConfirmedUsernameHash + nil, // 61: org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry + nil, // 62: org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry + nil, // 63: org.signal.chat.account.ChangeNumberRequest.PniRegistrationIdsEntry + (*GenerateTotpKeyResponse_KeyGenerated)(nil), // 64: org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated + (*ConfirmTotpKeyResponse_KeyConfirmed)(nil), // 65: org.signal.chat.account.ConfirmTotpKeyResponse.KeyConfirmed + (*ListTotpKeysResponse_TotpKeyMetadata)(nil), // 66: org.signal.chat.account.ListTotpKeysResponse.TotpKeyMetadata + nil, // 67: org.signal.chat.account.ListTotpKeysResponse.KeysEntry + (*SetTotpKeyMetadataResponse_MetadataUpdated)(nil), // 68: org.signal.chat.account.SetTotpKeyMetadataResponse.MetadataUpdated + (*common.AccountIdentifiers)(nil), // 69: org.signal.chat.common.AccountIdentifiers + (*errors.FailedPrecondition)(nil), // 70: org.signal.chat.errors.FailedPrecondition + (*emptypb.Empty)(nil), // 71: google.protobuf.Empty + (*common.ServiceIdentifier)(nil), // 72: org.signal.chat.common.ServiceIdentifier + (*errors.NotFound)(nil), // 73: org.signal.chat.errors.NotFound + (*messages.IndividualRecipientMessageBundle)(nil), // 74: org.signal.chat.messages.IndividualRecipientMessageBundle + (*messages.MismatchedDevices)(nil), // 75: org.signal.chat.messages.MismatchedDevices + (common.DeviceCapability)(0), // 76: org.signal.chat.common.DeviceCapability + (*errors.FailedUnidentifiedAuthorization)(nil), // 77: org.signal.chat.errors.FailedUnidentifiedAuthorization + (*common.EcSignedPreKey)(nil), // 78: org.signal.chat.common.EcSignedPreKey + (*common.KemSignedPreKey)(nil), // 79: org.signal.chat.common.KemSignedPreKey } var file_org_signal_chat_account_proto_depIdxs = []int32{ - 81, // 0: org.signal.chat.account.GetAccountIdentityResponse.account_identifiers:type_name -> org.signal.chat.common.AccountIdentifiers - 67, // 1: org.signal.chat.account.GetEntitlementsResponse.badges:type_name -> org.signal.chat.account.GetEntitlementsResponse.BadgeEntitlement - 68, // 2: org.signal.chat.account.GetEntitlementsResponse.backup:type_name -> org.signal.chat.account.GetEntitlementsResponse.BackupEntitlement - 12, // 3: org.signal.chat.account.ReserveUsernameHashResponse.username_not_available:type_name -> org.signal.chat.account.UsernameNotAvailable - 69, // 4: org.signal.chat.account.ConfirmUsernameHashResponse.confirmed_username_hash:type_name -> org.signal.chat.account.ConfirmUsernameHashResponse.ConfirmedUsernameHash - 82, // 5: org.signal.chat.account.ConfirmUsernameHashResponse.reservation_not_found:type_name -> org.signal.chat.errors.FailedPrecondition - 12, // 6: org.signal.chat.account.ConfirmUsernameHashResponse.username_not_available:type_name -> org.signal.chat.account.UsernameNotAvailable - 82, // 7: org.signal.chat.account.SetUsernameLinkResponse.no_username_set:type_name -> org.signal.chat.errors.FailedPrecondition - 83, // 8: org.signal.chat.account.ConfigureUnidentifiedAccessRequest.allow_unrestricted_unidentified_access:type_name -> google.protobuf.Empty - 84, // 9: org.signal.chat.account.CheckAccountExistenceRequest.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 84, // 10: org.signal.chat.account.LookupUsernameHashResponse.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 85, // 11: org.signal.chat.account.LookupUsernameHashResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 85, // 12: org.signal.chat.account.LookupUsernameLinkResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 86, // 13: org.signal.chat.account.ChangeNumberRequest.device_messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle - 70, // 14: org.signal.chat.account.ChangeNumberRequest.device_pni_signed_pre_keys:type_name -> org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry - 71, // 15: org.signal.chat.account.ChangeNumberRequest.device_pni_pq_last_resort_pre_keys:type_name -> org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry - 72, // 16: org.signal.chat.account.ChangeNumberRequest.pni_registration_ids:type_name -> org.signal.chat.account.ChangeNumberRequest.PniRegistrationIdsEntry - 81, // 17: org.signal.chat.account.ChangeNumberResponse.account_identifiers:type_name -> org.signal.chat.common.AccountIdentifiers - 87, // 18: org.signal.chat.account.ChangeNumberResponse.mismatched_devices:type_name -> org.signal.chat.messages.MismatchedDevices - 38, // 19: org.signal.chat.account.ChangeNumberResponse.registration_lock_failure:type_name -> org.signal.chat.account.RegistrationLockFailure - 40, // 20: org.signal.chat.account.ChangeNumberResponse.stale_devices:type_name -> org.signal.chat.account.StaleDevices - 82, // 21: org.signal.chat.account.ChangeNumberResponse.message_too_large:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 22: org.signal.chat.account.ChangeNumberResponse.unverified_registration_session:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 23: org.signal.chat.account.ChangeNumberResponse.invalid_registration_session:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 24: org.signal.chat.account.ChangeNumberResponse.recovery_password_verification_failed:type_name -> org.signal.chat.errors.FailedPrecondition - 39, // 25: org.signal.chat.account.RegistrationLockFailure.svr2_credentials:type_name -> org.signal.chat.account.ExternalServiceCredentials - 88, // 26: org.signal.chat.account.Capabilities.capabilities:type_name -> org.signal.chat.common.DeviceCapability - 44, // 27: org.signal.chat.account.GetCapabilitiesResponse.capabilities:type_name -> org.signal.chat.account.Capabilities - 84, // 28: org.signal.chat.account.GetCapabilitiesAnonymousRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 44, // 29: org.signal.chat.account.GetCapabilitiesAnonymousResponse.capabilities:type_name -> org.signal.chat.account.Capabilities - 85, // 30: org.signal.chat.account.GetCapabilitiesAnonymousResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 89, // 31: org.signal.chat.account.GetCapabilitiesAnonymousResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization - 73, // 32: org.signal.chat.account.GenerateTotpKeyResponse.key_generated:type_name -> org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated - 82, // 33: org.signal.chat.account.GenerateTotpKeyResponse.too_many_totp_keys:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 34: org.signal.chat.account.GenerateTotpKeyResponse.too_many_mfa_keys:type_name -> org.signal.chat.errors.FailedPrecondition - 74, // 35: org.signal.chat.account.ConfirmTotpKeyResponse.key_confirmed:type_name -> org.signal.chat.account.ConfirmTotpKeyResponse.KeyConfirmed - 82, // 36: org.signal.chat.account.ConfirmTotpKeyResponse.one_time_password_not_verified:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 37: org.signal.chat.account.ConfirmTotpKeyResponse.too_many_mfa_keys:type_name -> org.signal.chat.errors.FailedPrecondition - 75, // 38: org.signal.chat.account.StartWebAuthnRegistrationResponse.params:type_name -> org.signal.chat.account.StartWebAuthnRegistrationResponse.WebAuthnCreateParameters - 82, // 39: org.signal.chat.account.StartWebAuthnRegistrationResponse.too_many_mfa_keys:type_name -> org.signal.chat.errors.FailedPrecondition - 76, // 40: org.signal.chat.account.FinishWebAuthnRegistrationResponse.key_confirmed:type_name -> org.signal.chat.account.FinishWebAuthnRegistrationResponse.KeyConfirmed - 82, // 41: org.signal.chat.account.FinishWebAuthnRegistrationResponse.key_not_confirmed:type_name -> org.signal.chat.errors.FailedPrecondition - 82, // 42: org.signal.chat.account.FinishWebAuthnRegistrationResponse.too_many_mfa_keys:type_name -> org.signal.chat.errors.FailedPrecondition - 78, // 43: org.signal.chat.account.ListMfaKeysResponse.keys:type_name -> org.signal.chat.account.ListMfaKeysResponse.KeysEntry - 79, // 44: org.signal.chat.account.SetMfaKeyMetadataResponse.success:type_name -> org.signal.chat.account.SetMfaKeyMetadataResponse.MetadataUpdated - 85, // 45: org.signal.chat.account.SetMfaKeyMetadataResponse.key_not_found:type_name -> org.signal.chat.errors.NotFound - 80, // 46: org.signal.chat.account.StartMfaVerificationResponse.webauthn_authentication_parameters:type_name -> org.signal.chat.account.StartMfaVerificationResponse.WebAuthnAuthenticationParameters - 90, // 47: org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry.value:type_name -> org.signal.chat.common.EcSignedPreKey - 91, // 48: org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry.value:type_name -> org.signal.chat.common.KemSignedPreKey - 48, // 49: org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated.totp_parameters:type_name -> org.signal.chat.account.TotpParameters - 0, // 50: org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata.type:type_name -> org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata.MfaKeyType - 77, // 51: org.signal.chat.account.ListMfaKeysResponse.KeysEntry.value:type_name -> org.signal.chat.account.ListMfaKeysResponse.MfaKeyMetadata - 1, // 52: org.signal.chat.account.Accounts.GetAccountIdentity:input_type -> org.signal.chat.account.GetAccountIdentityRequest - 3, // 53: org.signal.chat.account.Accounts.GetEntitlements:input_type -> org.signal.chat.account.GetEntitlementsRequest - 5, // 54: org.signal.chat.account.Accounts.DeleteAccount:input_type -> org.signal.chat.account.DeleteAccountRequest - 7, // 55: org.signal.chat.account.Accounts.SetRegistrationLock:input_type -> org.signal.chat.account.SetRegistrationLockRequest - 9, // 56: org.signal.chat.account.Accounts.ClearRegistrationLock:input_type -> org.signal.chat.account.ClearRegistrationLockRequest - 11, // 57: org.signal.chat.account.Accounts.ReserveUsernameHash:input_type -> org.signal.chat.account.ReserveUsernameHashRequest - 14, // 58: org.signal.chat.account.Accounts.ConfirmUsernameHash:input_type -> org.signal.chat.account.ConfirmUsernameHashRequest - 16, // 59: org.signal.chat.account.Accounts.DeleteUsernameHash:input_type -> org.signal.chat.account.DeleteUsernameHashRequest - 18, // 60: org.signal.chat.account.Accounts.SetUsernameLink:input_type -> org.signal.chat.account.SetUsernameLinkRequest - 20, // 61: org.signal.chat.account.Accounts.DeleteUsernameLink:input_type -> org.signal.chat.account.DeleteUsernameLinkRequest - 22, // 62: org.signal.chat.account.Accounts.ConfigureUnidentifiedAccess:input_type -> org.signal.chat.account.ConfigureUnidentifiedAccessRequest - 24, // 63: org.signal.chat.account.Accounts.SetDiscoverableByPhoneNumber:input_type -> org.signal.chat.account.SetDiscoverableByPhoneNumberRequest - 26, // 64: org.signal.chat.account.Accounts.SetRegistrationRecoveryPassword:input_type -> org.signal.chat.account.SetRegistrationRecoveryPasswordRequest - 34, // 65: org.signal.chat.account.Accounts.SetZkCredentialKey:input_type -> org.signal.chat.account.SetZkCredentialKeyRequest - 36, // 66: org.signal.chat.account.Accounts.ChangeNumber:input_type -> org.signal.chat.account.ChangeNumberRequest - 41, // 67: org.signal.chat.account.Accounts.GetAccountDataReport:input_type -> org.signal.chat.account.GetAccountDataReportRequest - 43, // 68: org.signal.chat.account.Accounts.GetCapabilities:input_type -> org.signal.chat.account.GetCapabilitiesRequest - 49, // 69: org.signal.chat.account.Accounts.GenerateTotpKey:input_type -> org.signal.chat.account.GenerateTotpKeyRequest - 51, // 70: org.signal.chat.account.Accounts.ConfirmTotpKey:input_type -> org.signal.chat.account.ConfirmTotpKeyRequest - 53, // 71: org.signal.chat.account.Accounts.StartWebAuthnRegistration:input_type -> org.signal.chat.account.StartWebAuthnRegistrationRequest - 55, // 72: org.signal.chat.account.Accounts.FinishWebAuthnRegistration:input_type -> org.signal.chat.account.FinishWebAuthnRegistrationRequest - 57, // 73: org.signal.chat.account.Accounts.ListMfaKeys:input_type -> org.signal.chat.account.ListMfaKeysRequest - 59, // 74: org.signal.chat.account.Accounts.SetMfaKeyMetadata:input_type -> org.signal.chat.account.SetMfaKeyMetadataRequest - 61, // 75: org.signal.chat.account.Accounts.RemoveMfaKey:input_type -> org.signal.chat.account.RemoveMfaKeyRequest - 63, // 76: org.signal.chat.account.Accounts.StartMfaVerification:input_type -> org.signal.chat.account.StartMfaVerificationRequest - 65, // 77: org.signal.chat.account.Accounts.FinishMfaVerification:input_type -> org.signal.chat.account.FinishMfaVerificationRequest - 28, // 78: org.signal.chat.account.AccountsAnonymous.CheckAccountExistence:input_type -> org.signal.chat.account.CheckAccountExistenceRequest - 30, // 79: org.signal.chat.account.AccountsAnonymous.LookupUsernameHash:input_type -> org.signal.chat.account.LookupUsernameHashRequest - 32, // 80: org.signal.chat.account.AccountsAnonymous.LookupUsernameLink:input_type -> org.signal.chat.account.LookupUsernameLinkRequest - 46, // 81: org.signal.chat.account.AccountsAnonymous.GetCapabilities:input_type -> org.signal.chat.account.GetCapabilitiesAnonymousRequest - 2, // 82: org.signal.chat.account.Accounts.GetAccountIdentity:output_type -> org.signal.chat.account.GetAccountIdentityResponse - 4, // 83: org.signal.chat.account.Accounts.GetEntitlements:output_type -> org.signal.chat.account.GetEntitlementsResponse - 6, // 84: org.signal.chat.account.Accounts.DeleteAccount:output_type -> org.signal.chat.account.DeleteAccountResponse - 8, // 85: org.signal.chat.account.Accounts.SetRegistrationLock:output_type -> org.signal.chat.account.SetRegistrationLockResponse - 10, // 86: org.signal.chat.account.Accounts.ClearRegistrationLock:output_type -> org.signal.chat.account.ClearRegistrationLockResponse - 13, // 87: org.signal.chat.account.Accounts.ReserveUsernameHash:output_type -> org.signal.chat.account.ReserveUsernameHashResponse - 15, // 88: org.signal.chat.account.Accounts.ConfirmUsernameHash:output_type -> org.signal.chat.account.ConfirmUsernameHashResponse - 17, // 89: org.signal.chat.account.Accounts.DeleteUsernameHash:output_type -> org.signal.chat.account.DeleteUsernameHashResponse - 19, // 90: org.signal.chat.account.Accounts.SetUsernameLink:output_type -> org.signal.chat.account.SetUsernameLinkResponse - 21, // 91: org.signal.chat.account.Accounts.DeleteUsernameLink:output_type -> org.signal.chat.account.DeleteUsernameLinkResponse - 23, // 92: org.signal.chat.account.Accounts.ConfigureUnidentifiedAccess:output_type -> org.signal.chat.account.ConfigureUnidentifiedAccessResponse - 25, // 93: org.signal.chat.account.Accounts.SetDiscoverableByPhoneNumber:output_type -> org.signal.chat.account.SetDiscoverableByPhoneNumberResponse - 27, // 94: org.signal.chat.account.Accounts.SetRegistrationRecoveryPassword:output_type -> org.signal.chat.account.SetRegistrationRecoveryPasswordResponse - 35, // 95: org.signal.chat.account.Accounts.SetZkCredentialKey:output_type -> org.signal.chat.account.SetZkCredentialKeyResponse - 37, // 96: org.signal.chat.account.Accounts.ChangeNumber:output_type -> org.signal.chat.account.ChangeNumberResponse - 42, // 97: org.signal.chat.account.Accounts.GetAccountDataReport:output_type -> org.signal.chat.account.GetAccountDataReportResponse - 45, // 98: org.signal.chat.account.Accounts.GetCapabilities:output_type -> org.signal.chat.account.GetCapabilitiesResponse - 50, // 99: org.signal.chat.account.Accounts.GenerateTotpKey:output_type -> org.signal.chat.account.GenerateTotpKeyResponse - 52, // 100: org.signal.chat.account.Accounts.ConfirmTotpKey:output_type -> org.signal.chat.account.ConfirmTotpKeyResponse - 54, // 101: org.signal.chat.account.Accounts.StartWebAuthnRegistration:output_type -> org.signal.chat.account.StartWebAuthnRegistrationResponse - 56, // 102: org.signal.chat.account.Accounts.FinishWebAuthnRegistration:output_type -> org.signal.chat.account.FinishWebAuthnRegistrationResponse - 58, // 103: org.signal.chat.account.Accounts.ListMfaKeys:output_type -> org.signal.chat.account.ListMfaKeysResponse - 60, // 104: org.signal.chat.account.Accounts.SetMfaKeyMetadata:output_type -> org.signal.chat.account.SetMfaKeyMetadataResponse - 62, // 105: org.signal.chat.account.Accounts.RemoveMfaKey:output_type -> org.signal.chat.account.RemoveMfaKeyResponse - 64, // 106: org.signal.chat.account.Accounts.StartMfaVerification:output_type -> org.signal.chat.account.StartMfaVerificationResponse - 66, // 107: org.signal.chat.account.Accounts.FinishMfaVerification:output_type -> org.signal.chat.account.FinishMfaVerificationResponse - 29, // 108: org.signal.chat.account.AccountsAnonymous.CheckAccountExistence:output_type -> org.signal.chat.account.CheckAccountExistenceResponse - 31, // 109: org.signal.chat.account.AccountsAnonymous.LookupUsernameHash:output_type -> org.signal.chat.account.LookupUsernameHashResponse - 33, // 110: org.signal.chat.account.AccountsAnonymous.LookupUsernameLink:output_type -> org.signal.chat.account.LookupUsernameLinkResponse - 47, // 111: org.signal.chat.account.AccountsAnonymous.GetCapabilities:output_type -> org.signal.chat.account.GetCapabilitiesAnonymousResponse - 82, // [82:112] is the sub-list for method output_type - 52, // [52:82] is the sub-list for method input_type - 52, // [52:52] is the sub-list for extension type_name - 52, // [52:52] is the sub-list for extension extendee - 0, // [0:52] is the sub-list for field type_name + 69, // 0: org.signal.chat.account.GetAccountIdentityResponse.account_identifiers:type_name -> org.signal.chat.common.AccountIdentifiers + 58, // 1: org.signal.chat.account.GetEntitlementsResponse.badges:type_name -> org.signal.chat.account.GetEntitlementsResponse.BadgeEntitlement + 59, // 2: org.signal.chat.account.GetEntitlementsResponse.backup:type_name -> org.signal.chat.account.GetEntitlementsResponse.BackupEntitlement + 11, // 3: org.signal.chat.account.ReserveUsernameHashResponse.username_not_available:type_name -> org.signal.chat.account.UsernameNotAvailable + 60, // 4: org.signal.chat.account.ConfirmUsernameHashResponse.confirmed_username_hash:type_name -> org.signal.chat.account.ConfirmUsernameHashResponse.ConfirmedUsernameHash + 70, // 5: org.signal.chat.account.ConfirmUsernameHashResponse.reservation_not_found:type_name -> org.signal.chat.errors.FailedPrecondition + 11, // 6: org.signal.chat.account.ConfirmUsernameHashResponse.username_not_available:type_name -> org.signal.chat.account.UsernameNotAvailable + 70, // 7: org.signal.chat.account.SetUsernameLinkResponse.no_username_set:type_name -> org.signal.chat.errors.FailedPrecondition + 71, // 8: org.signal.chat.account.ConfigureUnidentifiedAccessRequest.allow_unrestricted_unidentified_access:type_name -> google.protobuf.Empty + 72, // 9: org.signal.chat.account.CheckAccountExistenceRequest.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 72, // 10: org.signal.chat.account.LookupUsernameHashResponse.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 73, // 11: org.signal.chat.account.LookupUsernameHashResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 73, // 12: org.signal.chat.account.LookupUsernameLinkResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 74, // 13: org.signal.chat.account.ChangeNumberRequest.device_messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle + 61, // 14: org.signal.chat.account.ChangeNumberRequest.device_pni_signed_pre_keys:type_name -> org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry + 62, // 15: org.signal.chat.account.ChangeNumberRequest.device_pni_pq_last_resort_pre_keys:type_name -> org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry + 63, // 16: org.signal.chat.account.ChangeNumberRequest.pni_registration_ids:type_name -> org.signal.chat.account.ChangeNumberRequest.PniRegistrationIdsEntry + 69, // 17: org.signal.chat.account.ChangeNumberResponse.account_identifiers:type_name -> org.signal.chat.common.AccountIdentifiers + 75, // 18: org.signal.chat.account.ChangeNumberResponse.mismatched_devices:type_name -> org.signal.chat.messages.MismatchedDevices + 37, // 19: org.signal.chat.account.ChangeNumberResponse.registration_lock_failure:type_name -> org.signal.chat.account.RegistrationLockFailure + 39, // 20: org.signal.chat.account.ChangeNumberResponse.stale_devices:type_name -> org.signal.chat.account.StaleDevices + 70, // 21: org.signal.chat.account.ChangeNumberResponse.message_too_large:type_name -> org.signal.chat.errors.FailedPrecondition + 70, // 22: org.signal.chat.account.ChangeNumberResponse.unverified_registration_session:type_name -> org.signal.chat.errors.FailedPrecondition + 70, // 23: org.signal.chat.account.ChangeNumberResponse.invalid_registration_session:type_name -> org.signal.chat.errors.FailedPrecondition + 70, // 24: org.signal.chat.account.ChangeNumberResponse.recovery_password_verification_failed:type_name -> org.signal.chat.errors.FailedPrecondition + 38, // 25: org.signal.chat.account.RegistrationLockFailure.svr2_credentials:type_name -> org.signal.chat.account.ExternalServiceCredentials + 76, // 26: org.signal.chat.account.Capabilities.capabilities:type_name -> org.signal.chat.common.DeviceCapability + 43, // 27: org.signal.chat.account.GetCapabilitiesResponse.capabilities:type_name -> org.signal.chat.account.Capabilities + 72, // 28: org.signal.chat.account.GetCapabilitiesAnonymousRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 43, // 29: org.signal.chat.account.GetCapabilitiesAnonymousResponse.capabilities:type_name -> org.signal.chat.account.Capabilities + 73, // 30: org.signal.chat.account.GetCapabilitiesAnonymousResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 77, // 31: org.signal.chat.account.GetCapabilitiesAnonymousResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 64, // 32: org.signal.chat.account.GenerateTotpKeyResponse.key_generated:type_name -> org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated + 70, // 33: org.signal.chat.account.GenerateTotpKeyResponse.too_many_totp_keys:type_name -> org.signal.chat.errors.FailedPrecondition + 65, // 34: org.signal.chat.account.ConfirmTotpKeyResponse.key_confirmed:type_name -> org.signal.chat.account.ConfirmTotpKeyResponse.KeyConfirmed + 70, // 35: org.signal.chat.account.ConfirmTotpKeyResponse.one_time_password_not_verified:type_name -> org.signal.chat.errors.FailedPrecondition + 67, // 36: org.signal.chat.account.ListTotpKeysResponse.keys:type_name -> org.signal.chat.account.ListTotpKeysResponse.KeysEntry + 68, // 37: org.signal.chat.account.SetTotpKeyMetadataResponse.metadata_updated:type_name -> org.signal.chat.account.SetTotpKeyMetadataResponse.MetadataUpdated + 73, // 38: org.signal.chat.account.SetTotpKeyMetadataResponse.key_not_found:type_name -> org.signal.chat.errors.NotFound + 78, // 39: org.signal.chat.account.ChangeNumberRequest.DevicePniSignedPreKeysEntry.value:type_name -> org.signal.chat.common.EcSignedPreKey + 79, // 40: org.signal.chat.account.ChangeNumberRequest.DevicePniPqLastResortPreKeysEntry.value:type_name -> org.signal.chat.common.KemSignedPreKey + 47, // 41: org.signal.chat.account.GenerateTotpKeyResponse.KeyGenerated.totp_parameters:type_name -> org.signal.chat.account.TotpParameters + 47, // 42: org.signal.chat.account.ListTotpKeysResponse.TotpKeyMetadata.totp_parameters:type_name -> org.signal.chat.account.TotpParameters + 66, // 43: org.signal.chat.account.ListTotpKeysResponse.KeysEntry.value:type_name -> org.signal.chat.account.ListTotpKeysResponse.TotpKeyMetadata + 0, // 44: org.signal.chat.account.Accounts.GetAccountIdentity:input_type -> org.signal.chat.account.GetAccountIdentityRequest + 2, // 45: org.signal.chat.account.Accounts.GetEntitlements:input_type -> org.signal.chat.account.GetEntitlementsRequest + 4, // 46: org.signal.chat.account.Accounts.DeleteAccount:input_type -> org.signal.chat.account.DeleteAccountRequest + 6, // 47: org.signal.chat.account.Accounts.SetRegistrationLock:input_type -> org.signal.chat.account.SetRegistrationLockRequest + 8, // 48: org.signal.chat.account.Accounts.ClearRegistrationLock:input_type -> org.signal.chat.account.ClearRegistrationLockRequest + 10, // 49: org.signal.chat.account.Accounts.ReserveUsernameHash:input_type -> org.signal.chat.account.ReserveUsernameHashRequest + 13, // 50: org.signal.chat.account.Accounts.ConfirmUsernameHash:input_type -> org.signal.chat.account.ConfirmUsernameHashRequest + 15, // 51: org.signal.chat.account.Accounts.DeleteUsernameHash:input_type -> org.signal.chat.account.DeleteUsernameHashRequest + 17, // 52: org.signal.chat.account.Accounts.SetUsernameLink:input_type -> org.signal.chat.account.SetUsernameLinkRequest + 19, // 53: org.signal.chat.account.Accounts.DeleteUsernameLink:input_type -> org.signal.chat.account.DeleteUsernameLinkRequest + 21, // 54: org.signal.chat.account.Accounts.ConfigureUnidentifiedAccess:input_type -> org.signal.chat.account.ConfigureUnidentifiedAccessRequest + 23, // 55: org.signal.chat.account.Accounts.SetDiscoverableByPhoneNumber:input_type -> org.signal.chat.account.SetDiscoverableByPhoneNumberRequest + 25, // 56: org.signal.chat.account.Accounts.SetRegistrationRecoveryPassword:input_type -> org.signal.chat.account.SetRegistrationRecoveryPasswordRequest + 33, // 57: org.signal.chat.account.Accounts.SetZkCredentialKey:input_type -> org.signal.chat.account.SetZkCredentialKeyRequest + 35, // 58: org.signal.chat.account.Accounts.ChangeNumber:input_type -> org.signal.chat.account.ChangeNumberRequest + 40, // 59: org.signal.chat.account.Accounts.GetAccountDataReport:input_type -> org.signal.chat.account.GetAccountDataReportRequest + 42, // 60: org.signal.chat.account.Accounts.GetCapabilities:input_type -> org.signal.chat.account.GetCapabilitiesRequest + 48, // 61: org.signal.chat.account.Accounts.GenerateTotpKey:input_type -> org.signal.chat.account.GenerateTotpKeyRequest + 50, // 62: org.signal.chat.account.Accounts.ConfirmTotpKey:input_type -> org.signal.chat.account.ConfirmTotpKeyRequest + 52, // 63: org.signal.chat.account.Accounts.ListTotpKeys:input_type -> org.signal.chat.account.ListTotpKeysRequest + 54, // 64: org.signal.chat.account.Accounts.SetTotpKeyMetadata:input_type -> org.signal.chat.account.SetTotpKeyMetadataRequest + 56, // 65: org.signal.chat.account.Accounts.RemoveTotpKey:input_type -> org.signal.chat.account.RemoveTotpKeyRequest + 27, // 66: org.signal.chat.account.AccountsAnonymous.CheckAccountExistence:input_type -> org.signal.chat.account.CheckAccountExistenceRequest + 29, // 67: org.signal.chat.account.AccountsAnonymous.LookupUsernameHash:input_type -> org.signal.chat.account.LookupUsernameHashRequest + 31, // 68: org.signal.chat.account.AccountsAnonymous.LookupUsernameLink:input_type -> org.signal.chat.account.LookupUsernameLinkRequest + 45, // 69: org.signal.chat.account.AccountsAnonymous.GetCapabilities:input_type -> org.signal.chat.account.GetCapabilitiesAnonymousRequest + 1, // 70: org.signal.chat.account.Accounts.GetAccountIdentity:output_type -> org.signal.chat.account.GetAccountIdentityResponse + 3, // 71: org.signal.chat.account.Accounts.GetEntitlements:output_type -> org.signal.chat.account.GetEntitlementsResponse + 5, // 72: org.signal.chat.account.Accounts.DeleteAccount:output_type -> org.signal.chat.account.DeleteAccountResponse + 7, // 73: org.signal.chat.account.Accounts.SetRegistrationLock:output_type -> org.signal.chat.account.SetRegistrationLockResponse + 9, // 74: org.signal.chat.account.Accounts.ClearRegistrationLock:output_type -> org.signal.chat.account.ClearRegistrationLockResponse + 12, // 75: org.signal.chat.account.Accounts.ReserveUsernameHash:output_type -> org.signal.chat.account.ReserveUsernameHashResponse + 14, // 76: org.signal.chat.account.Accounts.ConfirmUsernameHash:output_type -> org.signal.chat.account.ConfirmUsernameHashResponse + 16, // 77: org.signal.chat.account.Accounts.DeleteUsernameHash:output_type -> org.signal.chat.account.DeleteUsernameHashResponse + 18, // 78: org.signal.chat.account.Accounts.SetUsernameLink:output_type -> org.signal.chat.account.SetUsernameLinkResponse + 20, // 79: org.signal.chat.account.Accounts.DeleteUsernameLink:output_type -> org.signal.chat.account.DeleteUsernameLinkResponse + 22, // 80: org.signal.chat.account.Accounts.ConfigureUnidentifiedAccess:output_type -> org.signal.chat.account.ConfigureUnidentifiedAccessResponse + 24, // 81: org.signal.chat.account.Accounts.SetDiscoverableByPhoneNumber:output_type -> org.signal.chat.account.SetDiscoverableByPhoneNumberResponse + 26, // 82: org.signal.chat.account.Accounts.SetRegistrationRecoveryPassword:output_type -> org.signal.chat.account.SetRegistrationRecoveryPasswordResponse + 34, // 83: org.signal.chat.account.Accounts.SetZkCredentialKey:output_type -> org.signal.chat.account.SetZkCredentialKeyResponse + 36, // 84: org.signal.chat.account.Accounts.ChangeNumber:output_type -> org.signal.chat.account.ChangeNumberResponse + 41, // 85: org.signal.chat.account.Accounts.GetAccountDataReport:output_type -> org.signal.chat.account.GetAccountDataReportResponse + 44, // 86: org.signal.chat.account.Accounts.GetCapabilities:output_type -> org.signal.chat.account.GetCapabilitiesResponse + 49, // 87: org.signal.chat.account.Accounts.GenerateTotpKey:output_type -> org.signal.chat.account.GenerateTotpKeyResponse + 51, // 88: org.signal.chat.account.Accounts.ConfirmTotpKey:output_type -> org.signal.chat.account.ConfirmTotpKeyResponse + 53, // 89: org.signal.chat.account.Accounts.ListTotpKeys:output_type -> org.signal.chat.account.ListTotpKeysResponse + 55, // 90: org.signal.chat.account.Accounts.SetTotpKeyMetadata:output_type -> org.signal.chat.account.SetTotpKeyMetadataResponse + 57, // 91: org.signal.chat.account.Accounts.RemoveTotpKey:output_type -> org.signal.chat.account.RemoveTotpKeyResponse + 28, // 92: org.signal.chat.account.AccountsAnonymous.CheckAccountExistence:output_type -> org.signal.chat.account.CheckAccountExistenceResponse + 30, // 93: org.signal.chat.account.AccountsAnonymous.LookupUsernameHash:output_type -> org.signal.chat.account.LookupUsernameHashResponse + 32, // 94: org.signal.chat.account.AccountsAnonymous.LookupUsernameLink:output_type -> org.signal.chat.account.LookupUsernameLinkResponse + 46, // 95: org.signal.chat.account.AccountsAnonymous.GetCapabilities:output_type -> org.signal.chat.account.GetCapabilitiesAnonymousResponse + 70, // [70:96] is the sub-list for method output_type + 44, // [44:70] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_org_signal_chat_account_proto_init() } @@ -5011,44 +4157,27 @@ func file_org_signal_chat_account_proto_init() { file_org_signal_chat_account_proto_msgTypes[49].OneofWrappers = []any{ (*GenerateTotpKeyResponse_KeyGenerated_)(nil), (*GenerateTotpKeyResponse_TooManyTotpKeys)(nil), - (*GenerateTotpKeyResponse_TooManyMfaKeys)(nil), } file_org_signal_chat_account_proto_msgTypes[51].OneofWrappers = []any{ (*ConfirmTotpKeyResponse_KeyConfirmed_)(nil), (*ConfirmTotpKeyResponse_OneTimePasswordNotVerified)(nil), - (*ConfirmTotpKeyResponse_TooManyMfaKeys)(nil), - } - file_org_signal_chat_account_proto_msgTypes[53].OneofWrappers = []any{ - (*StartWebAuthnRegistrationResponse_Params)(nil), - (*StartWebAuthnRegistrationResponse_TooManyMfaKeys)(nil), } file_org_signal_chat_account_proto_msgTypes[55].OneofWrappers = []any{ - (*FinishWebAuthnRegistrationResponse_KeyConfirmed_)(nil), - (*FinishWebAuthnRegistrationResponse_KeyNotConfirmed)(nil), - (*FinishWebAuthnRegistrationResponse_TooManyMfaKeys)(nil), - } - file_org_signal_chat_account_proto_msgTypes[59].OneofWrappers = []any{ - (*SetMfaKeyMetadataResponse_Success)(nil), - (*SetMfaKeyMetadataResponse_KeyNotFound)(nil), - } - file_org_signal_chat_account_proto_msgTypes[63].OneofWrappers = []any{} - file_org_signal_chat_account_proto_msgTypes[64].OneofWrappers = []any{ - (*FinishMfaVerificationRequest_TotpPassword)(nil), - (*FinishMfaVerificationRequest_WebauthnAuthenticationResponseJson)(nil), + (*SetTotpKeyMetadataResponse_MetadataUpdated_)(nil), + (*SetTotpKeyMetadataResponse_KeyNotFound)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_account_proto_rawDesc), len(file_org_signal_chat_account_proto_rawDesc)), - NumEnums: 1, - NumMessages: 80, + NumEnums: 0, + NumMessages: 69, NumExtensions: 0, NumServices: 2, }, GoTypes: file_org_signal_chat_account_proto_goTypes, DependencyIndexes: file_org_signal_chat_account_proto_depIdxs, - EnumInfos: file_org_signal_chat_account_proto_enumTypes, MessageInfos: file_org_signal_chat_account_proto_msgTypes, }.Build() File_org_signal_chat_account_proto = out.File diff --git a/pkg/signalmeow/protobuf/rpc/account/account_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/account/account_grpc.pb.go index efea2b0..609e7d6 100644 --- a/pkg/signalmeow/protobuf/rpc/account/account_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/account/account_grpc.pb.go @@ -38,13 +38,9 @@ const ( Accounts_GetCapabilities_FullMethodName = "/org.signal.chat.account.Accounts/GetCapabilities" Accounts_GenerateTotpKey_FullMethodName = "/org.signal.chat.account.Accounts/GenerateTotpKey" Accounts_ConfirmTotpKey_FullMethodName = "/org.signal.chat.account.Accounts/ConfirmTotpKey" - Accounts_StartWebAuthnRegistration_FullMethodName = "/org.signal.chat.account.Accounts/StartWebAuthnRegistration" - Accounts_FinishWebAuthnRegistration_FullMethodName = "/org.signal.chat.account.Accounts/FinishWebAuthnRegistration" - Accounts_ListMfaKeys_FullMethodName = "/org.signal.chat.account.Accounts/ListMfaKeys" - Accounts_SetMfaKeyMetadata_FullMethodName = "/org.signal.chat.account.Accounts/SetMfaKeyMetadata" - Accounts_RemoveMfaKey_FullMethodName = "/org.signal.chat.account.Accounts/RemoveMfaKey" - Accounts_StartMfaVerification_FullMethodName = "/org.signal.chat.account.Accounts/StartMfaVerification" - Accounts_FinishMfaVerification_FullMethodName = "/org.signal.chat.account.Accounts/FinishMfaVerification" + Accounts_ListTotpKeys_FullMethodName = "/org.signal.chat.account.Accounts/ListTotpKeys" + Accounts_SetTotpKeyMetadata_FullMethodName = "/org.signal.chat.account.Accounts/SetTotpKeyMetadata" + Accounts_RemoveTotpKey_FullMethodName = "/org.signal.chat.account.Accounts/RemoveTotpKey" ) // AccountsClient is the client API for Accounts service. @@ -100,34 +96,18 @@ type AccountsClient interface { GetCapabilities(ctx context.Context, in *GetCapabilitiesRequest, opts ...grpc.CallOption) (*GetCapabilitiesResponse, error) // Generates and stores a pending TOTP key for the authenticated account. // To "activate" the key, callers must call the `ConfirmTotpKey` endpoint. - // - // TOTP keys may only be generated for accounts without phone numbers. GenerateTotpKey(ctx context.Context, in *GenerateTotpKeyRequest, opts ...grpc.CallOption) (*GenerateTotpKeyResponse, error) // Confirms that the caller has stored and can derive one-time passwords from // a pending TOTP key generated via `GenerateTotpKey` and stores/activates the // key for the caller's account - // - // TOTP keys may only be generated for accounts without phone numbers. ConfirmTotpKey(ctx context.Context, in *ConfirmTotpKeyRequest, opts ...grpc.CallOption) (*ConfirmTotpKeyResponse, error) - // Returns parameters for initiating a WebAuthn registration ceremony - // - // WebAuthn credentials may only be registered for accounts without phone numbers - StartWebAuthnRegistration(ctx context.Context, in *StartWebAuthnRegistrationRequest, opts ...grpc.CallOption) (*StartWebAuthnRegistrationResponse, error) - // Concludes a WebAuthn registration ceremony to add a passkey to the authenticated account - // - // WebAuthn credentials may only be registered for accounts without phone numbers - FinishWebAuthnRegistration(ctx context.Context, in *FinishWebAuthnRegistrationRequest, opts ...grpc.CallOption) (*FinishWebAuthnRegistrationResponse, error) - // Returns a list of confirmed MFA keys for the authenticated account - ListMfaKeys(ctx context.Context, in *ListMfaKeysRequest, opts ...grpc.CallOption) (*ListMfaKeysResponse, error) + // Returns a list of confirmed TOTP keys for the authenticated account + ListTotpKeys(ctx context.Context, in *ListTotpKeysRequest, opts ...grpc.CallOption) (*ListTotpKeysResponse, error) // Updates encrypted, user-supplied metadata (e.g. a human-readable name and - // creation timestamp) for an existing, confirmed MFA key - SetMfaKeyMetadata(ctx context.Context, in *SetMfaKeyMetadataRequest, opts ...grpc.CallOption) (*SetMfaKeyMetadataResponse, error) - // Removes an MFA key from the authenticated account - RemoveMfaKey(ctx context.Context, in *RemoveMfaKeyRequest, opts ...grpc.CallOption) (*RemoveMfaKeyResponse, error) - // Requests the parameters needed to verify with an MFA factor associated with this account. - StartMfaVerification(ctx context.Context, in *StartMfaVerificationRequest, opts ...grpc.CallOption) (*StartMfaVerificationResponse, error) - // Attemps to verify an MFA factor associated with this account. - FinishMfaVerification(ctx context.Context, in *FinishMfaVerificationRequest, opts ...grpc.CallOption) (*FinishMfaVerificationResponse, error) + // creation timestamp) for an existing, confirmed TOTP key + SetTotpKeyMetadata(ctx context.Context, in *SetTotpKeyMetadataRequest, opts ...grpc.CallOption) (*SetTotpKeyMetadataResponse, error) + // Removes a TOTP from the authenticated account + RemoveTotpKey(ctx context.Context, in *RemoveTotpKeyRequest, opts ...grpc.CallOption) (*RemoveTotpKeyResponse, error) } type accountsClient struct { @@ -328,70 +308,30 @@ func (c *accountsClient) ConfirmTotpKey(ctx context.Context, in *ConfirmTotpKeyR return out, nil } -func (c *accountsClient) StartWebAuthnRegistration(ctx context.Context, in *StartWebAuthnRegistrationRequest, opts ...grpc.CallOption) (*StartWebAuthnRegistrationResponse, error) { +func (c *accountsClient) ListTotpKeys(ctx context.Context, in *ListTotpKeysRequest, opts ...grpc.CallOption) (*ListTotpKeysResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StartWebAuthnRegistrationResponse) - err := c.cc.Invoke(ctx, Accounts_StartWebAuthnRegistration_FullMethodName, in, out, cOpts...) + out := new(ListTotpKeysResponse) + err := c.cc.Invoke(ctx, Accounts_ListTotpKeys_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *accountsClient) FinishWebAuthnRegistration(ctx context.Context, in *FinishWebAuthnRegistrationRequest, opts ...grpc.CallOption) (*FinishWebAuthnRegistrationResponse, error) { +func (c *accountsClient) SetTotpKeyMetadata(ctx context.Context, in *SetTotpKeyMetadataRequest, opts ...grpc.CallOption) (*SetTotpKeyMetadataResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(FinishWebAuthnRegistrationResponse) - err := c.cc.Invoke(ctx, Accounts_FinishWebAuthnRegistration_FullMethodName, in, out, cOpts...) + out := new(SetTotpKeyMetadataResponse) + err := c.cc.Invoke(ctx, Accounts_SetTotpKeyMetadata_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *accountsClient) ListMfaKeys(ctx context.Context, in *ListMfaKeysRequest, opts ...grpc.CallOption) (*ListMfaKeysResponse, error) { +func (c *accountsClient) RemoveTotpKey(ctx context.Context, in *RemoveTotpKeyRequest, opts ...grpc.CallOption) (*RemoveTotpKeyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ListMfaKeysResponse) - err := c.cc.Invoke(ctx, Accounts_ListMfaKeys_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsClient) SetMfaKeyMetadata(ctx context.Context, in *SetMfaKeyMetadataRequest, opts ...grpc.CallOption) (*SetMfaKeyMetadataResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SetMfaKeyMetadataResponse) - err := c.cc.Invoke(ctx, Accounts_SetMfaKeyMetadata_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsClient) RemoveMfaKey(ctx context.Context, in *RemoveMfaKeyRequest, opts ...grpc.CallOption) (*RemoveMfaKeyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(RemoveMfaKeyResponse) - err := c.cc.Invoke(ctx, Accounts_RemoveMfaKey_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsClient) StartMfaVerification(ctx context.Context, in *StartMfaVerificationRequest, opts ...grpc.CallOption) (*StartMfaVerificationResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StartMfaVerificationResponse) - err := c.cc.Invoke(ctx, Accounts_StartMfaVerification_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *accountsClient) FinishMfaVerification(ctx context.Context, in *FinishMfaVerificationRequest, opts ...grpc.CallOption) (*FinishMfaVerificationResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(FinishMfaVerificationResponse) - err := c.cc.Invoke(ctx, Accounts_FinishMfaVerification_FullMethodName, in, out, cOpts...) + out := new(RemoveTotpKeyResponse) + err := c.cc.Invoke(ctx, Accounts_RemoveTotpKey_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -451,34 +391,18 @@ type AccountsServer interface { GetCapabilities(context.Context, *GetCapabilitiesRequest) (*GetCapabilitiesResponse, error) // Generates and stores a pending TOTP key for the authenticated account. // To "activate" the key, callers must call the `ConfirmTotpKey` endpoint. - // - // TOTP keys may only be generated for accounts without phone numbers. GenerateTotpKey(context.Context, *GenerateTotpKeyRequest) (*GenerateTotpKeyResponse, error) // Confirms that the caller has stored and can derive one-time passwords from // a pending TOTP key generated via `GenerateTotpKey` and stores/activates the // key for the caller's account - // - // TOTP keys may only be generated for accounts without phone numbers. ConfirmTotpKey(context.Context, *ConfirmTotpKeyRequest) (*ConfirmTotpKeyResponse, error) - // Returns parameters for initiating a WebAuthn registration ceremony - // - // WebAuthn credentials may only be registered for accounts without phone numbers - StartWebAuthnRegistration(context.Context, *StartWebAuthnRegistrationRequest) (*StartWebAuthnRegistrationResponse, error) - // Concludes a WebAuthn registration ceremony to add a passkey to the authenticated account - // - // WebAuthn credentials may only be registered for accounts without phone numbers - FinishWebAuthnRegistration(context.Context, *FinishWebAuthnRegistrationRequest) (*FinishWebAuthnRegistrationResponse, error) - // Returns a list of confirmed MFA keys for the authenticated account - ListMfaKeys(context.Context, *ListMfaKeysRequest) (*ListMfaKeysResponse, error) + // Returns a list of confirmed TOTP keys for the authenticated account + ListTotpKeys(context.Context, *ListTotpKeysRequest) (*ListTotpKeysResponse, error) // Updates encrypted, user-supplied metadata (e.g. a human-readable name and - // creation timestamp) for an existing, confirmed MFA key - SetMfaKeyMetadata(context.Context, *SetMfaKeyMetadataRequest) (*SetMfaKeyMetadataResponse, error) - // Removes an MFA key from the authenticated account - RemoveMfaKey(context.Context, *RemoveMfaKeyRequest) (*RemoveMfaKeyResponse, error) - // Requests the parameters needed to verify with an MFA factor associated with this account. - StartMfaVerification(context.Context, *StartMfaVerificationRequest) (*StartMfaVerificationResponse, error) - // Attemps to verify an MFA factor associated with this account. - FinishMfaVerification(context.Context, *FinishMfaVerificationRequest) (*FinishMfaVerificationResponse, error) + // creation timestamp) for an existing, confirmed TOTP key + SetTotpKeyMetadata(context.Context, *SetTotpKeyMetadataRequest) (*SetTotpKeyMetadataResponse, error) + // Removes a TOTP from the authenticated account + RemoveTotpKey(context.Context, *RemoveTotpKeyRequest) (*RemoveTotpKeyResponse, error) mustEmbedUnimplementedAccountsServer() } @@ -546,26 +470,14 @@ func (UnimplementedAccountsServer) GenerateTotpKey(context.Context, *GenerateTot func (UnimplementedAccountsServer) ConfirmTotpKey(context.Context, *ConfirmTotpKeyRequest) (*ConfirmTotpKeyResponse, error) { return nil, status.Error(codes.Unimplemented, "method ConfirmTotpKey not implemented") } -func (UnimplementedAccountsServer) StartWebAuthnRegistration(context.Context, *StartWebAuthnRegistrationRequest) (*StartWebAuthnRegistrationResponse, error) { - return nil, status.Error(codes.Unimplemented, "method StartWebAuthnRegistration not implemented") +func (UnimplementedAccountsServer) ListTotpKeys(context.Context, *ListTotpKeysRequest) (*ListTotpKeysResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ListTotpKeys not implemented") } -func (UnimplementedAccountsServer) FinishWebAuthnRegistration(context.Context, *FinishWebAuthnRegistrationRequest) (*FinishWebAuthnRegistrationResponse, error) { - return nil, status.Error(codes.Unimplemented, "method FinishWebAuthnRegistration not implemented") +func (UnimplementedAccountsServer) SetTotpKeyMetadata(context.Context, *SetTotpKeyMetadataRequest) (*SetTotpKeyMetadataResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SetTotpKeyMetadata not implemented") } -func (UnimplementedAccountsServer) ListMfaKeys(context.Context, *ListMfaKeysRequest) (*ListMfaKeysResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ListMfaKeys not implemented") -} -func (UnimplementedAccountsServer) SetMfaKeyMetadata(context.Context, *SetMfaKeyMetadataRequest) (*SetMfaKeyMetadataResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SetMfaKeyMetadata not implemented") -} -func (UnimplementedAccountsServer) RemoveMfaKey(context.Context, *RemoveMfaKeyRequest) (*RemoveMfaKeyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method RemoveMfaKey not implemented") -} -func (UnimplementedAccountsServer) StartMfaVerification(context.Context, *StartMfaVerificationRequest) (*StartMfaVerificationResponse, error) { - return nil, status.Error(codes.Unimplemented, "method StartMfaVerification not implemented") -} -func (UnimplementedAccountsServer) FinishMfaVerification(context.Context, *FinishMfaVerificationRequest) (*FinishMfaVerificationResponse, error) { - return nil, status.Error(codes.Unimplemented, "method FinishMfaVerification not implemented") +func (UnimplementedAccountsServer) RemoveTotpKey(context.Context, *RemoveTotpKeyRequest) (*RemoveTotpKeyResponse, error) { + return nil, status.Error(codes.Unimplemented, "method RemoveTotpKey not implemented") } func (UnimplementedAccountsServer) mustEmbedUnimplementedAccountsServer() {} func (UnimplementedAccountsServer) testEmbeddedByValue() {} @@ -930,128 +842,56 @@ func _Accounts_ConfirmTotpKey_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _Accounts_StartWebAuthnRegistration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartWebAuthnRegistrationRequest) +func _Accounts_ListTotpKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTotpKeysRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AccountsServer).StartWebAuthnRegistration(ctx, in) + return srv.(AccountsServer).ListTotpKeys(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Accounts_StartWebAuthnRegistration_FullMethodName, + FullMethod: Accounts_ListTotpKeys_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).StartWebAuthnRegistration(ctx, req.(*StartWebAuthnRegistrationRequest)) + return srv.(AccountsServer).ListTotpKeys(ctx, req.(*ListTotpKeysRequest)) } return interceptor(ctx, in, info, handler) } -func _Accounts_FinishWebAuthnRegistration_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FinishWebAuthnRegistrationRequest) +func _Accounts_SetTotpKeyMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetTotpKeyMetadataRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AccountsServer).FinishWebAuthnRegistration(ctx, in) + return srv.(AccountsServer).SetTotpKeyMetadata(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Accounts_FinishWebAuthnRegistration_FullMethodName, + FullMethod: Accounts_SetTotpKeyMetadata_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).FinishWebAuthnRegistration(ctx, req.(*FinishWebAuthnRegistrationRequest)) + return srv.(AccountsServer).SetTotpKeyMetadata(ctx, req.(*SetTotpKeyMetadataRequest)) } return interceptor(ctx, in, info, handler) } -func _Accounts_ListMfaKeys_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListMfaKeysRequest) +func _Accounts_RemoveTotpKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveTotpKeyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AccountsServer).ListMfaKeys(ctx, in) + return srv.(AccountsServer).RemoveTotpKey(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Accounts_ListMfaKeys_FullMethodName, + FullMethod: Accounts_RemoveTotpKey_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).ListMfaKeys(ctx, req.(*ListMfaKeysRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Accounts_SetMfaKeyMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetMfaKeyMetadataRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AccountsServer).SetMfaKeyMetadata(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Accounts_SetMfaKeyMetadata_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).SetMfaKeyMetadata(ctx, req.(*SetMfaKeyMetadataRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Accounts_RemoveMfaKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveMfaKeyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AccountsServer).RemoveMfaKey(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Accounts_RemoveMfaKey_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).RemoveMfaKey(ctx, req.(*RemoveMfaKeyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Accounts_StartMfaVerification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartMfaVerificationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AccountsServer).StartMfaVerification(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Accounts_StartMfaVerification_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).StartMfaVerification(ctx, req.(*StartMfaVerificationRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Accounts_FinishMfaVerification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(FinishMfaVerificationRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(AccountsServer).FinishMfaVerification(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Accounts_FinishMfaVerification_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AccountsServer).FinishMfaVerification(ctx, req.(*FinishMfaVerificationRequest)) + return srv.(AccountsServer).RemoveTotpKey(ctx, req.(*RemoveTotpKeyRequest)) } return interceptor(ctx, in, info, handler) } @@ -1140,32 +980,16 @@ var Accounts_ServiceDesc = grpc.ServiceDesc{ Handler: _Accounts_ConfirmTotpKey_Handler, }, { - MethodName: "StartWebAuthnRegistration", - Handler: _Accounts_StartWebAuthnRegistration_Handler, + MethodName: "ListTotpKeys", + Handler: _Accounts_ListTotpKeys_Handler, }, { - MethodName: "FinishWebAuthnRegistration", - Handler: _Accounts_FinishWebAuthnRegistration_Handler, + MethodName: "SetTotpKeyMetadata", + Handler: _Accounts_SetTotpKeyMetadata_Handler, }, { - MethodName: "ListMfaKeys", - Handler: _Accounts_ListMfaKeys_Handler, - }, - { - MethodName: "SetMfaKeyMetadata", - Handler: _Accounts_SetMfaKeyMetadata_Handler, - }, - { - MethodName: "RemoveMfaKey", - Handler: _Accounts_RemoveMfaKey_Handler, - }, - { - MethodName: "StartMfaVerification", - Handler: _Accounts_StartMfaVerification_Handler, - }, - { - MethodName: "FinishMfaVerification", - Handler: _Accounts_FinishMfaVerification_Handler, + MethodName: "RemoveTotpKey", + Handler: _Accounts_RemoveTotpKey_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/pkg/signalmeow/protobuf/rpc/backups/backups.pb.go b/pkg/signalmeow/protobuf/rpc/backups/backups.pb.go index e65b019..91a3fc7 100644 --- a/pkg/signalmeow/protobuf/rpc/backups/backups.pb.go +++ b/pkg/signalmeow/protobuf/rpc/backups/backups.pb.go @@ -375,60 +375,6 @@ func (x *GetBackupAuthCredentialsResponse) GetCredentials() *GetBackupAuthCreden return nil } -type GetBackupIdLimitsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // If true, a call to SetBackupId may succeed without waiting - HasPermitsRemaining bool `protobuf:"varint,1,opt,name=hasPermitsRemaining,proto3" json:"hasPermitsRemaining,omitempty"` - // How long to wait before a permit becomes available, in seconds - RetryAfterSeconds uint64 `protobuf:"varint,2,opt,name=retryAfterSeconds,proto3" json:"retryAfterSeconds,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetBackupIdLimitsResponse) Reset() { - *x = GetBackupIdLimitsResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetBackupIdLimitsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBackupIdLimitsResponse) ProtoMessage() {} - -func (x *GetBackupIdLimitsResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[6] - 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 GetBackupIdLimitsResponse.ProtoReflect.Descriptor instead. -func (*GetBackupIdLimitsResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{6} -} - -func (x *GetBackupIdLimitsResponse) GetHasPermitsRemaining() bool { - if x != nil { - return x.HasPermitsRemaining - } - return false -} - -func (x *GetBackupIdLimitsResponse) GetRetryAfterSeconds() uint64 { - if x != nil { - return x.RetryAfterSeconds - } - return 0 -} - type SignedPresentation struct { state protoimpl.MessageState `protogen:"open.v1"` // Presentation of a BackupAuthCredential previously retrieved from @@ -443,7 +389,7 @@ type SignedPresentation struct { func (x *SignedPresentation) Reset() { *x = SignedPresentation{} - mi := &file_org_signal_chat_backups_proto_msgTypes[7] + mi := &file_org_signal_chat_backups_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -455,7 +401,7 @@ func (x *SignedPresentation) String() string { func (*SignedPresentation) ProtoMessage() {} func (x *SignedPresentation) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[7] + mi := &file_org_signal_chat_backups_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -468,7 +414,7 @@ func (x *SignedPresentation) ProtoReflect() protoreflect.Message { // Deprecated: Use SignedPresentation.ProtoReflect.Descriptor instead. func (*SignedPresentation) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{7} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{6} } func (x *SignedPresentation) GetPresentation() []byte { @@ -496,7 +442,7 @@ type SetPublicKeyRequest struct { func (x *SetPublicKeyRequest) Reset() { *x = SetPublicKeyRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[8] + mi := &file_org_signal_chat_backups_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -508,7 +454,7 @@ func (x *SetPublicKeyRequest) String() string { func (*SetPublicKeyRequest) ProtoMessage() {} func (x *SetPublicKeyRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[8] + mi := &file_org_signal_chat_backups_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -521,7 +467,7 @@ func (x *SetPublicKeyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPublicKeyRequest.ProtoReflect.Descriptor instead. func (*SetPublicKeyRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{8} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{7} } func (x *SetPublicKeyRequest) GetSignedPresentation() *SignedPresentation { @@ -551,7 +497,7 @@ type SetPublicKeyResponse struct { func (x *SetPublicKeyResponse) Reset() { *x = SetPublicKeyResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[9] + mi := &file_org_signal_chat_backups_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -563,7 +509,7 @@ func (x *SetPublicKeyResponse) String() string { func (*SetPublicKeyResponse) ProtoMessage() {} func (x *SetPublicKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[9] + mi := &file_org_signal_chat_backups_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -576,7 +522,7 @@ func (x *SetPublicKeyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPublicKeyResponse.ProtoReflect.Descriptor instead. func (*SetPublicKeyResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{9} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{8} } func (x *SetPublicKeyResponse) GetResponse() isSetPublicKeyResponse_Response { @@ -638,7 +584,7 @@ type GetCdnCredentialsRequest struct { func (x *GetCdnCredentialsRequest) Reset() { *x = GetCdnCredentialsRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[10] + mi := &file_org_signal_chat_backups_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -650,7 +596,7 @@ func (x *GetCdnCredentialsRequest) String() string { func (*GetCdnCredentialsRequest) ProtoMessage() {} func (x *GetCdnCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[10] + mi := &file_org_signal_chat_backups_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -663,7 +609,7 @@ func (x *GetCdnCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCdnCredentialsRequest.ProtoReflect.Descriptor instead. func (*GetCdnCredentialsRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{10} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{9} } func (x *GetCdnCredentialsRequest) GetSignedPresentation() *SignedPresentation { @@ -693,7 +639,7 @@ type GetCdnCredentialsResponse struct { func (x *GetCdnCredentialsResponse) Reset() { *x = GetCdnCredentialsResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[11] + mi := &file_org_signal_chat_backups_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -705,7 +651,7 @@ func (x *GetCdnCredentialsResponse) String() string { func (*GetCdnCredentialsResponse) ProtoMessage() {} func (x *GetCdnCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[11] + mi := &file_org_signal_chat_backups_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -718,7 +664,7 @@ func (x *GetCdnCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCdnCredentialsResponse.ProtoReflect.Descriptor instead. func (*GetCdnCredentialsResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{11} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{10} } func (x *GetCdnCredentialsResponse) GetResponse() isGetCdnCredentialsResponse_Response { @@ -777,7 +723,7 @@ type GetSvrBCredentialsRequest struct { func (x *GetSvrBCredentialsRequest) Reset() { *x = GetSvrBCredentialsRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[12] + mi := &file_org_signal_chat_backups_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -789,7 +735,7 @@ func (x *GetSvrBCredentialsRequest) String() string { func (*GetSvrBCredentialsRequest) ProtoMessage() {} func (x *GetSvrBCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[12] + mi := &file_org_signal_chat_backups_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -802,7 +748,7 @@ func (x *GetSvrBCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSvrBCredentialsRequest.ProtoReflect.Descriptor instead. func (*GetSvrBCredentialsRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{12} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{11} } func (x *GetSvrBCredentialsRequest) GetSignedPresentation() *SignedPresentation { @@ -825,7 +771,7 @@ type GetSvrBCredentialsResponse struct { func (x *GetSvrBCredentialsResponse) Reset() { *x = GetSvrBCredentialsResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[13] + mi := &file_org_signal_chat_backups_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -837,7 +783,7 @@ func (x *GetSvrBCredentialsResponse) String() string { func (*GetSvrBCredentialsResponse) ProtoMessage() {} func (x *GetSvrBCredentialsResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[13] + mi := &file_org_signal_chat_backups_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -850,7 +796,7 @@ func (x *GetSvrBCredentialsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSvrBCredentialsResponse.ProtoReflect.Descriptor instead. func (*GetSvrBCredentialsResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{13} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{12} } func (x *GetSvrBCredentialsResponse) GetResponse() isGetSvrBCredentialsResponse_Response { @@ -907,7 +853,7 @@ type GetBackupInfoRequest struct { func (x *GetBackupInfoRequest) Reset() { *x = GetBackupInfoRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[14] + mi := &file_org_signal_chat_backups_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +865,7 @@ func (x *GetBackupInfoRequest) String() string { func (*GetBackupInfoRequest) ProtoMessage() {} func (x *GetBackupInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[14] + mi := &file_org_signal_chat_backups_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +878,7 @@ func (x *GetBackupInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBackupInfoRequest.ProtoReflect.Descriptor instead. func (*GetBackupInfoRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{14} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{13} } func (x *GetBackupInfoRequest) GetSignedPresentation() *SignedPresentation { @@ -955,7 +901,7 @@ type GetMessageBackupInfoResponse struct { func (x *GetMessageBackupInfoResponse) Reset() { *x = GetMessageBackupInfoResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[15] + mi := &file_org_signal_chat_backups_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -967,7 +913,7 @@ func (x *GetMessageBackupInfoResponse) String() string { func (*GetMessageBackupInfoResponse) ProtoMessage() {} func (x *GetMessageBackupInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[15] + mi := &file_org_signal_chat_backups_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -980,7 +926,7 @@ func (x *GetMessageBackupInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMessageBackupInfoResponse.ProtoReflect.Descriptor instead. func (*GetMessageBackupInfoResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{15} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{14} } func (x *GetMessageBackupInfoResponse) GetResponse() isGetMessageBackupInfoResponse_Response { @@ -1041,7 +987,7 @@ type GetMediaBackupInfoResponse struct { func (x *GetMediaBackupInfoResponse) Reset() { *x = GetMediaBackupInfoResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[16] + mi := &file_org_signal_chat_backups_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1053,7 +999,7 @@ func (x *GetMediaBackupInfoResponse) String() string { func (*GetMediaBackupInfoResponse) ProtoMessage() {} func (x *GetMediaBackupInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[16] + mi := &file_org_signal_chat_backups_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1066,7 +1012,7 @@ func (x *GetMediaBackupInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMediaBackupInfoResponse.ProtoReflect.Descriptor instead. func (*GetMediaBackupInfoResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{16} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{15} } func (x *GetMediaBackupInfoResponse) GetResponse() isGetMediaBackupInfoResponse_Response { @@ -1123,7 +1069,7 @@ type RefreshRequest struct { func (x *RefreshRequest) Reset() { *x = RefreshRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[17] + mi := &file_org_signal_chat_backups_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1135,7 +1081,7 @@ func (x *RefreshRequest) String() string { func (*RefreshRequest) ProtoMessage() {} func (x *RefreshRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[17] + mi := &file_org_signal_chat_backups_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1148,7 +1094,7 @@ func (x *RefreshRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshRequest.ProtoReflect.Descriptor instead. func (*RefreshRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{17} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{16} } func (x *RefreshRequest) GetSignedPresentation() *SignedPresentation { @@ -1171,7 +1117,7 @@ type RefreshResponse struct { func (x *RefreshResponse) Reset() { *x = RefreshResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[18] + mi := &file_org_signal_chat_backups_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1183,7 +1129,7 @@ func (x *RefreshResponse) String() string { func (*RefreshResponse) ProtoMessage() {} func (x *RefreshResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[18] + mi := &file_org_signal_chat_backups_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1196,7 +1142,7 @@ func (x *RefreshResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RefreshResponse.ProtoReflect.Descriptor instead. func (*RefreshResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{18} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{17} } func (x *RefreshResponse) GetResponse() isRefreshResponse_Response { @@ -1262,7 +1208,7 @@ type GetUploadFormRequest struct { func (x *GetUploadFormRequest) Reset() { *x = GetUploadFormRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[19] + mi := &file_org_signal_chat_backups_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1274,7 +1220,7 @@ func (x *GetUploadFormRequest) String() string { func (*GetUploadFormRequest) ProtoMessage() {} func (x *GetUploadFormRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[19] + mi := &file_org_signal_chat_backups_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1287,7 +1233,7 @@ func (x *GetUploadFormRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUploadFormRequest.ProtoReflect.Descriptor instead. func (*GetUploadFormRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{19} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{18} } func (x *GetUploadFormRequest) GetSignedPresentation() *SignedPresentation { @@ -1366,7 +1312,7 @@ type GetUploadFormResponse struct { func (x *GetUploadFormResponse) Reset() { *x = GetUploadFormResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[20] + mi := &file_org_signal_chat_backups_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1378,7 +1324,7 @@ func (x *GetUploadFormResponse) String() string { func (*GetUploadFormResponse) ProtoMessage() {} func (x *GetUploadFormResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[20] + mi := &file_org_signal_chat_backups_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1391,7 +1337,7 @@ func (x *GetUploadFormResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUploadFormResponse.ProtoReflect.Descriptor instead. func (*GetUploadFormResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{20} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{19} } func (x *GetUploadFormResponse) GetResponse() isGetUploadFormResponse_Response { @@ -1478,7 +1424,7 @@ type CopyMediaItem struct { func (x *CopyMediaItem) Reset() { *x = CopyMediaItem{} - mi := &file_org_signal_chat_backups_proto_msgTypes[21] + mi := &file_org_signal_chat_backups_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1490,7 +1436,7 @@ func (x *CopyMediaItem) String() string { func (*CopyMediaItem) ProtoMessage() {} func (x *CopyMediaItem) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[21] + mi := &file_org_signal_chat_backups_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1503,7 +1449,7 @@ func (x *CopyMediaItem) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaItem.ProtoReflect.Descriptor instead. func (*CopyMediaItem) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{21} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{20} } func (x *CopyMediaItem) GetSourceAttachmentCdn() uint32 { @@ -1559,7 +1505,7 @@ type CopyMediaRequest struct { func (x *CopyMediaRequest) Reset() { *x = CopyMediaRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[22] + mi := &file_org_signal_chat_backups_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1571,7 +1517,7 @@ func (x *CopyMediaRequest) String() string { func (*CopyMediaRequest) ProtoMessage() {} func (x *CopyMediaRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[22] + mi := &file_org_signal_chat_backups_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1584,7 +1530,7 @@ func (x *CopyMediaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaRequest.ProtoReflect.Descriptor instead. func (*CopyMediaRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{21} } func (x *CopyMediaRequest) GetSignedPresentation() *SignedPresentation { @@ -1618,7 +1564,7 @@ type CopyMediaResponse struct { func (x *CopyMediaResponse) Reset() { *x = CopyMediaResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[23] + mi := &file_org_signal_chat_backups_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1630,7 +1576,7 @@ func (x *CopyMediaResponse) String() string { func (*CopyMediaResponse) ProtoMessage() {} func (x *CopyMediaResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[23] + mi := &file_org_signal_chat_backups_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1643,7 +1589,7 @@ func (x *CopyMediaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaResponse.ProtoReflect.Descriptor instead. func (*CopyMediaResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22} } func (x *CopyMediaResponse) GetMediaId() []byte { @@ -1741,7 +1687,7 @@ type BackupStreamClosed struct { func (x *BackupStreamClosed) Reset() { *x = BackupStreamClosed{} - mi := &file_org_signal_chat_backups_proto_msgTypes[24] + mi := &file_org_signal_chat_backups_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1753,7 +1699,7 @@ func (x *BackupStreamClosed) String() string { func (*BackupStreamClosed) ProtoMessage() {} func (x *BackupStreamClosed) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[24] + mi := &file_org_signal_chat_backups_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1766,7 +1712,7 @@ func (x *BackupStreamClosed) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupStreamClosed.ProtoReflect.Descriptor instead. func (*BackupStreamClosed) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{24} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23} } func (x *BackupStreamClosed) GetReason() isBackupStreamClosed_Reason { @@ -1813,7 +1759,7 @@ type ListMediaRequest struct { func (x *ListMediaRequest) Reset() { *x = ListMediaRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[25] + mi := &file_org_signal_chat_backups_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +1771,7 @@ func (x *ListMediaRequest) String() string { func (*ListMediaRequest) ProtoMessage() {} func (x *ListMediaRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[25] + mi := &file_org_signal_chat_backups_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1784,7 @@ func (x *ListMediaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMediaRequest.ProtoReflect.Descriptor instead. func (*ListMediaRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{25} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{24} } func (x *ListMediaRequest) GetSignedPresentation() *SignedPresentation { @@ -1875,7 +1821,7 @@ type ListMediaResponse struct { func (x *ListMediaResponse) Reset() { *x = ListMediaResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[26] + mi := &file_org_signal_chat_backups_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +1833,7 @@ func (x *ListMediaResponse) String() string { func (*ListMediaResponse) ProtoMessage() {} func (x *ListMediaResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[26] + mi := &file_org_signal_chat_backups_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +1846,7 @@ func (x *ListMediaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMediaResponse.ProtoReflect.Descriptor instead. func (*ListMediaResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{26} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{25} } func (x *ListMediaResponse) GetResponse() isListMediaResponse_Response { @@ -1957,7 +1903,7 @@ type DeleteAllRequest struct { func (x *DeleteAllRequest) Reset() { *x = DeleteAllRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[27] + mi := &file_org_signal_chat_backups_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1969,7 +1915,7 @@ func (x *DeleteAllRequest) String() string { func (*DeleteAllRequest) ProtoMessage() {} func (x *DeleteAllRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[27] + mi := &file_org_signal_chat_backups_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1982,7 +1928,7 @@ func (x *DeleteAllRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAllRequest.ProtoReflect.Descriptor instead. func (*DeleteAllRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{27} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{26} } func (x *DeleteAllRequest) GetSignedPresentation() *SignedPresentation { @@ -2005,7 +1951,7 @@ type DeleteAllResponse struct { func (x *DeleteAllResponse) Reset() { *x = DeleteAllResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[28] + mi := &file_org_signal_chat_backups_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2017,7 +1963,7 @@ func (x *DeleteAllResponse) String() string { func (*DeleteAllResponse) ProtoMessage() {} func (x *DeleteAllResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[28] + mi := &file_org_signal_chat_backups_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2030,7 +1976,7 @@ func (x *DeleteAllResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAllResponse.ProtoReflect.Descriptor instead. func (*DeleteAllResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{28} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{27} } func (x *DeleteAllResponse) GetResponse() isDeleteAllResponse_Response { @@ -2091,7 +2037,7 @@ type DeleteMediaItem struct { func (x *DeleteMediaItem) Reset() { *x = DeleteMediaItem{} - mi := &file_org_signal_chat_backups_proto_msgTypes[29] + mi := &file_org_signal_chat_backups_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2103,7 +2049,7 @@ func (x *DeleteMediaItem) String() string { func (*DeleteMediaItem) ProtoMessage() {} func (x *DeleteMediaItem) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[29] + mi := &file_org_signal_chat_backups_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2116,7 +2062,7 @@ func (x *DeleteMediaItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMediaItem.ProtoReflect.Descriptor instead. func (*DeleteMediaItem) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{29} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{28} } func (x *DeleteMediaItem) GetCdn() uint32 { @@ -2143,7 +2089,7 @@ type DeleteMediaRequest struct { func (x *DeleteMediaRequest) Reset() { *x = DeleteMediaRequest{} - mi := &file_org_signal_chat_backups_proto_msgTypes[30] + mi := &file_org_signal_chat_backups_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2155,7 +2101,7 @@ func (x *DeleteMediaRequest) String() string { func (*DeleteMediaRequest) ProtoMessage() {} func (x *DeleteMediaRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[30] + mi := &file_org_signal_chat_backups_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2168,7 +2114,7 @@ func (x *DeleteMediaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMediaRequest.ProtoReflect.Descriptor instead. func (*DeleteMediaRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{30} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{29} } func (x *DeleteMediaRequest) GetSignedPresentation() *SignedPresentation { @@ -2194,7 +2140,7 @@ type DeleteMediaResponse struct { func (x *DeleteMediaResponse) Reset() { *x = DeleteMediaResponse{} - mi := &file_org_signal_chat_backups_proto_msgTypes[31] + mi := &file_org_signal_chat_backups_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2206,7 +2152,7 @@ func (x *DeleteMediaResponse) String() string { func (*DeleteMediaResponse) ProtoMessage() {} func (x *DeleteMediaResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[31] + mi := &file_org_signal_chat_backups_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2219,7 +2165,7 @@ func (x *DeleteMediaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteMediaResponse.ProtoReflect.Descriptor instead. func (*DeleteMediaResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{31} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{30} } func (x *DeleteMediaResponse) GetDeletedItem() *DeleteMediaItem { @@ -2245,7 +2191,7 @@ type GetBackupAuthCredentialsResponse_Credentials struct { func (x *GetBackupAuthCredentialsResponse_Credentials) Reset() { *x = GetBackupAuthCredentialsResponse_Credentials{} - mi := &file_org_signal_chat_backups_proto_msgTypes[32] + mi := &file_org_signal_chat_backups_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2257,7 +2203,7 @@ func (x *GetBackupAuthCredentialsResponse_Credentials) String() string { func (*GetBackupAuthCredentialsResponse_Credentials) ProtoMessage() {} func (x *GetBackupAuthCredentialsResponse_Credentials) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[32] + mi := &file_org_signal_chat_backups_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2296,7 +2242,7 @@ type GetCdnCredentialsResponse_CdnCredentials struct { func (x *GetCdnCredentialsResponse_CdnCredentials) Reset() { *x = GetCdnCredentialsResponse_CdnCredentials{} - mi := &file_org_signal_chat_backups_proto_msgTypes[35] + mi := &file_org_signal_chat_backups_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2308,7 +2254,7 @@ func (x *GetCdnCredentialsResponse_CdnCredentials) String() string { func (*GetCdnCredentialsResponse_CdnCredentials) ProtoMessage() {} func (x *GetCdnCredentialsResponse_CdnCredentials) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[35] + mi := &file_org_signal_chat_backups_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2321,7 +2267,7 @@ func (x *GetCdnCredentialsResponse_CdnCredentials) ProtoReflect() protoreflect.M // Deprecated: Use GetCdnCredentialsResponse_CdnCredentials.ProtoReflect.Descriptor instead. func (*GetCdnCredentialsResponse_CdnCredentials) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{11, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{10, 0} } func (x *GetCdnCredentialsResponse_CdnCredentials) GetHeaders() map[string]string { @@ -2343,7 +2289,7 @@ type GetSvrBCredentialsResponse_SvrBCredentials struct { func (x *GetSvrBCredentialsResponse_SvrBCredentials) Reset() { *x = GetSvrBCredentialsResponse_SvrBCredentials{} - mi := &file_org_signal_chat_backups_proto_msgTypes[37] + mi := &file_org_signal_chat_backups_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2355,7 +2301,7 @@ func (x *GetSvrBCredentialsResponse_SvrBCredentials) String() string { func (*GetSvrBCredentialsResponse_SvrBCredentials) ProtoMessage() {} func (x *GetSvrBCredentialsResponse_SvrBCredentials) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[37] + mi := &file_org_signal_chat_backups_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2368,7 +2314,7 @@ func (x *GetSvrBCredentialsResponse_SvrBCredentials) ProtoReflect() protoreflect // Deprecated: Use GetSvrBCredentialsResponse_SvrBCredentials.ProtoReflect.Descriptor instead. func (*GetSvrBCredentialsResponse_SvrBCredentials) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{13, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{12, 0} } func (x *GetSvrBCredentialsResponse_SvrBCredentials) GetUsername() string { @@ -2406,7 +2352,7 @@ type GetMessageBackupInfoResponse_MessageBackupInfo struct { func (x *GetMessageBackupInfoResponse_MessageBackupInfo) Reset() { *x = GetMessageBackupInfoResponse_MessageBackupInfo{} - mi := &file_org_signal_chat_backups_proto_msgTypes[38] + mi := &file_org_signal_chat_backups_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2418,7 +2364,7 @@ func (x *GetMessageBackupInfoResponse_MessageBackupInfo) String() string { func (*GetMessageBackupInfoResponse_MessageBackupInfo) ProtoMessage() {} func (x *GetMessageBackupInfoResponse_MessageBackupInfo) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[38] + mi := &file_org_signal_chat_backups_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2431,7 +2377,7 @@ func (x *GetMessageBackupInfoResponse_MessageBackupInfo) ProtoReflect() protoref // Deprecated: Use GetMessageBackupInfoResponse_MessageBackupInfo.ProtoReflect.Descriptor instead. func (*GetMessageBackupInfoResponse_MessageBackupInfo) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{15, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{14, 0} } func (x *GetMessageBackupInfoResponse_MessageBackupInfo) GetBackupDir() string { @@ -2475,7 +2421,7 @@ type GetMediaBackupInfoResponse_MediaBackupInfo struct { func (x *GetMediaBackupInfoResponse_MediaBackupInfo) Reset() { *x = GetMediaBackupInfoResponse_MediaBackupInfo{} - mi := &file_org_signal_chat_backups_proto_msgTypes[39] + mi := &file_org_signal_chat_backups_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2487,7 +2433,7 @@ func (x *GetMediaBackupInfoResponse_MediaBackupInfo) String() string { func (*GetMediaBackupInfoResponse_MediaBackupInfo) ProtoMessage() {} func (x *GetMediaBackupInfoResponse_MediaBackupInfo) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[39] + mi := &file_org_signal_chat_backups_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2500,7 +2446,7 @@ func (x *GetMediaBackupInfoResponse_MediaBackupInfo) ProtoReflect() protoreflect // Deprecated: Use GetMediaBackupInfoResponse_MediaBackupInfo.ProtoReflect.Descriptor instead. func (*GetMediaBackupInfoResponse_MediaBackupInfo) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{16, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{15, 0} } func (x *GetMediaBackupInfoResponse_MediaBackupInfo) GetBackupDir() string { @@ -2532,7 +2478,7 @@ type GetUploadFormRequest_MessagesUploadType struct { func (x *GetUploadFormRequest_MessagesUploadType) Reset() { *x = GetUploadFormRequest_MessagesUploadType{} - mi := &file_org_signal_chat_backups_proto_msgTypes[40] + mi := &file_org_signal_chat_backups_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2544,7 +2490,7 @@ func (x *GetUploadFormRequest_MessagesUploadType) String() string { func (*GetUploadFormRequest_MessagesUploadType) ProtoMessage() {} func (x *GetUploadFormRequest_MessagesUploadType) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[40] + mi := &file_org_signal_chat_backups_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2557,7 +2503,7 @@ func (x *GetUploadFormRequest_MessagesUploadType) ProtoReflect() protoreflect.Me // Deprecated: Use GetUploadFormRequest_MessagesUploadType.ProtoReflect.Descriptor instead. func (*GetUploadFormRequest_MessagesUploadType) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{19, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{18, 0} } type GetUploadFormRequest_MediaUploadType struct { @@ -2568,7 +2514,7 @@ type GetUploadFormRequest_MediaUploadType struct { func (x *GetUploadFormRequest_MediaUploadType) Reset() { *x = GetUploadFormRequest_MediaUploadType{} - mi := &file_org_signal_chat_backups_proto_msgTypes[41] + mi := &file_org_signal_chat_backups_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2580,7 +2526,7 @@ func (x *GetUploadFormRequest_MediaUploadType) String() string { func (*GetUploadFormRequest_MediaUploadType) ProtoMessage() {} func (x *GetUploadFormRequest_MediaUploadType) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[41] + mi := &file_org_signal_chat_backups_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2593,7 +2539,7 @@ func (x *GetUploadFormRequest_MediaUploadType) ProtoReflect() protoreflect.Messa // Deprecated: Use GetUploadFormRequest_MediaUploadType.ProtoReflect.Descriptor instead. func (*GetUploadFormRequest_MediaUploadType) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{19, 1} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{18, 1} } type CopyMediaResponse_SourceNotFound struct { @@ -2604,7 +2550,7 @@ type CopyMediaResponse_SourceNotFound struct { func (x *CopyMediaResponse_SourceNotFound) Reset() { *x = CopyMediaResponse_SourceNotFound{} - mi := &file_org_signal_chat_backups_proto_msgTypes[42] + mi := &file_org_signal_chat_backups_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2616,7 +2562,7 @@ func (x *CopyMediaResponse_SourceNotFound) String() string { func (*CopyMediaResponse_SourceNotFound) ProtoMessage() {} func (x *CopyMediaResponse_SourceNotFound) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[42] + mi := &file_org_signal_chat_backups_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2629,7 +2575,7 @@ func (x *CopyMediaResponse_SourceNotFound) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaResponse_SourceNotFound.ProtoReflect.Descriptor instead. func (*CopyMediaResponse_SourceNotFound) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22, 0} } type CopyMediaResponse_WrongSourceLength struct { @@ -2640,7 +2586,7 @@ type CopyMediaResponse_WrongSourceLength struct { func (x *CopyMediaResponse_WrongSourceLength) Reset() { *x = CopyMediaResponse_WrongSourceLength{} - mi := &file_org_signal_chat_backups_proto_msgTypes[43] + mi := &file_org_signal_chat_backups_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2652,7 +2598,7 @@ func (x *CopyMediaResponse_WrongSourceLength) String() string { func (*CopyMediaResponse_WrongSourceLength) ProtoMessage() {} func (x *CopyMediaResponse_WrongSourceLength) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[43] + mi := &file_org_signal_chat_backups_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2665,7 +2611,7 @@ func (x *CopyMediaResponse_WrongSourceLength) ProtoReflect() protoreflect.Messag // Deprecated: Use CopyMediaResponse_WrongSourceLength.ProtoReflect.Descriptor instead. func (*CopyMediaResponse_WrongSourceLength) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23, 1} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22, 1} } type CopyMediaResponse_OutOfSpace struct { @@ -2676,7 +2622,7 @@ type CopyMediaResponse_OutOfSpace struct { func (x *CopyMediaResponse_OutOfSpace) Reset() { *x = CopyMediaResponse_OutOfSpace{} - mi := &file_org_signal_chat_backups_proto_msgTypes[44] + mi := &file_org_signal_chat_backups_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2688,7 +2634,7 @@ func (x *CopyMediaResponse_OutOfSpace) String() string { func (*CopyMediaResponse_OutOfSpace) ProtoMessage() {} func (x *CopyMediaResponse_OutOfSpace) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[44] + mi := &file_org_signal_chat_backups_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2701,7 +2647,7 @@ func (x *CopyMediaResponse_OutOfSpace) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaResponse_OutOfSpace.ProtoReflect.Descriptor instead. func (*CopyMediaResponse_OutOfSpace) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23, 2} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22, 2} } type CopyMediaResponse_CopySuccess struct { @@ -2714,7 +2660,7 @@ type CopyMediaResponse_CopySuccess struct { func (x *CopyMediaResponse_CopySuccess) Reset() { *x = CopyMediaResponse_CopySuccess{} - mi := &file_org_signal_chat_backups_proto_msgTypes[45] + mi := &file_org_signal_chat_backups_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2726,7 +2672,7 @@ func (x *CopyMediaResponse_CopySuccess) String() string { func (*CopyMediaResponse_CopySuccess) ProtoMessage() {} func (x *CopyMediaResponse_CopySuccess) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[45] + mi := &file_org_signal_chat_backups_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2739,7 +2685,7 @@ func (x *CopyMediaResponse_CopySuccess) ProtoReflect() protoreflect.Message { // Deprecated: Use CopyMediaResponse_CopySuccess.ProtoReflect.Descriptor instead. func (*CopyMediaResponse_CopySuccess) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{23, 3} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{22, 3} } func (x *CopyMediaResponse_CopySuccess) GetCdn() uint32 { @@ -2763,7 +2709,7 @@ type ListMediaResponse_ListEntry struct { func (x *ListMediaResponse_ListEntry) Reset() { *x = ListMediaResponse_ListEntry{} - mi := &file_org_signal_chat_backups_proto_msgTypes[46] + mi := &file_org_signal_chat_backups_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2775,7 +2721,7 @@ func (x *ListMediaResponse_ListEntry) String() string { func (*ListMediaResponse_ListEntry) ProtoMessage() {} func (x *ListMediaResponse_ListEntry) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[46] + mi := &file_org_signal_chat_backups_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2788,7 +2734,7 @@ func (x *ListMediaResponse_ListEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMediaResponse_ListEntry.ProtoReflect.Descriptor instead. func (*ListMediaResponse_ListEntry) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{26, 0} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{25, 0} } func (x *ListMediaResponse_ListEntry) GetCdn() uint32 { @@ -2833,7 +2779,7 @@ type ListMediaResponse_ListResult struct { func (x *ListMediaResponse_ListResult) Reset() { *x = ListMediaResponse_ListResult{} - mi := &file_org_signal_chat_backups_proto_msgTypes[47] + mi := &file_org_signal_chat_backups_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2845,7 +2791,7 @@ func (x *ListMediaResponse_ListResult) String() string { func (*ListMediaResponse_ListResult) ProtoMessage() {} func (x *ListMediaResponse_ListResult) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_backups_proto_msgTypes[47] + mi := &file_org_signal_chat_backups_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2858,7 +2804,7 @@ func (x *ListMediaResponse_ListResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMediaResponse_ListResult.ProtoReflect.Descriptor instead. func (*ListMediaResponse_ListResult) Descriptor() ([]byte, []int) { - return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{26, 1} + return file_org_signal_chat_backups_proto_rawDescGZIP(), []int{25, 1} } func (x *ListMediaResponse_ListResult) GetPage() []*ListMediaResponse_ListEntry { @@ -2920,9 +2866,6 @@ const file_org_signal_chat_backups_proto_rawDesc = "" + "\x15MediaCredentialsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x03R\x03key\x12:\n" + "\x05value\x18\x02 \x01(\v2$.org.signal.chat.common.ZkCredentialR\x05value:\x028\x01\"{\n" + - "\x19GetBackupIdLimitsResponse\x120\n" + - "\x13hasPermitsRemaining\x18\x01 \x01(\bR\x13hasPermitsRemaining\x12,\n" + - "\x11retryAfterSeconds\x18\x02 \x01(\x04R\x11retryAfterSeconds\"{\n" + "\x12SignedPresentation\x12(\n" + "\fpresentation\x18\x01 \x01(\fB\x04\x88\x97\"\x01R\fpresentation\x12;\n" + "\x16presentation_signature\x18\x02 \x01(\fB\x04\x88\x97\"\x01R\x15presentationSignature\"\x97\x01\n" + @@ -3073,12 +3016,11 @@ const file_org_signal_chat_backups_proto_rawDesc = "" + "\x13signed_presentation\x18\x01 \x01(\v2*.org.signal.chat.backup.SignedPresentationR\x12signedPresentation\x12H\n" + "\x05items\x18\x02 \x03(\v2'.org.signal.chat.backup.DeleteMediaItemB\t\x9a\x97\"\x05\b\x01\x10\xe8\aR\x05items\"a\n" + "\x13DeleteMediaResponse\x12J\n" + - "\fdeleted_item\x18\x01 \x01(\v2'.org.signal.chat.backup.DeleteMediaItemR\vdeletedItem2\xdd\x03\n" + + "\fdeleted_item\x18\x01 \x01(\v2'.org.signal.chat.backup.DeleteMediaItemR\vdeletedItem2\xfb\x02\n" + "\aBackups\x12h\n" + "\vSetBackupId\x12*.org.signal.chat.backup.SetBackupIdRequest\x1a+.org.signal.chat.backup.SetBackupIdResponse\"\x00\x12n\n" + "\rRedeemReceipt\x12,.org.signal.chat.backup.RedeemReceiptRequest\x1a-.org.signal.chat.backup.RedeemReceiptResponse\"\x00\x12\x8f\x01\n" + - "\x18GetBackupAuthCredentials\x127.org.signal.chat.backup.GetBackupAuthCredentialsRequest\x1a8.org.signal.chat.backup.GetBackupAuthCredentialsResponse\"\x00\x12`\n" + - "\x11GetBackupIdLimits\x12\x16.google.protobuf.Empty\x1a1.org.signal.chat.backup.GetBackupIdLimitsResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xe0\t\n" + + "\x18GetBackupAuthCredentials\x127.org.signal.chat.backup.GetBackupAuthCredentialsRequest\x1a8.org.signal.chat.backup.GetBackupAuthCredentialsResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xe0\t\n" + "\x10BackupsAnonymous\x12z\n" + "\x11GetCdnCredentials\x120.org.signal.chat.backup.GetCdnCredentialsRequest\x1a1.org.signal.chat.backup.GetCdnCredentialsResponse\"\x00\x12}\n" + "\x12GetSvrBCredentials\x121.org.signal.chat.backup.GetSvrBCredentialsRequest\x1a2.org.signal.chat.backup.GetSvrBCredentialsResponse\"\x00\x12|\n" + @@ -3104,7 +3046,7 @@ func file_org_signal_chat_backups_proto_rawDescGZIP() []byte { return file_org_signal_chat_backups_proto_rawDescData } -var file_org_signal_chat_backups_proto_msgTypes = make([]protoimpl.MessageInfo, 48) +var file_org_signal_chat_backups_proto_msgTypes = make([]protoimpl.MessageInfo, 47) var file_org_signal_chat_backups_proto_goTypes = []any{ (*SetBackupIdRequest)(nil), // 0: org.signal.chat.backup.SetBackupIdRequest (*SetBackupIdResponse)(nil), // 1: org.signal.chat.backup.SetBackupIdResponse @@ -3112,136 +3054,133 @@ var file_org_signal_chat_backups_proto_goTypes = []any{ (*RedeemReceiptResponse)(nil), // 3: org.signal.chat.backup.RedeemReceiptResponse (*GetBackupAuthCredentialsRequest)(nil), // 4: org.signal.chat.backup.GetBackupAuthCredentialsRequest (*GetBackupAuthCredentialsResponse)(nil), // 5: org.signal.chat.backup.GetBackupAuthCredentialsResponse - (*GetBackupIdLimitsResponse)(nil), // 6: org.signal.chat.backup.GetBackupIdLimitsResponse - (*SignedPresentation)(nil), // 7: org.signal.chat.backup.SignedPresentation - (*SetPublicKeyRequest)(nil), // 8: org.signal.chat.backup.SetPublicKeyRequest - (*SetPublicKeyResponse)(nil), // 9: org.signal.chat.backup.SetPublicKeyResponse - (*GetCdnCredentialsRequest)(nil), // 10: org.signal.chat.backup.GetCdnCredentialsRequest - (*GetCdnCredentialsResponse)(nil), // 11: org.signal.chat.backup.GetCdnCredentialsResponse - (*GetSvrBCredentialsRequest)(nil), // 12: org.signal.chat.backup.GetSvrBCredentialsRequest - (*GetSvrBCredentialsResponse)(nil), // 13: org.signal.chat.backup.GetSvrBCredentialsResponse - (*GetBackupInfoRequest)(nil), // 14: org.signal.chat.backup.GetBackupInfoRequest - (*GetMessageBackupInfoResponse)(nil), // 15: org.signal.chat.backup.GetMessageBackupInfoResponse - (*GetMediaBackupInfoResponse)(nil), // 16: org.signal.chat.backup.GetMediaBackupInfoResponse - (*RefreshRequest)(nil), // 17: org.signal.chat.backup.RefreshRequest - (*RefreshResponse)(nil), // 18: org.signal.chat.backup.RefreshResponse - (*GetUploadFormRequest)(nil), // 19: org.signal.chat.backup.GetUploadFormRequest - (*GetUploadFormResponse)(nil), // 20: org.signal.chat.backup.GetUploadFormResponse - (*CopyMediaItem)(nil), // 21: org.signal.chat.backup.CopyMediaItem - (*CopyMediaRequest)(nil), // 22: org.signal.chat.backup.CopyMediaRequest - (*CopyMediaResponse)(nil), // 23: org.signal.chat.backup.CopyMediaResponse - (*BackupStreamClosed)(nil), // 24: org.signal.chat.backup.BackupStreamClosed - (*ListMediaRequest)(nil), // 25: org.signal.chat.backup.ListMediaRequest - (*ListMediaResponse)(nil), // 26: org.signal.chat.backup.ListMediaResponse - (*DeleteAllRequest)(nil), // 27: org.signal.chat.backup.DeleteAllRequest - (*DeleteAllResponse)(nil), // 28: org.signal.chat.backup.DeleteAllResponse - (*DeleteMediaItem)(nil), // 29: org.signal.chat.backup.DeleteMediaItem - (*DeleteMediaRequest)(nil), // 30: org.signal.chat.backup.DeleteMediaRequest - (*DeleteMediaResponse)(nil), // 31: org.signal.chat.backup.DeleteMediaResponse - (*GetBackupAuthCredentialsResponse_Credentials)(nil), // 32: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials - nil, // 33: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry - nil, // 34: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry - (*GetCdnCredentialsResponse_CdnCredentials)(nil), // 35: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials - nil, // 36: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.HeadersEntry - (*GetSvrBCredentialsResponse_SvrBCredentials)(nil), // 37: org.signal.chat.backup.GetSvrBCredentialsResponse.SvrBCredentials - (*GetMessageBackupInfoResponse_MessageBackupInfo)(nil), // 38: org.signal.chat.backup.GetMessageBackupInfoResponse.MessageBackupInfo - (*GetMediaBackupInfoResponse_MediaBackupInfo)(nil), // 39: org.signal.chat.backup.GetMediaBackupInfoResponse.MediaBackupInfo - (*GetUploadFormRequest_MessagesUploadType)(nil), // 40: org.signal.chat.backup.GetUploadFormRequest.MessagesUploadType - (*GetUploadFormRequest_MediaUploadType)(nil), // 41: org.signal.chat.backup.GetUploadFormRequest.MediaUploadType - (*CopyMediaResponse_SourceNotFound)(nil), // 42: org.signal.chat.backup.CopyMediaResponse.SourceNotFound - (*CopyMediaResponse_WrongSourceLength)(nil), // 43: org.signal.chat.backup.CopyMediaResponse.WrongSourceLength - (*CopyMediaResponse_OutOfSpace)(nil), // 44: org.signal.chat.backup.CopyMediaResponse.OutOfSpace - (*CopyMediaResponse_CopySuccess)(nil), // 45: org.signal.chat.backup.CopyMediaResponse.CopySuccess - (*ListMediaResponse_ListEntry)(nil), // 46: org.signal.chat.backup.ListMediaResponse.ListEntry - (*ListMediaResponse_ListResult)(nil), // 47: org.signal.chat.backup.ListMediaResponse.ListResult - (*emptypb.Empty)(nil), // 48: google.protobuf.Empty - (*errors.FailedPrecondition)(nil), // 49: org.signal.chat.errors.FailedPrecondition - (*errors.FailedZkAuthentication)(nil), // 50: org.signal.chat.errors.FailedZkAuthentication - (*common.UploadForm)(nil), // 51: org.signal.chat.common.UploadForm - (*common.ZkCredential)(nil), // 52: org.signal.chat.common.ZkCredential + (*SignedPresentation)(nil), // 6: org.signal.chat.backup.SignedPresentation + (*SetPublicKeyRequest)(nil), // 7: org.signal.chat.backup.SetPublicKeyRequest + (*SetPublicKeyResponse)(nil), // 8: org.signal.chat.backup.SetPublicKeyResponse + (*GetCdnCredentialsRequest)(nil), // 9: org.signal.chat.backup.GetCdnCredentialsRequest + (*GetCdnCredentialsResponse)(nil), // 10: org.signal.chat.backup.GetCdnCredentialsResponse + (*GetSvrBCredentialsRequest)(nil), // 11: org.signal.chat.backup.GetSvrBCredentialsRequest + (*GetSvrBCredentialsResponse)(nil), // 12: org.signal.chat.backup.GetSvrBCredentialsResponse + (*GetBackupInfoRequest)(nil), // 13: org.signal.chat.backup.GetBackupInfoRequest + (*GetMessageBackupInfoResponse)(nil), // 14: org.signal.chat.backup.GetMessageBackupInfoResponse + (*GetMediaBackupInfoResponse)(nil), // 15: org.signal.chat.backup.GetMediaBackupInfoResponse + (*RefreshRequest)(nil), // 16: org.signal.chat.backup.RefreshRequest + (*RefreshResponse)(nil), // 17: org.signal.chat.backup.RefreshResponse + (*GetUploadFormRequest)(nil), // 18: org.signal.chat.backup.GetUploadFormRequest + (*GetUploadFormResponse)(nil), // 19: org.signal.chat.backup.GetUploadFormResponse + (*CopyMediaItem)(nil), // 20: org.signal.chat.backup.CopyMediaItem + (*CopyMediaRequest)(nil), // 21: org.signal.chat.backup.CopyMediaRequest + (*CopyMediaResponse)(nil), // 22: org.signal.chat.backup.CopyMediaResponse + (*BackupStreamClosed)(nil), // 23: org.signal.chat.backup.BackupStreamClosed + (*ListMediaRequest)(nil), // 24: org.signal.chat.backup.ListMediaRequest + (*ListMediaResponse)(nil), // 25: org.signal.chat.backup.ListMediaResponse + (*DeleteAllRequest)(nil), // 26: org.signal.chat.backup.DeleteAllRequest + (*DeleteAllResponse)(nil), // 27: org.signal.chat.backup.DeleteAllResponse + (*DeleteMediaItem)(nil), // 28: org.signal.chat.backup.DeleteMediaItem + (*DeleteMediaRequest)(nil), // 29: org.signal.chat.backup.DeleteMediaRequest + (*DeleteMediaResponse)(nil), // 30: org.signal.chat.backup.DeleteMediaResponse + (*GetBackupAuthCredentialsResponse_Credentials)(nil), // 31: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials + nil, // 32: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry + nil, // 33: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry + (*GetCdnCredentialsResponse_CdnCredentials)(nil), // 34: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials + nil, // 35: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.HeadersEntry + (*GetSvrBCredentialsResponse_SvrBCredentials)(nil), // 36: org.signal.chat.backup.GetSvrBCredentialsResponse.SvrBCredentials + (*GetMessageBackupInfoResponse_MessageBackupInfo)(nil), // 37: org.signal.chat.backup.GetMessageBackupInfoResponse.MessageBackupInfo + (*GetMediaBackupInfoResponse_MediaBackupInfo)(nil), // 38: org.signal.chat.backup.GetMediaBackupInfoResponse.MediaBackupInfo + (*GetUploadFormRequest_MessagesUploadType)(nil), // 39: org.signal.chat.backup.GetUploadFormRequest.MessagesUploadType + (*GetUploadFormRequest_MediaUploadType)(nil), // 40: org.signal.chat.backup.GetUploadFormRequest.MediaUploadType + (*CopyMediaResponse_SourceNotFound)(nil), // 41: org.signal.chat.backup.CopyMediaResponse.SourceNotFound + (*CopyMediaResponse_WrongSourceLength)(nil), // 42: org.signal.chat.backup.CopyMediaResponse.WrongSourceLength + (*CopyMediaResponse_OutOfSpace)(nil), // 43: org.signal.chat.backup.CopyMediaResponse.OutOfSpace + (*CopyMediaResponse_CopySuccess)(nil), // 44: org.signal.chat.backup.CopyMediaResponse.CopySuccess + (*ListMediaResponse_ListEntry)(nil), // 45: org.signal.chat.backup.ListMediaResponse.ListEntry + (*ListMediaResponse_ListResult)(nil), // 46: org.signal.chat.backup.ListMediaResponse.ListResult + (*emptypb.Empty)(nil), // 47: google.protobuf.Empty + (*errors.FailedPrecondition)(nil), // 48: org.signal.chat.errors.FailedPrecondition + (*errors.FailedZkAuthentication)(nil), // 49: org.signal.chat.errors.FailedZkAuthentication + (*common.UploadForm)(nil), // 50: org.signal.chat.common.UploadForm + (*common.ZkCredential)(nil), // 51: org.signal.chat.common.ZkCredential } var file_org_signal_chat_backups_proto_depIdxs = []int32{ - 48, // 0: org.signal.chat.backup.RedeemReceiptResponse.success:type_name -> google.protobuf.Empty - 49, // 1: org.signal.chat.backup.RedeemReceiptResponse.account_missing_commitment:type_name -> org.signal.chat.errors.FailedPrecondition - 49, // 2: org.signal.chat.backup.RedeemReceiptResponse.invalid_receipt:type_name -> org.signal.chat.errors.FailedPrecondition - 32, // 3: org.signal.chat.backup.GetBackupAuthCredentialsResponse.credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials - 7, // 4: org.signal.chat.backup.SetPublicKeyRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 48, // 5: org.signal.chat.backup.SetPublicKeyResponse.success:type_name -> google.protobuf.Empty - 50, // 6: org.signal.chat.backup.SetPublicKeyResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 7: org.signal.chat.backup.GetCdnCredentialsRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 35, // 8: org.signal.chat.backup.GetCdnCredentialsResponse.cdn_credentials:type_name -> org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials - 50, // 9: org.signal.chat.backup.GetCdnCredentialsResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 10: org.signal.chat.backup.GetSvrBCredentialsRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 37, // 11: org.signal.chat.backup.GetSvrBCredentialsResponse.svrb_credentials:type_name -> org.signal.chat.backup.GetSvrBCredentialsResponse.SvrBCredentials - 50, // 12: org.signal.chat.backup.GetSvrBCredentialsResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 13: org.signal.chat.backup.GetBackupInfoRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 38, // 14: org.signal.chat.backup.GetMessageBackupInfoResponse.backup_info:type_name -> org.signal.chat.backup.GetMessageBackupInfoResponse.MessageBackupInfo - 50, // 15: org.signal.chat.backup.GetMessageBackupInfoResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 39, // 16: org.signal.chat.backup.GetMediaBackupInfoResponse.backup_info:type_name -> org.signal.chat.backup.GetMediaBackupInfoResponse.MediaBackupInfo - 50, // 17: org.signal.chat.backup.GetMediaBackupInfoResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 18: org.signal.chat.backup.RefreshRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 48, // 19: org.signal.chat.backup.RefreshResponse.success:type_name -> google.protobuf.Empty - 50, // 20: org.signal.chat.backup.RefreshResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 21: org.signal.chat.backup.GetUploadFormRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 40, // 22: org.signal.chat.backup.GetUploadFormRequest.messages:type_name -> org.signal.chat.backup.GetUploadFormRequest.MessagesUploadType - 41, // 23: org.signal.chat.backup.GetUploadFormRequest.media:type_name -> org.signal.chat.backup.GetUploadFormRequest.MediaUploadType - 51, // 24: org.signal.chat.backup.GetUploadFormResponse.upload_form:type_name -> org.signal.chat.common.UploadForm - 50, // 25: org.signal.chat.backup.GetUploadFormResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 49, // 26: org.signal.chat.backup.GetUploadFormResponse.exceeds_max_upload_length:type_name -> org.signal.chat.errors.FailedPrecondition - 7, // 27: org.signal.chat.backup.CopyMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 21, // 28: org.signal.chat.backup.CopyMediaRequest.items:type_name -> org.signal.chat.backup.CopyMediaItem - 45, // 29: org.signal.chat.backup.CopyMediaResponse.success:type_name -> org.signal.chat.backup.CopyMediaResponse.CopySuccess - 42, // 30: org.signal.chat.backup.CopyMediaResponse.source_not_found:type_name -> org.signal.chat.backup.CopyMediaResponse.SourceNotFound - 43, // 31: org.signal.chat.backup.CopyMediaResponse.wrong_source_length:type_name -> org.signal.chat.backup.CopyMediaResponse.WrongSourceLength - 44, // 32: org.signal.chat.backup.CopyMediaResponse.out_of_space:type_name -> org.signal.chat.backup.CopyMediaResponse.OutOfSpace - 50, // 33: org.signal.chat.backup.BackupStreamClosed.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 34: org.signal.chat.backup.ListMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 47, // 35: org.signal.chat.backup.ListMediaResponse.list_result:type_name -> org.signal.chat.backup.ListMediaResponse.ListResult - 50, // 36: org.signal.chat.backup.ListMediaResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 37: org.signal.chat.backup.DeleteAllRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 48, // 38: org.signal.chat.backup.DeleteAllResponse.success:type_name -> google.protobuf.Empty - 50, // 39: org.signal.chat.backup.DeleteAllResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication - 7, // 40: org.signal.chat.backup.DeleteMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation - 29, // 41: org.signal.chat.backup.DeleteMediaRequest.items:type_name -> org.signal.chat.backup.DeleteMediaItem - 29, // 42: org.signal.chat.backup.DeleteMediaResponse.deleted_item:type_name -> org.signal.chat.backup.DeleteMediaItem - 33, // 43: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.message_credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry - 34, // 44: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.media_credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry - 52, // 45: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry.value:type_name -> org.signal.chat.common.ZkCredential - 52, // 46: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry.value:type_name -> org.signal.chat.common.ZkCredential - 36, // 47: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.headers:type_name -> org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.HeadersEntry - 46, // 48: org.signal.chat.backup.ListMediaResponse.ListResult.page:type_name -> org.signal.chat.backup.ListMediaResponse.ListEntry + 47, // 0: org.signal.chat.backup.RedeemReceiptResponse.success:type_name -> google.protobuf.Empty + 48, // 1: org.signal.chat.backup.RedeemReceiptResponse.account_missing_commitment:type_name -> org.signal.chat.errors.FailedPrecondition + 48, // 2: org.signal.chat.backup.RedeemReceiptResponse.invalid_receipt:type_name -> org.signal.chat.errors.FailedPrecondition + 31, // 3: org.signal.chat.backup.GetBackupAuthCredentialsResponse.credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials + 6, // 4: org.signal.chat.backup.SetPublicKeyRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 47, // 5: org.signal.chat.backup.SetPublicKeyResponse.success:type_name -> google.protobuf.Empty + 49, // 6: org.signal.chat.backup.SetPublicKeyResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 7: org.signal.chat.backup.GetCdnCredentialsRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 34, // 8: org.signal.chat.backup.GetCdnCredentialsResponse.cdn_credentials:type_name -> org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials + 49, // 9: org.signal.chat.backup.GetCdnCredentialsResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 10: org.signal.chat.backup.GetSvrBCredentialsRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 36, // 11: org.signal.chat.backup.GetSvrBCredentialsResponse.svrb_credentials:type_name -> org.signal.chat.backup.GetSvrBCredentialsResponse.SvrBCredentials + 49, // 12: org.signal.chat.backup.GetSvrBCredentialsResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 13: org.signal.chat.backup.GetBackupInfoRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 37, // 14: org.signal.chat.backup.GetMessageBackupInfoResponse.backup_info:type_name -> org.signal.chat.backup.GetMessageBackupInfoResponse.MessageBackupInfo + 49, // 15: org.signal.chat.backup.GetMessageBackupInfoResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 38, // 16: org.signal.chat.backup.GetMediaBackupInfoResponse.backup_info:type_name -> org.signal.chat.backup.GetMediaBackupInfoResponse.MediaBackupInfo + 49, // 17: org.signal.chat.backup.GetMediaBackupInfoResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 18: org.signal.chat.backup.RefreshRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 47, // 19: org.signal.chat.backup.RefreshResponse.success:type_name -> google.protobuf.Empty + 49, // 20: org.signal.chat.backup.RefreshResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 21: org.signal.chat.backup.GetUploadFormRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 39, // 22: org.signal.chat.backup.GetUploadFormRequest.messages:type_name -> org.signal.chat.backup.GetUploadFormRequest.MessagesUploadType + 40, // 23: org.signal.chat.backup.GetUploadFormRequest.media:type_name -> org.signal.chat.backup.GetUploadFormRequest.MediaUploadType + 50, // 24: org.signal.chat.backup.GetUploadFormResponse.upload_form:type_name -> org.signal.chat.common.UploadForm + 49, // 25: org.signal.chat.backup.GetUploadFormResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 48, // 26: org.signal.chat.backup.GetUploadFormResponse.exceeds_max_upload_length:type_name -> org.signal.chat.errors.FailedPrecondition + 6, // 27: org.signal.chat.backup.CopyMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 20, // 28: org.signal.chat.backup.CopyMediaRequest.items:type_name -> org.signal.chat.backup.CopyMediaItem + 44, // 29: org.signal.chat.backup.CopyMediaResponse.success:type_name -> org.signal.chat.backup.CopyMediaResponse.CopySuccess + 41, // 30: org.signal.chat.backup.CopyMediaResponse.source_not_found:type_name -> org.signal.chat.backup.CopyMediaResponse.SourceNotFound + 42, // 31: org.signal.chat.backup.CopyMediaResponse.wrong_source_length:type_name -> org.signal.chat.backup.CopyMediaResponse.WrongSourceLength + 43, // 32: org.signal.chat.backup.CopyMediaResponse.out_of_space:type_name -> org.signal.chat.backup.CopyMediaResponse.OutOfSpace + 49, // 33: org.signal.chat.backup.BackupStreamClosed.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 34: org.signal.chat.backup.ListMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 46, // 35: org.signal.chat.backup.ListMediaResponse.list_result:type_name -> org.signal.chat.backup.ListMediaResponse.ListResult + 49, // 36: org.signal.chat.backup.ListMediaResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 37: org.signal.chat.backup.DeleteAllRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 47, // 38: org.signal.chat.backup.DeleteAllResponse.success:type_name -> google.protobuf.Empty + 49, // 39: org.signal.chat.backup.DeleteAllResponse.failed_authentication:type_name -> org.signal.chat.errors.FailedZkAuthentication + 6, // 40: org.signal.chat.backup.DeleteMediaRequest.signed_presentation:type_name -> org.signal.chat.backup.SignedPresentation + 28, // 41: org.signal.chat.backup.DeleteMediaRequest.items:type_name -> org.signal.chat.backup.DeleteMediaItem + 28, // 42: org.signal.chat.backup.DeleteMediaResponse.deleted_item:type_name -> org.signal.chat.backup.DeleteMediaItem + 32, // 43: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.message_credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry + 33, // 44: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.media_credentials:type_name -> org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry + 51, // 45: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MessageCredentialsEntry.value:type_name -> org.signal.chat.common.ZkCredential + 51, // 46: org.signal.chat.backup.GetBackupAuthCredentialsResponse.Credentials.MediaCredentialsEntry.value:type_name -> org.signal.chat.common.ZkCredential + 35, // 47: org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.headers:type_name -> org.signal.chat.backup.GetCdnCredentialsResponse.CdnCredentials.HeadersEntry + 45, // 48: org.signal.chat.backup.ListMediaResponse.ListResult.page:type_name -> org.signal.chat.backup.ListMediaResponse.ListEntry 0, // 49: org.signal.chat.backup.Backups.SetBackupId:input_type -> org.signal.chat.backup.SetBackupIdRequest 2, // 50: org.signal.chat.backup.Backups.RedeemReceipt:input_type -> org.signal.chat.backup.RedeemReceiptRequest 4, // 51: org.signal.chat.backup.Backups.GetBackupAuthCredentials:input_type -> org.signal.chat.backup.GetBackupAuthCredentialsRequest - 48, // 52: org.signal.chat.backup.Backups.GetBackupIdLimits:input_type -> google.protobuf.Empty - 10, // 53: org.signal.chat.backup.BackupsAnonymous.GetCdnCredentials:input_type -> org.signal.chat.backup.GetCdnCredentialsRequest - 12, // 54: org.signal.chat.backup.BackupsAnonymous.GetSvrBCredentials:input_type -> org.signal.chat.backup.GetSvrBCredentialsRequest - 14, // 55: org.signal.chat.backup.BackupsAnonymous.GetMessageBackupInfo:input_type -> org.signal.chat.backup.GetBackupInfoRequest - 14, // 56: org.signal.chat.backup.BackupsAnonymous.GetMediaBackupInfo:input_type -> org.signal.chat.backup.GetBackupInfoRequest - 8, // 57: org.signal.chat.backup.BackupsAnonymous.SetPublicKey:input_type -> org.signal.chat.backup.SetPublicKeyRequest - 17, // 58: org.signal.chat.backup.BackupsAnonymous.Refresh:input_type -> org.signal.chat.backup.RefreshRequest - 19, // 59: org.signal.chat.backup.BackupsAnonymous.GetUploadForm:input_type -> org.signal.chat.backup.GetUploadFormRequest - 22, // 60: org.signal.chat.backup.BackupsAnonymous.CopyMedia:input_type -> org.signal.chat.backup.CopyMediaRequest - 25, // 61: org.signal.chat.backup.BackupsAnonymous.ListMedia:input_type -> org.signal.chat.backup.ListMediaRequest - 30, // 62: org.signal.chat.backup.BackupsAnonymous.DeleteMedia:input_type -> org.signal.chat.backup.DeleteMediaRequest - 27, // 63: org.signal.chat.backup.BackupsAnonymous.DeleteAll:input_type -> org.signal.chat.backup.DeleteAllRequest - 1, // 64: org.signal.chat.backup.Backups.SetBackupId:output_type -> org.signal.chat.backup.SetBackupIdResponse - 3, // 65: org.signal.chat.backup.Backups.RedeemReceipt:output_type -> org.signal.chat.backup.RedeemReceiptResponse - 5, // 66: org.signal.chat.backup.Backups.GetBackupAuthCredentials:output_type -> org.signal.chat.backup.GetBackupAuthCredentialsResponse - 6, // 67: org.signal.chat.backup.Backups.GetBackupIdLimits:output_type -> org.signal.chat.backup.GetBackupIdLimitsResponse - 11, // 68: org.signal.chat.backup.BackupsAnonymous.GetCdnCredentials:output_type -> org.signal.chat.backup.GetCdnCredentialsResponse - 13, // 69: org.signal.chat.backup.BackupsAnonymous.GetSvrBCredentials:output_type -> org.signal.chat.backup.GetSvrBCredentialsResponse - 15, // 70: org.signal.chat.backup.BackupsAnonymous.GetMessageBackupInfo:output_type -> org.signal.chat.backup.GetMessageBackupInfoResponse - 16, // 71: org.signal.chat.backup.BackupsAnonymous.GetMediaBackupInfo:output_type -> org.signal.chat.backup.GetMediaBackupInfoResponse - 9, // 72: org.signal.chat.backup.BackupsAnonymous.SetPublicKey:output_type -> org.signal.chat.backup.SetPublicKeyResponse - 18, // 73: org.signal.chat.backup.BackupsAnonymous.Refresh:output_type -> org.signal.chat.backup.RefreshResponse - 20, // 74: org.signal.chat.backup.BackupsAnonymous.GetUploadForm:output_type -> org.signal.chat.backup.GetUploadFormResponse - 23, // 75: org.signal.chat.backup.BackupsAnonymous.CopyMedia:output_type -> org.signal.chat.backup.CopyMediaResponse - 26, // 76: org.signal.chat.backup.BackupsAnonymous.ListMedia:output_type -> org.signal.chat.backup.ListMediaResponse - 31, // 77: org.signal.chat.backup.BackupsAnonymous.DeleteMedia:output_type -> org.signal.chat.backup.DeleteMediaResponse - 28, // 78: org.signal.chat.backup.BackupsAnonymous.DeleteAll:output_type -> org.signal.chat.backup.DeleteAllResponse - 64, // [64:79] is the sub-list for method output_type - 49, // [49:64] is the sub-list for method input_type + 9, // 52: org.signal.chat.backup.BackupsAnonymous.GetCdnCredentials:input_type -> org.signal.chat.backup.GetCdnCredentialsRequest + 11, // 53: org.signal.chat.backup.BackupsAnonymous.GetSvrBCredentials:input_type -> org.signal.chat.backup.GetSvrBCredentialsRequest + 13, // 54: org.signal.chat.backup.BackupsAnonymous.GetMessageBackupInfo:input_type -> org.signal.chat.backup.GetBackupInfoRequest + 13, // 55: org.signal.chat.backup.BackupsAnonymous.GetMediaBackupInfo:input_type -> org.signal.chat.backup.GetBackupInfoRequest + 7, // 56: org.signal.chat.backup.BackupsAnonymous.SetPublicKey:input_type -> org.signal.chat.backup.SetPublicKeyRequest + 16, // 57: org.signal.chat.backup.BackupsAnonymous.Refresh:input_type -> org.signal.chat.backup.RefreshRequest + 18, // 58: org.signal.chat.backup.BackupsAnonymous.GetUploadForm:input_type -> org.signal.chat.backup.GetUploadFormRequest + 21, // 59: org.signal.chat.backup.BackupsAnonymous.CopyMedia:input_type -> org.signal.chat.backup.CopyMediaRequest + 24, // 60: org.signal.chat.backup.BackupsAnonymous.ListMedia:input_type -> org.signal.chat.backup.ListMediaRequest + 29, // 61: org.signal.chat.backup.BackupsAnonymous.DeleteMedia:input_type -> org.signal.chat.backup.DeleteMediaRequest + 26, // 62: org.signal.chat.backup.BackupsAnonymous.DeleteAll:input_type -> org.signal.chat.backup.DeleteAllRequest + 1, // 63: org.signal.chat.backup.Backups.SetBackupId:output_type -> org.signal.chat.backup.SetBackupIdResponse + 3, // 64: org.signal.chat.backup.Backups.RedeemReceipt:output_type -> org.signal.chat.backup.RedeemReceiptResponse + 5, // 65: org.signal.chat.backup.Backups.GetBackupAuthCredentials:output_type -> org.signal.chat.backup.GetBackupAuthCredentialsResponse + 10, // 66: org.signal.chat.backup.BackupsAnonymous.GetCdnCredentials:output_type -> org.signal.chat.backup.GetCdnCredentialsResponse + 12, // 67: org.signal.chat.backup.BackupsAnonymous.GetSvrBCredentials:output_type -> org.signal.chat.backup.GetSvrBCredentialsResponse + 14, // 68: org.signal.chat.backup.BackupsAnonymous.GetMessageBackupInfo:output_type -> org.signal.chat.backup.GetMessageBackupInfoResponse + 15, // 69: org.signal.chat.backup.BackupsAnonymous.GetMediaBackupInfo:output_type -> org.signal.chat.backup.GetMediaBackupInfoResponse + 8, // 70: org.signal.chat.backup.BackupsAnonymous.SetPublicKey:output_type -> org.signal.chat.backup.SetPublicKeyResponse + 17, // 71: org.signal.chat.backup.BackupsAnonymous.Refresh:output_type -> org.signal.chat.backup.RefreshResponse + 19, // 72: org.signal.chat.backup.BackupsAnonymous.GetUploadForm:output_type -> org.signal.chat.backup.GetUploadFormResponse + 22, // 73: org.signal.chat.backup.BackupsAnonymous.CopyMedia:output_type -> org.signal.chat.backup.CopyMediaResponse + 25, // 74: org.signal.chat.backup.BackupsAnonymous.ListMedia:output_type -> org.signal.chat.backup.ListMediaResponse + 30, // 75: org.signal.chat.backup.BackupsAnonymous.DeleteMedia:output_type -> org.signal.chat.backup.DeleteMediaResponse + 27, // 76: org.signal.chat.backup.BackupsAnonymous.DeleteAll:output_type -> org.signal.chat.backup.DeleteAllResponse + 63, // [63:77] is the sub-list for method output_type + 49, // [49:63] is the sub-list for method input_type 49, // [49:49] is the sub-list for extension type_name 49, // [49:49] is the sub-list for extension extendee 0, // [0:49] is the sub-list for field type_name @@ -3257,65 +3196,65 @@ func file_org_signal_chat_backups_proto_init() { (*RedeemReceiptResponse_AccountMissingCommitment)(nil), (*RedeemReceiptResponse_InvalidReceipt)(nil), } - file_org_signal_chat_backups_proto_msgTypes[9].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[8].OneofWrappers = []any{ (*SetPublicKeyResponse_Success)(nil), (*SetPublicKeyResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[11].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[10].OneofWrappers = []any{ (*GetCdnCredentialsResponse_CdnCredentials_)(nil), (*GetCdnCredentialsResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[13].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[12].OneofWrappers = []any{ (*GetSvrBCredentialsResponse_SvrbCredentials)(nil), (*GetSvrBCredentialsResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[15].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[14].OneofWrappers = []any{ (*GetMessageBackupInfoResponse_BackupInfo)(nil), (*GetMessageBackupInfoResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[16].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[15].OneofWrappers = []any{ (*GetMediaBackupInfoResponse_BackupInfo)(nil), (*GetMediaBackupInfoResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[18].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[17].OneofWrappers = []any{ (*RefreshResponse_Success)(nil), (*RefreshResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[19].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[18].OneofWrappers = []any{ (*GetUploadFormRequest_Messages)(nil), (*GetUploadFormRequest_Media)(nil), } - file_org_signal_chat_backups_proto_msgTypes[20].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[19].OneofWrappers = []any{ (*GetUploadFormResponse_UploadForm)(nil), (*GetUploadFormResponse_FailedAuthentication)(nil), (*GetUploadFormResponse_ExceedsMaxUploadLength)(nil), } - file_org_signal_chat_backups_proto_msgTypes[23].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[22].OneofWrappers = []any{ (*CopyMediaResponse_Success)(nil), (*CopyMediaResponse_SourceNotFound_)(nil), (*CopyMediaResponse_WrongSourceLength_)(nil), (*CopyMediaResponse_OutOfSpace_)(nil), } - file_org_signal_chat_backups_proto_msgTypes[24].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[23].OneofWrappers = []any{ (*BackupStreamClosed_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[25].OneofWrappers = []any{} - file_org_signal_chat_backups_proto_msgTypes[26].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[24].OneofWrappers = []any{} + file_org_signal_chat_backups_proto_msgTypes[25].OneofWrappers = []any{ (*ListMediaResponse_ListResult_)(nil), (*ListMediaResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[28].OneofWrappers = []any{ + file_org_signal_chat_backups_proto_msgTypes[27].OneofWrappers = []any{ (*DeleteAllResponse_Success)(nil), (*DeleteAllResponse_FailedAuthentication)(nil), } - file_org_signal_chat_backups_proto_msgTypes[47].OneofWrappers = []any{} + file_org_signal_chat_backups_proto_msgTypes[46].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_backups_proto_rawDesc), len(file_org_signal_chat_backups_proto_rawDesc)), NumEnums: 0, - NumMessages: 48, + NumMessages: 47, NumExtensions: 0, NumServices: 2, }, diff --git a/pkg/signalmeow/protobuf/rpc/backups/backups_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/backups/backups_grpc.pb.go index 137e6c4..b7079e3 100644 --- a/pkg/signalmeow/protobuf/rpc/backups/backups_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/backups/backups_grpc.pb.go @@ -15,7 +15,6 @@ import ( grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - emptypb "google.golang.org/protobuf/types/known/emptypb" ) // This is a compile-time assertion to ensure that this generated file @@ -27,7 +26,6 @@ const ( Backups_SetBackupId_FullMethodName = "/org.signal.chat.backup.Backups/SetBackupId" Backups_RedeemReceipt_FullMethodName = "/org.signal.chat.backup.Backups/RedeemReceipt" Backups_GetBackupAuthCredentials_FullMethodName = "/org.signal.chat.backup.Backups/GetBackupAuthCredentials" - Backups_GetBackupIdLimits_FullMethodName = "/org.signal.chat.backup.Backups/GetBackupIdLimits" ) // BackupsClient is the client API for Backups service. @@ -74,8 +72,6 @@ type BackupsClient interface { // Clients must validate the receipt level on the credential matches a known // receipt level before using it. GetBackupAuthCredentials(ctx context.Context, in *GetBackupAuthCredentialsRequest, opts ...grpc.CallOption) (*GetBackupAuthCredentialsResponse, error) - // Retrieve backup ID rotation limits - GetBackupIdLimits(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetBackupIdLimitsResponse, error) } type backupsClient struct { @@ -116,16 +112,6 @@ func (c *backupsClient) GetBackupAuthCredentials(ctx context.Context, in *GetBac return out, nil } -func (c *backupsClient) GetBackupIdLimits(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetBackupIdLimitsResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetBackupIdLimitsResponse) - err := c.cc.Invoke(ctx, Backups_GetBackupIdLimits_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - // BackupsServer is the server API for Backups service. // All implementations must embed UnimplementedBackupsServer // for forward compatibility. @@ -170,8 +156,6 @@ type BackupsServer interface { // Clients must validate the receipt level on the credential matches a known // receipt level before using it. GetBackupAuthCredentials(context.Context, *GetBackupAuthCredentialsRequest) (*GetBackupAuthCredentialsResponse, error) - // Retrieve backup ID rotation limits - GetBackupIdLimits(context.Context, *emptypb.Empty) (*GetBackupIdLimitsResponse, error) mustEmbedUnimplementedBackupsServer() } @@ -191,9 +175,6 @@ func (UnimplementedBackupsServer) RedeemReceipt(context.Context, *RedeemReceiptR func (UnimplementedBackupsServer) GetBackupAuthCredentials(context.Context, *GetBackupAuthCredentialsRequest) (*GetBackupAuthCredentialsResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetBackupAuthCredentials not implemented") } -func (UnimplementedBackupsServer) GetBackupIdLimits(context.Context, *emptypb.Empty) (*GetBackupIdLimitsResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetBackupIdLimits not implemented") -} func (UnimplementedBackupsServer) mustEmbedUnimplementedBackupsServer() {} func (UnimplementedBackupsServer) testEmbeddedByValue() {} @@ -269,24 +250,6 @@ func _Backups_GetBackupAuthCredentials_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } -func _Backups_GetBackupIdLimits_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(emptypb.Empty) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(BackupsServer).GetBackupIdLimits(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Backups_GetBackupIdLimits_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(BackupsServer).GetBackupIdLimits(ctx, req.(*emptypb.Empty)) - } - return interceptor(ctx, in, info, handler) -} - // Backups_ServiceDesc is the grpc.ServiceDesc for Backups service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -306,10 +269,6 @@ var Backups_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetBackupAuthCredentials", Handler: _Backups_GetBackupAuthCredentials_Handler, }, - { - MethodName: "GetBackupIdLimits", - Handler: _Backups_GetBackupIdLimits_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "org/signal/chat/backups.proto", diff --git a/pkg/signalmeow/protobuf/rpc/challenge/challenge.pb.go b/pkg/signalmeow/protobuf/rpc/challenge/challenge.pb.go index b6b5a57..3643365 100644 --- a/pkg/signalmeow/protobuf/rpc/challenge/challenge.pb.go +++ b/pkg/signalmeow/protobuf/rpc/challenge/challenge.pb.go @@ -11,12 +11,9 @@ package challenge import ( - errors "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/errors" _ "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/require" - _ "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/tag" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -166,127 +163,6 @@ func (x *AnswerChallengeResponse) GetSuccess() bool { return false } -type RequestPushChallengeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RequestPushChallengeRequest) Reset() { - *x = RequestPushChallengeRequest{} - mi := &file_org_signal_chat_challenge_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RequestPushChallengeRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestPushChallengeRequest) ProtoMessage() {} - -func (x *RequestPushChallengeRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_challenge_proto_msgTypes[2] - 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 RequestPushChallengeRequest.ProtoReflect.Descriptor instead. -func (*RequestPushChallengeRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_challenge_proto_rawDescGZIP(), []int{2} -} - -type RequestPushChallengeResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Response: - // - // *RequestPushChallengeResponse_SentPushChallenge_ - // *RequestPushChallengeResponse_NoPushToken - Response isRequestPushChallengeResponse_Response `protobuf_oneof:"response"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RequestPushChallengeResponse) Reset() { - *x = RequestPushChallengeResponse{} - mi := &file_org_signal_chat_challenge_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RequestPushChallengeResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestPushChallengeResponse) ProtoMessage() {} - -func (x *RequestPushChallengeResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_challenge_proto_msgTypes[3] - 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 RequestPushChallengeResponse.ProtoReflect.Descriptor instead. -func (*RequestPushChallengeResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_challenge_proto_rawDescGZIP(), []int{3} -} - -func (x *RequestPushChallengeResponse) GetResponse() isRequestPushChallengeResponse_Response { - if x != nil { - return x.Response - } - return nil -} - -func (x *RequestPushChallengeResponse) GetSentPushChallenge() *emptypb.Empty { - if x != nil { - if x, ok := x.Response.(*RequestPushChallengeResponse_SentPushChallenge_); ok { - return x.SentPushChallenge - } - } - return nil -} - -func (x *RequestPushChallengeResponse) GetNoPushToken() *errors.FailedPrecondition { - if x != nil { - if x, ok := x.Response.(*RequestPushChallengeResponse_NoPushToken); ok { - return x.NoPushToken - } - } - return nil -} - -type isRequestPushChallengeResponse_Response interface { - isRequestPushChallengeResponse_Response() -} - -type RequestPushChallengeResponse_SentPushChallenge_ struct { - // The server attempted to send a challenge value to the authenticated - // account's primary device via a push notification. - SentPushChallenge *emptypb.Empty `protobuf:"bytes,1,opt,name=sent_push_challenge,json=sentPushChallenge,proto3,oneof"` -} - -type RequestPushChallengeResponse_NoPushToken struct { - // The authenticated account's primary device does not have a push token. - NoPushToken *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=no_push_token,json=noPushToken,proto3,oneof"` -} - -func (*RequestPushChallengeResponse_SentPushChallenge_) isRequestPushChallengeResponse_Response() {} - -func (*RequestPushChallengeResponse_NoPushToken) isRequestPushChallengeResponse_Response() {} - type AnswerChallengeRequest_AnswerPushChallengeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // The challenge string provided to the client via a push payload @@ -297,7 +173,7 @@ type AnswerChallengeRequest_AnswerPushChallengeRequest struct { func (x *AnswerChallengeRequest_AnswerPushChallengeRequest) Reset() { *x = AnswerChallengeRequest_AnswerPushChallengeRequest{} - mi := &file_org_signal_chat_challenge_proto_msgTypes[4] + mi := &file_org_signal_chat_challenge_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -309,7 +185,7 @@ func (x *AnswerChallengeRequest_AnswerPushChallengeRequest) String() string { func (*AnswerChallengeRequest_AnswerPushChallengeRequest) ProtoMessage() {} func (x *AnswerChallengeRequest_AnswerPushChallengeRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_challenge_proto_msgTypes[4] + mi := &file_org_signal_chat_challenge_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -343,7 +219,7 @@ type AnswerChallengeRequest_AnswerCaptchaChallengeRequest struct { func (x *AnswerChallengeRequest_AnswerCaptchaChallengeRequest) Reset() { *x = AnswerChallengeRequest_AnswerCaptchaChallengeRequest{} - mi := &file_org_signal_chat_challenge_proto_msgTypes[5] + mi := &file_org_signal_chat_challenge_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -355,7 +231,7 @@ func (x *AnswerChallengeRequest_AnswerCaptchaChallengeRequest) String() string { func (*AnswerChallengeRequest_AnswerCaptchaChallengeRequest) ProtoMessage() {} func (x *AnswerChallengeRequest_AnswerCaptchaChallengeRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_challenge_proto_msgTypes[5] + mi := &file_org_signal_chat_challenge_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -378,47 +254,11 @@ func (x *AnswerChallengeRequest_AnswerCaptchaChallengeRequest) GetCaptcha() stri return "" } -type RequestPushChallengeResponse_SentPushChallenge struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *RequestPushChallengeResponse_SentPushChallenge) Reset() { - *x = RequestPushChallengeResponse_SentPushChallenge{} - mi := &file_org_signal_chat_challenge_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *RequestPushChallengeResponse_SentPushChallenge) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestPushChallengeResponse_SentPushChallenge) ProtoMessage() {} - -func (x *RequestPushChallengeResponse_SentPushChallenge) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_challenge_proto_msgTypes[6] - 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 RequestPushChallengeResponse_SentPushChallenge.ProtoReflect.Descriptor instead. -func (*RequestPushChallengeResponse_SentPushChallenge) Descriptor() ([]byte, []int) { - return file_org_signal_chat_challenge_proto_rawDescGZIP(), []int{3, 0} -} - var File_org_signal_chat_challenge_proto protoreflect.FileDescriptor const file_org_signal_chat_challenge_proto_rawDesc = "" + "\n" + - "\x1forg/signal/chat/challenge.proto\x12\x19org.signal.chat.challenge\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1corg/signal/chat/errors.proto\x1a\x1dorg/signal/chat/require.proto\x1a\x19org/signal/chat/tag.proto\"\x93\x03\n" + + "\x1forg/signal/chat/challenge.proto\x12\x19org.signal.chat.challenge\x1a\x1dorg/signal/chat/require.proto\"\x93\x03\n" + "\x16AnswerChallengeRequest\x12\x1a\n" + "\x05token\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\x05token\x12b\n" + "\x04push\x18\x02 \x01(\v2L.org.signal.chat.challenge.AnswerChallengeRequest.AnswerPushChallengeRequestH\x00R\x04push\x12k\n" + @@ -429,17 +269,9 @@ const file_org_signal_chat_challenge_proto_rawDesc = "" + "\acaptcha\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\acaptchaB\t\n" + "\arequest\"3\n" + "\x17AnswerChallengeResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"\x1d\n" + - "\x1bRequestPushChallengeRequest\"\xee\x01\n" + - "\x1cRequestPushChallengeResponse\x12H\n" + - "\x13sent_push_challenge\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x11sentPushChallenge\x12c\n" + - "\rno_push_token\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x11\xc2\xd5\"\rno_push_tokenH\x00R\vnoPushToken\x1a\x13\n" + - "\x11SentPushChallengeB\n" + - "\n" + - "\bresponse2\x99\x02\n" + - "\tChallenge\x12z\n" + - "\x0fAnswerChallenge\x121.org.signal.chat.challenge.AnswerChallengeRequest\x1a2.org.signal.chat.challenge.AnswerChallengeResponse\"\x00\x12\x89\x01\n" + - "\x14RequestPushChallenge\x126.org.signal.chat.challenge.RequestPushChallengeRequest\x1a7.org.signal.chat.challenge.RequestPushChallengeResponse\"\x00\x1a\x04\xc8\xd5\"\x01B\x02P\x01b\x06proto3" + "\asuccess\x18\x01 \x01(\bR\asuccess2\x96\x01\n" + + "\tChallenge\x12\x82\x01\n" + + "\x17HandleChallengeResponse\x121.org.signal.chat.challenge.AnswerChallengeRequest\x1a2.org.signal.chat.challenge.AnswerChallengeResponse\"\x00\x1a\x04\xc8\xd5\"\x01B\x02P\x01b\x06proto3" var ( file_org_signal_chat_challenge_proto_rawDescOnce sync.Once @@ -453,32 +285,23 @@ func file_org_signal_chat_challenge_proto_rawDescGZIP() []byte { return file_org_signal_chat_challenge_proto_rawDescData } -var file_org_signal_chat_challenge_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_org_signal_chat_challenge_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_org_signal_chat_challenge_proto_goTypes = []any{ (*AnswerChallengeRequest)(nil), // 0: org.signal.chat.challenge.AnswerChallengeRequest (*AnswerChallengeResponse)(nil), // 1: org.signal.chat.challenge.AnswerChallengeResponse - (*RequestPushChallengeRequest)(nil), // 2: org.signal.chat.challenge.RequestPushChallengeRequest - (*RequestPushChallengeResponse)(nil), // 3: org.signal.chat.challenge.RequestPushChallengeResponse - (*AnswerChallengeRequest_AnswerPushChallengeRequest)(nil), // 4: org.signal.chat.challenge.AnswerChallengeRequest.AnswerPushChallengeRequest - (*AnswerChallengeRequest_AnswerCaptchaChallengeRequest)(nil), // 5: org.signal.chat.challenge.AnswerChallengeRequest.AnswerCaptchaChallengeRequest - (*RequestPushChallengeResponse_SentPushChallenge)(nil), // 6: org.signal.chat.challenge.RequestPushChallengeResponse.SentPushChallenge - (*emptypb.Empty)(nil), // 7: google.protobuf.Empty - (*errors.FailedPrecondition)(nil), // 8: org.signal.chat.errors.FailedPrecondition + (*AnswerChallengeRequest_AnswerPushChallengeRequest)(nil), // 2: org.signal.chat.challenge.AnswerChallengeRequest.AnswerPushChallengeRequest + (*AnswerChallengeRequest_AnswerCaptchaChallengeRequest)(nil), // 3: org.signal.chat.challenge.AnswerChallengeRequest.AnswerCaptchaChallengeRequest } var file_org_signal_chat_challenge_proto_depIdxs = []int32{ - 4, // 0: org.signal.chat.challenge.AnswerChallengeRequest.push:type_name -> org.signal.chat.challenge.AnswerChallengeRequest.AnswerPushChallengeRequest - 5, // 1: org.signal.chat.challenge.AnswerChallengeRequest.captcha:type_name -> org.signal.chat.challenge.AnswerChallengeRequest.AnswerCaptchaChallengeRequest - 7, // 2: org.signal.chat.challenge.RequestPushChallengeResponse.sent_push_challenge:type_name -> google.protobuf.Empty - 8, // 3: org.signal.chat.challenge.RequestPushChallengeResponse.no_push_token:type_name -> org.signal.chat.errors.FailedPrecondition - 0, // 4: org.signal.chat.challenge.Challenge.AnswerChallenge:input_type -> org.signal.chat.challenge.AnswerChallengeRequest - 2, // 5: org.signal.chat.challenge.Challenge.RequestPushChallenge:input_type -> org.signal.chat.challenge.RequestPushChallengeRequest - 1, // 6: org.signal.chat.challenge.Challenge.AnswerChallenge:output_type -> org.signal.chat.challenge.AnswerChallengeResponse - 3, // 7: org.signal.chat.challenge.Challenge.RequestPushChallenge:output_type -> org.signal.chat.challenge.RequestPushChallengeResponse - 6, // [6:8] is the sub-list for method output_type - 4, // [4:6] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 2, // 0: org.signal.chat.challenge.AnswerChallengeRequest.push:type_name -> org.signal.chat.challenge.AnswerChallengeRequest.AnswerPushChallengeRequest + 3, // 1: org.signal.chat.challenge.AnswerChallengeRequest.captcha:type_name -> org.signal.chat.challenge.AnswerChallengeRequest.AnswerCaptchaChallengeRequest + 0, // 2: org.signal.chat.challenge.Challenge.HandleChallengeResponse:input_type -> org.signal.chat.challenge.AnswerChallengeRequest + 1, // 3: org.signal.chat.challenge.Challenge.HandleChallengeResponse:output_type -> org.signal.chat.challenge.AnswerChallengeResponse + 3, // [3:4] is the sub-list for method output_type + 2, // [2:3] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name } func init() { file_org_signal_chat_challenge_proto_init() } @@ -490,17 +313,13 @@ func file_org_signal_chat_challenge_proto_init() { (*AnswerChallengeRequest_Push)(nil), (*AnswerChallengeRequest_Captcha)(nil), } - file_org_signal_chat_challenge_proto_msgTypes[3].OneofWrappers = []any{ - (*RequestPushChallengeResponse_SentPushChallenge_)(nil), - (*RequestPushChallengeResponse_NoPushToken)(nil), - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_challenge_proto_rawDesc), len(file_org_signal_chat_challenge_proto_rawDesc)), NumEnums: 0, - NumMessages: 7, + NumMessages: 4, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/signalmeow/protobuf/rpc/challenge/challenge_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/challenge/challenge_grpc.pb.go index 62003d7..e242637 100644 --- a/pkg/signalmeow/protobuf/rpc/challenge/challenge_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/challenge/challenge_grpc.pb.go @@ -23,45 +23,18 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - Challenge_AnswerChallenge_FullMethodName = "/org.signal.chat.challenge.Challenge/AnswerChallenge" - Challenge_RequestPushChallenge_FullMethodName = "/org.signal.chat.challenge.Challenge/RequestPushChallenge" + Challenge_HandleChallengeResponse_FullMethodName = "/org.signal.chat.challenge.Challenge/HandleChallengeResponse" ) // ChallengeClient is the client API for Challenge service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ChallengeClient interface { - // Submit proof of a challenge completion. - // - // Some server endpoints (the "send message" endpoint, for example) may return - // a response indicating the client must complete a challenge before continuing. - // Clients may use this endpoint to provide proof of a completed challenge. - // If successful, the client may then continue their original operation. - AnswerChallenge(ctx context.Context, in *AnswerChallengeRequest, opts ...grpc.CallOption) (*AnswerChallengeResponse, error) - // Requests that a challenge value be sent to the authenticated account's - // primary device via push notification. Once received, callers may present - // the challenge value via the HandleChallengeResponse RPC. - // - // APNs challenge payloads will be formatted as follows: - // - // ``` - // { - // "aps": { - // "sound": "default", - // "alert": { - // "loc-key": "APN_Message" - // } - // }, - // "rateLimitChallenge": "{CHALLENGE_TOKEN}" - // } - // ``` - // - // FCM challenge payloads will be formatted as follows: - // - // ``` - // {"rateLimitChallenge": "{CHALLENGE_TOKEN}"} - // ``` - RequestPushChallenge(ctx context.Context, in *RequestPushChallengeRequest, opts ...grpc.CallOption) (*RequestPushChallengeResponse, error) + // Some server endpoints (the "send message" endpoint, for example) may return + // a response indicating the client must complete a challenge before continuing. + // Clients may use this endpoint to provide proof of a completed challenge. + // If successful, the client may then continue their original operation. + HandleChallengeResponse(ctx context.Context, in *AnswerChallengeRequest, opts ...grpc.CallOption) (*AnswerChallengeResponse, error) } type challengeClient struct { @@ -72,20 +45,10 @@ func NewChallengeClient(cc grpc.ClientConnInterface) ChallengeClient { return &challengeClient{cc} } -func (c *challengeClient) AnswerChallenge(ctx context.Context, in *AnswerChallengeRequest, opts ...grpc.CallOption) (*AnswerChallengeResponse, error) { +func (c *challengeClient) HandleChallengeResponse(ctx context.Context, in *AnswerChallengeRequest, opts ...grpc.CallOption) (*AnswerChallengeResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(AnswerChallengeResponse) - err := c.cc.Invoke(ctx, Challenge_AnswerChallenge_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *challengeClient) RequestPushChallenge(ctx context.Context, in *RequestPushChallengeRequest, opts ...grpc.CallOption) (*RequestPushChallengeResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(RequestPushChallengeResponse) - err := c.cc.Invoke(ctx, Challenge_RequestPushChallenge_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, Challenge_HandleChallengeResponse_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -96,37 +59,11 @@ func (c *challengeClient) RequestPushChallenge(ctx context.Context, in *RequestP // All implementations must embed UnimplementedChallengeServer // for forward compatibility. type ChallengeServer interface { - // Submit proof of a challenge completion. - // - // Some server endpoints (the "send message" endpoint, for example) may return - // a response indicating the client must complete a challenge before continuing. - // Clients may use this endpoint to provide proof of a completed challenge. - // If successful, the client may then continue their original operation. - AnswerChallenge(context.Context, *AnswerChallengeRequest) (*AnswerChallengeResponse, error) - // Requests that a challenge value be sent to the authenticated account's - // primary device via push notification. Once received, callers may present - // the challenge value via the HandleChallengeResponse RPC. - // - // APNs challenge payloads will be formatted as follows: - // - // ``` - // { - // "aps": { - // "sound": "default", - // "alert": { - // "loc-key": "APN_Message" - // } - // }, - // "rateLimitChallenge": "{CHALLENGE_TOKEN}" - // } - // ``` - // - // FCM challenge payloads will be formatted as follows: - // - // ``` - // {"rateLimitChallenge": "{CHALLENGE_TOKEN}"} - // ``` - RequestPushChallenge(context.Context, *RequestPushChallengeRequest) (*RequestPushChallengeResponse, error) + // Some server endpoints (the "send message" endpoint, for example) may return + // a response indicating the client must complete a challenge before continuing. + // Clients may use this endpoint to provide proof of a completed challenge. + // If successful, the client may then continue their original operation. + HandleChallengeResponse(context.Context, *AnswerChallengeRequest) (*AnswerChallengeResponse, error) mustEmbedUnimplementedChallengeServer() } @@ -137,11 +74,8 @@ type ChallengeServer interface { // pointer dereference when methods are called. type UnimplementedChallengeServer struct{} -func (UnimplementedChallengeServer) AnswerChallenge(context.Context, *AnswerChallengeRequest) (*AnswerChallengeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method AnswerChallenge not implemented") -} -func (UnimplementedChallengeServer) RequestPushChallenge(context.Context, *RequestPushChallengeRequest) (*RequestPushChallengeResponse, error) { - return nil, status.Error(codes.Unimplemented, "method RequestPushChallenge not implemented") +func (UnimplementedChallengeServer) HandleChallengeResponse(context.Context, *AnswerChallengeRequest) (*AnswerChallengeResponse, error) { + return nil, status.Error(codes.Unimplemented, "method HandleChallengeResponse not implemented") } func (UnimplementedChallengeServer) mustEmbedUnimplementedChallengeServer() {} func (UnimplementedChallengeServer) testEmbeddedByValue() {} @@ -164,38 +98,20 @@ func RegisterChallengeServer(s grpc.ServiceRegistrar, srv ChallengeServer) { s.RegisterService(&Challenge_ServiceDesc, srv) } -func _Challenge_AnswerChallenge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _Challenge_HandleChallengeResponse_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AnswerChallengeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ChallengeServer).AnswerChallenge(ctx, in) + return srv.(ChallengeServer).HandleChallengeResponse(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Challenge_AnswerChallenge_FullMethodName, + FullMethod: Challenge_HandleChallengeResponse_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChallengeServer).AnswerChallenge(ctx, req.(*AnswerChallengeRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Challenge_RequestPushChallenge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RequestPushChallengeRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ChallengeServer).RequestPushChallenge(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Challenge_RequestPushChallenge_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ChallengeServer).RequestPushChallenge(ctx, req.(*RequestPushChallengeRequest)) + return srv.(ChallengeServer).HandleChallengeResponse(ctx, req.(*AnswerChallengeRequest)) } return interceptor(ctx, in, info, handler) } @@ -208,12 +124,8 @@ var Challenge_ServiceDesc = grpc.ServiceDesc{ HandlerType: (*ChallengeServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "AnswerChallenge", - Handler: _Challenge_AnswerChallenge_Handler, - }, - { - MethodName: "RequestPushChallenge", - Handler: _Challenge_RequestPushChallenge_Handler, + MethodName: "HandleChallengeResponse", + Handler: _Challenge_HandleChallengeResponse_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/pkg/signalmeow/protobuf/rpc/credentials/credentials.pb.go b/pkg/signalmeow/protobuf/rpc/credentials/credentials.pb.go index 5b4b0fb..569347f 100644 --- a/pkg/signalmeow/protobuf/rpc/credentials/credentials.pb.go +++ b/pkg/signalmeow/protobuf/rpc/credentials/credentials.pb.go @@ -11,7 +11,6 @@ package credentials import ( - common "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/common" _ "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/require" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -498,10 +497,10 @@ type GetGroupCredentialsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // A collection of credentials allowing the holder to anonymously // authenticate themselves for group-related actions - GroupCredentials []*common.ZkCredential `protobuf:"bytes,1,rep,name=group_credentials,json=groupCredentials,proto3" json:"group_credentials,omitempty"` + GroupCredentials []*GetGroupCredentialsResponse_CredentialAndRedemptionTime `protobuf:"bytes,1,rep,name=group_credentials,json=groupCredentials,proto3" json:"group_credentials,omitempty"` // A collection of credentials allowing the holder to read, update, and delete // group call links - CallLinkAuthCredentials []*common.ZkCredential `protobuf:"bytes,2,rep,name=call_link_auth_credentials,json=callLinkAuthCredentials,proto3" json:"call_link_auth_credentials,omitempty"` + CallLinkAuthCredentials []*GetGroupCredentialsResponse_CredentialAndRedemptionTime `protobuf:"bytes,2,rep,name=call_link_auth_credentials,json=callLinkAuthCredentials,proto3" json:"call_link_auth_credentials,omitempty"` // The phone number identifier for which the included credentials were // generated. Empty if the account does not have a phone number. Pni []byte `protobuf:"bytes,3,opt,name=pni,proto3" json:"pni,omitempty"` @@ -539,14 +538,14 @@ func (*GetGroupCredentialsResponse) Descriptor() ([]byte, []int) { return file_org_signal_chat_credentials_proto_rawDescGZIP(), []int{7} } -func (x *GetGroupCredentialsResponse) GetGroupCredentials() []*common.ZkCredential { +func (x *GetGroupCredentialsResponse) GetGroupCredentials() []*GetGroupCredentialsResponse_CredentialAndRedemptionTime { if x != nil { return x.GroupCredentials } return nil } -func (x *GetGroupCredentialsResponse) GetCallLinkAuthCredentials() []*common.ZkCredential { +func (x *GetGroupCredentialsResponse) GetCallLinkAuthCredentials() []*GetGroupCredentialsResponse_CredentialAndRedemptionTime { if x != nil { return x.CallLinkAuthCredentials } @@ -560,7 +559,7 @@ func (x *GetGroupCredentialsResponse) GetPni() []byte { return nil } -type GetCreateCallLinkCredentialRequest struct { +type GetCreateCallLinkCredentialsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // A zero-knowledge credential request CredentialRequest []byte `protobuf:"bytes,1,opt,name=credential_request,json=credentialRequest,proto3" json:"credential_request,omitempty"` @@ -568,20 +567,20 @@ type GetCreateCallLinkCredentialRequest struct { sizeCache protoimpl.SizeCache } -func (x *GetCreateCallLinkCredentialRequest) Reset() { - *x = GetCreateCallLinkCredentialRequest{} +func (x *GetCreateCallLinkCredentialsRequest) Reset() { + *x = GetCreateCallLinkCredentialsRequest{} mi := &file_org_signal_chat_credentials_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetCreateCallLinkCredentialRequest) String() string { +func (x *GetCreateCallLinkCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCreateCallLinkCredentialRequest) ProtoMessage() {} +func (*GetCreateCallLinkCredentialsRequest) ProtoMessage() {} -func (x *GetCreateCallLinkCredentialRequest) ProtoReflect() protoreflect.Message { +func (x *GetCreateCallLinkCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_credentials_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -593,41 +592,44 @@ func (x *GetCreateCallLinkCredentialRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetCreateCallLinkCredentialRequest.ProtoReflect.Descriptor instead. -func (*GetCreateCallLinkCredentialRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetCreateCallLinkCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetCreateCallLinkCredentialsRequest) Descriptor() ([]byte, []int) { return file_org_signal_chat_credentials_proto_rawDescGZIP(), []int{8} } -func (x *GetCreateCallLinkCredentialRequest) GetCredentialRequest() []byte { +func (x *GetCreateCallLinkCredentialsRequest) GetCredentialRequest() []byte { if x != nil { return x.CredentialRequest } return nil } -type GetCreateCallLinkCredentialResponse struct { +type GetCreateCallLinkCredentialsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // A zero-knowledge credential that may be redeemed at or up to one day after // the given redemption time - Credential []byte `protobuf:"bytes,1,opt,name=credential,proto3" json:"credential,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Credential []byte `protobuf:"bytes,1,opt,name=credential,proto3" json:"credential,omitempty"` + // The earliest time, in seconds since the epoch, at which the associated + // credential may be redeemed + RedemptionTimeSeconds uint64 `protobuf:"varint,2,opt,name=redemption_time_seconds,json=redemptionTimeSeconds,proto3" json:"redemption_time_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetCreateCallLinkCredentialResponse) Reset() { - *x = GetCreateCallLinkCredentialResponse{} +func (x *GetCreateCallLinkCredentialsResponse) Reset() { + *x = GetCreateCallLinkCredentialsResponse{} mi := &file_org_signal_chat_credentials_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetCreateCallLinkCredentialResponse) String() string { +func (x *GetCreateCallLinkCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCreateCallLinkCredentialResponse) ProtoMessage() {} +func (*GetCreateCallLinkCredentialsResponse) ProtoMessage() {} -func (x *GetCreateCallLinkCredentialResponse) ProtoReflect() protoreflect.Message { +func (x *GetCreateCallLinkCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_credentials_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -639,23 +641,84 @@ func (x *GetCreateCallLinkCredentialResponse) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use GetCreateCallLinkCredentialResponse.ProtoReflect.Descriptor instead. -func (*GetCreateCallLinkCredentialResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetCreateCallLinkCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetCreateCallLinkCredentialsResponse) Descriptor() ([]byte, []int) { return file_org_signal_chat_credentials_proto_rawDescGZIP(), []int{9} } -func (x *GetCreateCallLinkCredentialResponse) GetCredential() []byte { +func (x *GetCreateCallLinkCredentialsResponse) GetCredential() []byte { if x != nil { return x.Credential } return nil } +func (x *GetCreateCallLinkCredentialsResponse) GetRedemptionTimeSeconds() uint64 { + if x != nil { + return x.RedemptionTimeSeconds + } + return 0 +} + +// A zero-knowledge credential that may be redeemed at or up to one day after +// the given redemption time +type GetGroupCredentialsResponse_CredentialAndRedemptionTime struct { + state protoimpl.MessageState `protogen:"open.v1"` + Credential []byte `protobuf:"bytes,1,opt,name=credential,proto3" json:"credential,omitempty"` + RedemptionTimeSeconds uint64 `protobuf:"varint,2,opt,name=redemption_time_seconds,json=redemptionTimeSeconds,proto3" json:"redemption_time_seconds,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetGroupCredentialsResponse_CredentialAndRedemptionTime) Reset() { + *x = GetGroupCredentialsResponse_CredentialAndRedemptionTime{} + mi := &file_org_signal_chat_credentials_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetGroupCredentialsResponse_CredentialAndRedemptionTime) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGroupCredentialsResponse_CredentialAndRedemptionTime) ProtoMessage() {} + +func (x *GetGroupCredentialsResponse_CredentialAndRedemptionTime) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_credentials_proto_msgTypes[11] + 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 GetGroupCredentialsResponse_CredentialAndRedemptionTime.ProtoReflect.Descriptor instead. +func (*GetGroupCredentialsResponse_CredentialAndRedemptionTime) Descriptor() ([]byte, []int) { + return file_org_signal_chat_credentials_proto_rawDescGZIP(), []int{7, 0} +} + +func (x *GetGroupCredentialsResponse_CredentialAndRedemptionTime) GetCredential() []byte { + if x != nil { + return x.Credential + } + return nil +} + +func (x *GetGroupCredentialsResponse_CredentialAndRedemptionTime) GetRedemptionTimeSeconds() uint64 { + if x != nil { + return x.RedemptionTimeSeconds + } + return 0 +} + var File_org_signal_chat_credentials_proto protoreflect.FileDescriptor const file_org_signal_chat_credentials_proto_rawDesc = "" + "\n" + - "!org/signal/chat/credentials.proto\x12\x1borg.signal.chat.credentials\x1a\x1corg/signal/chat/common.proto\x1a\x1dorg/signal/chat/require.proto\"\x82\x01\n" + + "!org/signal/chat/credentials.proto\x12\x1borg.signal.chat.credentials\x1a\x1dorg/signal/chat/require.proto\"\x82\x01\n" + "$GetExternalServiceCredentialsRequest\x12Z\n" + "\x0fexternalService\x18\x01 \x01(\x0e20.org.signal.chat.credentials.ExternalServiceTypeR\x0fexternalService\"_\n" + "%GetExternalServiceCredentialsResponse\x12\x1a\n" + @@ -677,17 +740,23 @@ const file_org_signal_chat_credentials_proto_rawDesc = "" + "\x18certificate_without_e164\x18\x02 \x01(\fR\x16certificateWithoutE164\"\x8c\x01\n" + "\x1aGetGroupCredentialsRequest\x128\n" + "\x18redemption_start_seconds\x18\x01 \x01(\x04R\x16redemptionStartSeconds\x124\n" + - "\x16redemption_end_seconds\x18\x02 \x01(\x04R\x14redemptionEndSeconds\"\xe5\x01\n" + - "\x1bGetGroupCredentialsResponse\x12Q\n" + - "\x11group_credentials\x18\x01 \x03(\v2$.org.signal.chat.common.ZkCredentialR\x10groupCredentials\x12a\n" + - "\x1acall_link_auth_credentials\x18\x02 \x03(\v2$.org.signal.chat.common.ZkCredentialR\x17callLinkAuthCredentials\x12\x10\n" + - "\x03pni\x18\x03 \x01(\fR\x03pni\"S\n" + - "\"GetCreateCallLinkCredentialRequest\x12-\n" + - "\x12credential_request\x18\x01 \x01(\fR\x11credentialRequest\"E\n" + - "#GetCreateCallLinkCredentialResponse\x12\x1e\n" + + "\x16redemption_end_seconds\x18\x02 \x01(\x04R\x14redemptionEndSeconds\"\xbe\x03\n" + + "\x1bGetGroupCredentialsResponse\x12\x81\x01\n" + + "\x11group_credentials\x18\x01 \x03(\v2T.org.signal.chat.credentials.GetGroupCredentialsResponse.CredentialAndRedemptionTimeR\x10groupCredentials\x12\x91\x01\n" + + "\x1acall_link_auth_credentials\x18\x02 \x03(\v2T.org.signal.chat.credentials.GetGroupCredentialsResponse.CredentialAndRedemptionTimeR\x17callLinkAuthCredentials\x12\x10\n" + + "\x03pni\x18\x03 \x01(\fR\x03pni\x1au\n" + + "\x1bCredentialAndRedemptionTime\x12\x1e\n" + "\n" + "credential\x18\x01 \x01(\fR\n" + - "credential*\xc7\x01\n" + + "credential\x126\n" + + "\x17redemption_time_seconds\x18\x02 \x01(\x04R\x15redemptionTimeSeconds\"T\n" + + "#GetCreateCallLinkCredentialsRequest\x12-\n" + + "\x12credential_request\x18\x01 \x01(\fR\x11credentialRequest\"~\n" + + "$GetCreateCallLinkCredentialsResponse\x12\x1e\n" + + "\n" + + "credential\x18\x01 \x01(\fR\n" + + "credential\x126\n" + + "\x17redemption_time_seconds\x18\x02 \x01(\x04R\x15redemptionTimeSeconds*\xc7\x01\n" + "\x13ExternalServiceType\x12%\n" + "!EXTERNAL_SERVICE_TYPE_UNSPECIFIED\x10\x00\x12#\n" + "\x1fEXTERNAL_SERVICE_TYPE_DIRECTORY\x10\x01\x12\"\n" + @@ -698,12 +767,12 @@ const file_org_signal_chat_credentials_proto_rawDesc = "" + "\x1dAUTH_CHECK_RESULT_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17AUTH_CHECK_RESULT_MATCH\x10\x01\x12\x1e\n" + "\x1aAUTH_CHECK_RESULT_NO_MATCH\x10\x02\x12\x1d\n" + - "\x19AUTH_CHECK_RESULT_INVALID\x10\x032\x86\x05\n" + + "\x19AUTH_CHECK_RESULT_INVALID\x10\x032\x89\x05\n" + "\vCredentials\x12\xa8\x01\n" + "\x1dGetExternalServiceCredentials\x12A.org.signal.chat.credentials.GetExternalServiceCredentialsRequest\x1aB.org.signal.chat.credentials.GetExternalServiceCredentialsResponse\"\x00\x12\x93\x01\n" + "\x16GetDeliveryCertificate\x12:.org.signal.chat.credentials.GetDeliveryCertificateRequest\x1a;.org.signal.chat.credentials.GetDeliveryCertificateResponse\"\x00\x12\x8a\x01\n" + - "\x13GetGroupCredentials\x127.org.signal.chat.credentials.GetGroupCredentialsRequest\x1a8.org.signal.chat.credentials.GetGroupCredentialsResponse\"\x00\x12\xa2\x01\n" + - "\x1bGetCreateCallLinkCredential\x12?.org.signal.chat.credentials.GetCreateCallLinkCredentialRequest\x1a@.org.signal.chat.credentials.GetCreateCallLinkCredentialResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xa9\x01\n" + + "\x13GetGroupCredentials\x127.org.signal.chat.credentials.GetGroupCredentialsRequest\x1a8.org.signal.chat.credentials.GetGroupCredentialsResponse\"\x00\x12\xa5\x01\n" + + "\x1cGetCreateCallLinkCredentials\x12@.org.signal.chat.credentials.GetCreateCallLinkCredentialsRequest\x1aA.org.signal.chat.credentials.GetCreateCallLinkCredentialsResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xa9\x01\n" + "\x14CredentialsAnonymous\x12\x8a\x01\n" + "\x13CheckSvrCredentials\x127.org.signal.chat.credentials.CheckSvrCredentialsRequest\x1a8.org.signal.chat.credentials.CheckSvrCredentialsResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" @@ -720,7 +789,7 @@ func file_org_signal_chat_credentials_proto_rawDescGZIP() []byte { } var file_org_signal_chat_credentials_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_org_signal_chat_credentials_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_org_signal_chat_credentials_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_org_signal_chat_credentials_proto_goTypes = []any{ (ExternalServiceType)(0), // 0: org.signal.chat.credentials.ExternalServiceType (AuthCheckResult)(0), // 1: org.signal.chat.credentials.AuthCheckResult @@ -732,26 +801,26 @@ var file_org_signal_chat_credentials_proto_goTypes = []any{ (*GetDeliveryCertificateResponse)(nil), // 7: org.signal.chat.credentials.GetDeliveryCertificateResponse (*GetGroupCredentialsRequest)(nil), // 8: org.signal.chat.credentials.GetGroupCredentialsRequest (*GetGroupCredentialsResponse)(nil), // 9: org.signal.chat.credentials.GetGroupCredentialsResponse - (*GetCreateCallLinkCredentialRequest)(nil), // 10: org.signal.chat.credentials.GetCreateCallLinkCredentialRequest - (*GetCreateCallLinkCredentialResponse)(nil), // 11: org.signal.chat.credentials.GetCreateCallLinkCredentialResponse - nil, // 12: org.signal.chat.credentials.CheckSvrCredentialsResponse.MatchesEntry - (*common.ZkCredential)(nil), // 13: org.signal.chat.common.ZkCredential + (*GetCreateCallLinkCredentialsRequest)(nil), // 10: org.signal.chat.credentials.GetCreateCallLinkCredentialsRequest + (*GetCreateCallLinkCredentialsResponse)(nil), // 11: org.signal.chat.credentials.GetCreateCallLinkCredentialsResponse + nil, // 12: org.signal.chat.credentials.CheckSvrCredentialsResponse.MatchesEntry + (*GetGroupCredentialsResponse_CredentialAndRedemptionTime)(nil), // 13: org.signal.chat.credentials.GetGroupCredentialsResponse.CredentialAndRedemptionTime } var file_org_signal_chat_credentials_proto_depIdxs = []int32{ 0, // 0: org.signal.chat.credentials.GetExternalServiceCredentialsRequest.externalService:type_name -> org.signal.chat.credentials.ExternalServiceType 12, // 1: org.signal.chat.credentials.CheckSvrCredentialsResponse.matches:type_name -> org.signal.chat.credentials.CheckSvrCredentialsResponse.MatchesEntry - 13, // 2: org.signal.chat.credentials.GetGroupCredentialsResponse.group_credentials:type_name -> org.signal.chat.common.ZkCredential - 13, // 3: org.signal.chat.credentials.GetGroupCredentialsResponse.call_link_auth_credentials:type_name -> org.signal.chat.common.ZkCredential + 13, // 2: org.signal.chat.credentials.GetGroupCredentialsResponse.group_credentials:type_name -> org.signal.chat.credentials.GetGroupCredentialsResponse.CredentialAndRedemptionTime + 13, // 3: org.signal.chat.credentials.GetGroupCredentialsResponse.call_link_auth_credentials:type_name -> org.signal.chat.credentials.GetGroupCredentialsResponse.CredentialAndRedemptionTime 1, // 4: org.signal.chat.credentials.CheckSvrCredentialsResponse.MatchesEntry.value:type_name -> org.signal.chat.credentials.AuthCheckResult 2, // 5: org.signal.chat.credentials.Credentials.GetExternalServiceCredentials:input_type -> org.signal.chat.credentials.GetExternalServiceCredentialsRequest 6, // 6: org.signal.chat.credentials.Credentials.GetDeliveryCertificate:input_type -> org.signal.chat.credentials.GetDeliveryCertificateRequest 8, // 7: org.signal.chat.credentials.Credentials.GetGroupCredentials:input_type -> org.signal.chat.credentials.GetGroupCredentialsRequest - 10, // 8: org.signal.chat.credentials.Credentials.GetCreateCallLinkCredential:input_type -> org.signal.chat.credentials.GetCreateCallLinkCredentialRequest + 10, // 8: org.signal.chat.credentials.Credentials.GetCreateCallLinkCredentials:input_type -> org.signal.chat.credentials.GetCreateCallLinkCredentialsRequest 4, // 9: org.signal.chat.credentials.CredentialsAnonymous.CheckSvrCredentials:input_type -> org.signal.chat.credentials.CheckSvrCredentialsRequest 3, // 10: org.signal.chat.credentials.Credentials.GetExternalServiceCredentials:output_type -> org.signal.chat.credentials.GetExternalServiceCredentialsResponse 7, // 11: org.signal.chat.credentials.Credentials.GetDeliveryCertificate:output_type -> org.signal.chat.credentials.GetDeliveryCertificateResponse 9, // 12: org.signal.chat.credentials.Credentials.GetGroupCredentials:output_type -> org.signal.chat.credentials.GetGroupCredentialsResponse - 11, // 13: org.signal.chat.credentials.Credentials.GetCreateCallLinkCredential:output_type -> org.signal.chat.credentials.GetCreateCallLinkCredentialResponse + 11, // 13: org.signal.chat.credentials.Credentials.GetCreateCallLinkCredentials:output_type -> org.signal.chat.credentials.GetCreateCallLinkCredentialsResponse 5, // 14: org.signal.chat.credentials.CredentialsAnonymous.CheckSvrCredentials:output_type -> org.signal.chat.credentials.CheckSvrCredentialsResponse 10, // [10:15] is the sub-list for method output_type 5, // [5:10] is the sub-list for method input_type @@ -771,7 +840,7 @@ func file_org_signal_chat_credentials_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_credentials_proto_rawDesc), len(file_org_signal_chat_credentials_proto_rawDesc)), NumEnums: 2, - NumMessages: 11, + NumMessages: 12, NumExtensions: 0, NumServices: 2, }, diff --git a/pkg/signalmeow/protobuf/rpc/credentials/credentials_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/credentials/credentials_grpc.pb.go index 3eaac46..c7934c0 100644 --- a/pkg/signalmeow/protobuf/rpc/credentials/credentials_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/credentials/credentials_grpc.pb.go @@ -26,7 +26,7 @@ const ( Credentials_GetExternalServiceCredentials_FullMethodName = "/org.signal.chat.credentials.Credentials/GetExternalServiceCredentials" Credentials_GetDeliveryCertificate_FullMethodName = "/org.signal.chat.credentials.Credentials/GetDeliveryCertificate" Credentials_GetGroupCredentials_FullMethodName = "/org.signal.chat.credentials.Credentials/GetGroupCredentials" - Credentials_GetCreateCallLinkCredential_FullMethodName = "/org.signal.chat.credentials.Credentials/GetCreateCallLinkCredential" + Credentials_GetCreateCallLinkCredentials_FullMethodName = "/org.signal.chat.credentials.Credentials/GetCreateCallLinkCredentials" ) // CredentialsClient is the client API for Credentials service. @@ -47,7 +47,7 @@ type CredentialsClient interface { // actions. GetGroupCredentials(ctx context.Context, in *GetGroupCredentialsRequest, opts ...grpc.CallOption) (*GetGroupCredentialsResponse, error) // Generates zero-knowledge credentials for creating call links. - GetCreateCallLinkCredential(ctx context.Context, in *GetCreateCallLinkCredentialRequest, opts ...grpc.CallOption) (*GetCreateCallLinkCredentialResponse, error) + GetCreateCallLinkCredentials(ctx context.Context, in *GetCreateCallLinkCredentialsRequest, opts ...grpc.CallOption) (*GetCreateCallLinkCredentialsResponse, error) } type credentialsClient struct { @@ -88,10 +88,10 @@ func (c *credentialsClient) GetGroupCredentials(ctx context.Context, in *GetGrou return out, nil } -func (c *credentialsClient) GetCreateCallLinkCredential(ctx context.Context, in *GetCreateCallLinkCredentialRequest, opts ...grpc.CallOption) (*GetCreateCallLinkCredentialResponse, error) { +func (c *credentialsClient) GetCreateCallLinkCredentials(ctx context.Context, in *GetCreateCallLinkCredentialsRequest, opts ...grpc.CallOption) (*GetCreateCallLinkCredentialsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetCreateCallLinkCredentialResponse) - err := c.cc.Invoke(ctx, Credentials_GetCreateCallLinkCredential_FullMethodName, in, out, cOpts...) + out := new(GetCreateCallLinkCredentialsResponse) + err := c.cc.Invoke(ctx, Credentials_GetCreateCallLinkCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -116,7 +116,7 @@ type CredentialsServer interface { // actions. GetGroupCredentials(context.Context, *GetGroupCredentialsRequest) (*GetGroupCredentialsResponse, error) // Generates zero-knowledge credentials for creating call links. - GetCreateCallLinkCredential(context.Context, *GetCreateCallLinkCredentialRequest) (*GetCreateCallLinkCredentialResponse, error) + GetCreateCallLinkCredentials(context.Context, *GetCreateCallLinkCredentialsRequest) (*GetCreateCallLinkCredentialsResponse, error) mustEmbedUnimplementedCredentialsServer() } @@ -136,8 +136,8 @@ func (UnimplementedCredentialsServer) GetDeliveryCertificate(context.Context, *G func (UnimplementedCredentialsServer) GetGroupCredentials(context.Context, *GetGroupCredentialsRequest) (*GetGroupCredentialsResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetGroupCredentials not implemented") } -func (UnimplementedCredentialsServer) GetCreateCallLinkCredential(context.Context, *GetCreateCallLinkCredentialRequest) (*GetCreateCallLinkCredentialResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetCreateCallLinkCredential not implemented") +func (UnimplementedCredentialsServer) GetCreateCallLinkCredentials(context.Context, *GetCreateCallLinkCredentialsRequest) (*GetCreateCallLinkCredentialsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetCreateCallLinkCredentials not implemented") } func (UnimplementedCredentialsServer) mustEmbedUnimplementedCredentialsServer() {} func (UnimplementedCredentialsServer) testEmbeddedByValue() {} @@ -214,20 +214,20 @@ func _Credentials_GetGroupCredentials_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } -func _Credentials_GetCreateCallLinkCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetCreateCallLinkCredentialRequest) +func _Credentials_GetCreateCallLinkCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCreateCallLinkCredentialsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(CredentialsServer).GetCreateCallLinkCredential(ctx, in) + return srv.(CredentialsServer).GetCreateCallLinkCredentials(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Credentials_GetCreateCallLinkCredential_FullMethodName, + FullMethod: Credentials_GetCreateCallLinkCredentials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(CredentialsServer).GetCreateCallLinkCredential(ctx, req.(*GetCreateCallLinkCredentialRequest)) + return srv.(CredentialsServer).GetCreateCallLinkCredentials(ctx, req.(*GetCreateCallLinkCredentialsRequest)) } return interceptor(ctx, in, info, handler) } @@ -252,8 +252,8 @@ var Credentials_ServiceDesc = grpc.ServiceDesc{ Handler: _Credentials_GetGroupCredentials_Handler, }, { - MethodName: "GetCreateCallLinkCredential", - Handler: _Credentials_GetCreateCallLinkCredential_Handler, + MethodName: "GetCreateCallLinkCredentials", + Handler: _Credentials_GetCreateCallLinkCredentials_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/pkg/signalmeow/protobuf/rpc/donations/donations_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/donations/donations_grpc.pb.go index e2479bf..7868dd8 100644 --- a/pkg/signalmeow/protobuf/rpc/donations/donations_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/donations/donations_grpc.pb.go @@ -31,7 +31,7 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DonationsClient interface { - // Redeem a receipt acquired from Subscriptions.GetReceiptCredential + // Redeem a receipt acquired from Subscriptions.CreateSubscriptionReceiptCredentials // to add a badge to the account. After successful redemption, profile // responses will include the corresponding badge (if configured as visible) // until the expiration time on the receipt. @@ -74,7 +74,7 @@ func (c *donationsClient) CreateDonationPermit(ctx context.Context, in *CreateDo // All implementations must embed UnimplementedDonationsServer // for forward compatibility. type DonationsServer interface { - // Redeem a receipt acquired from Subscriptions.GetReceiptCredential + // Redeem a receipt acquired from Subscriptions.CreateSubscriptionReceiptCredentials // to add a badge to the account. After successful redemption, profile // responses will include the corresponding badge (if configured as visible) // until the expiration time on the receipt. diff --git a/pkg/signalmeow/protobuf/rpc/messages/messages.pb.go b/pkg/signalmeow/protobuf/rpc/messages/messages.pb.go index a91bbe6..2286bd3 100644 --- a/pkg/signalmeow/protobuf/rpc/messages/messages.pb.go +++ b/pkg/signalmeow/protobuf/rpc/messages/messages.pb.go @@ -1599,105 +1599,6 @@ func (x *ChallengeRequired) GetRetryAfterSeconds() uint64 { return 0 } -type ReportMessageRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The service identifier of the party that sent the offending message - SourceServiceIdentifier *common.ServiceIdentifier `protobuf:"bytes,1,opt,name=source_service_identifier,json=sourceServiceIdentifier,proto3" json:"source_service_identifier,omitempty"` - // The GUID of the offending message - MessageGuid []byte `protobuf:"bytes,2,opt,name=message_guid,json=messageGuid,proto3" json:"message_guid,omitempty"` - // The spam-reporting token attached to the offending message - ReportSpamToken []byte `protobuf:"bytes,3,opt,name=report_spam_token,json=reportSpamToken,proto3" json:"report_spam_token,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReportMessageRequest) Reset() { - *x = ReportMessageRequest{} - mi := &file_org_signal_chat_messages_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReportMessageRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportMessageRequest) ProtoMessage() {} - -func (x *ReportMessageRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_messages_proto_msgTypes[18] - 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 ReportMessageRequest.ProtoReflect.Descriptor instead. -func (*ReportMessageRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_messages_proto_rawDescGZIP(), []int{18} -} - -func (x *ReportMessageRequest) GetSourceServiceIdentifier() *common.ServiceIdentifier { - if x != nil { - return x.SourceServiceIdentifier - } - return nil -} - -func (x *ReportMessageRequest) GetMessageGuid() []byte { - if x != nil { - return x.MessageGuid - } - return nil -} - -func (x *ReportMessageRequest) GetReportSpamToken() []byte { - if x != nil { - return x.ReportSpamToken - } - return nil -} - -type ReportMessageResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReportMessageResponse) Reset() { - *x = ReportMessageResponse{} - mi := &file_org_signal_chat_messages_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReportMessageResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportMessageResponse) ProtoMessage() {} - -func (x *ReportMessageResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_messages_proto_msgTypes[19] - 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 ReportMessageResponse.ProtoReflect.Descriptor instead. -func (*ReportMessageResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_messages_proto_rawDescGZIP(), []int{19} -} - type GetMessagesRequest_GetMessageOptions struct { state protoimpl.MessageState `protogen:"open.v1"` // If present and true, the server will not deliver any messages with the @@ -1710,7 +1611,7 @@ type GetMessagesRequest_GetMessageOptions struct { func (x *GetMessagesRequest_GetMessageOptions) Reset() { *x = GetMessagesRequest_GetMessageOptions{} - mi := &file_org_signal_chat_messages_proto_msgTypes[20] + mi := &file_org_signal_chat_messages_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1722,7 +1623,7 @@ func (x *GetMessagesRequest_GetMessageOptions) String() string { func (*GetMessagesRequest_GetMessageOptions) ProtoMessage() {} func (x *GetMessagesRequest_GetMessageOptions) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_messages_proto_msgTypes[20] + mi := &file_org_signal_chat_messages_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1761,7 +1662,7 @@ type IndividualRecipientMessageBundle_Message struct { func (x *IndividualRecipientMessageBundle_Message) Reset() { *x = IndividualRecipientMessageBundle_Message{} - mi := &file_org_signal_chat_messages_proto_msgTypes[21] + mi := &file_org_signal_chat_messages_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1773,7 +1674,7 @@ func (x *IndividualRecipientMessageBundle_Message) String() string { func (*IndividualRecipientMessageBundle_Message) ProtoMessage() {} func (x *IndividualRecipientMessageBundle_Message) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_messages_proto_msgTypes[21] + mi := &file_org_signal_chat_messages_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1910,23 +1811,17 @@ const file_org_signal_chat_messages_proto_rawDesc = "" + "\vUNSPECIFIED\x10\x00\x12\v\n" + "\aCAPTCHA\x10\x01\x12\x12\n" + "\x0ePUSH_CHALLENGE\x10\x02B\x16\n" + - "\x14_retry_after_seconds\"\xd3\x01\n" + - "\x14ReportMessageRequest\x12e\n" + - "\x19source_service_identifier\x18\x01 \x01(\v2).org.signal.chat.common.ServiceIdentifierR\x17sourceServiceIdentifier\x12(\n" + - "\fmessage_guid\x18\x02 \x01(\fB\x05\xa2\x97\"\x01\x10R\vmessageGuid\x12*\n" + - "\x11report_spam_token\x18\x03 \x01(\fR\x0freportSpamToken\"\x17\n" + - "\x15ReportMessageResponse*z\n" + + "\x14_retry_after_seconds*z\n" + "\x0fSendMessageType\x12\x0f\n" + "\vUNSPECIFIED\x10\x00\x12\x12\n" + "\x0eDOUBLE_RATCHET\x10\x01\x12\x12\n" + "\x0ePREKEY_MESSAGE\x10\x02\x12\x15\n" + "\x11PLAINTEXT_CONTENT\x10\x03\x12\x17\n" + - "\x13UNIDENTIFIED_SENDER\x10\x042\x95\x04\n" + + "\x13UNIDENTIFIED_SENDER\x10\x042\xa1\x03\n" + "\bMessages\x12\x92\x01\n" + "\vSendMessage\x12?.org.signal.chat.messages.SendAuthenticatedSenderMessageRequest\x1a@.org.signal.chat.messages.SendMessageAuthenticatedSenderResponse\"\x00\x12\x87\x01\n" + "\x0fSendSyncMessage\x120.org.signal.chat.messages.SendSyncMessageRequest\x1a@.org.signal.chat.messages.SendMessageAuthenticatedSenderResponse\"\x00\x12p\n" + - "\vGetMessages\x12,.org.signal.chat.messages.GetMessagesRequest\x1a-.org.signal.chat.messages.GetMessagesResponse\"\x00(\x010\x01\x12r\n" + - "\rReportMessage\x12..org.signal.chat.messages.ReportMessageRequest\x1a/.org.signal.chat.messages.ReportMessageResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xc2\x04\n" + + "\vGetMessages\x12,.org.signal.chat.messages.GetMessagesRequest\x1a-.org.signal.chat.messages.GetMessagesResponse\"\x00(\x010\x01\x1a\x04\xc8\xd5\"\x012\xc2\x04\n" + "\x11MessagesAnonymous\x12\x87\x01\n" + "\x1aSendSingleRecipientMessage\x128.org.signal.chat.messages.SendSealedSenderMessageRequest\x1a-.org.signal.chat.messages.SendMessageResponse\"\x00\x12\x96\x01\n" + "\x19SendMultiRecipientMessage\x12:.org.signal.chat.messages.SendMultiRecipientMessageRequest\x1a;.org.signal.chat.messages.SendMultiRecipientMessageResponse\"\x00\x12o\n" + @@ -1946,7 +1841,7 @@ func file_org_signal_chat_messages_proto_rawDescGZIP() []byte { } var file_org_signal_chat_messages_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_org_signal_chat_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_org_signal_chat_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_org_signal_chat_messages_proto_goTypes = []any{ (SendMessageType)(0), // 0: org.signal.chat.messages.SendMessageType (ChallengeRequired_ChallengeType)(0), // 1: org.signal.chat.messages.ChallengeRequired.ChallengeType @@ -1968,72 +1863,67 @@ var file_org_signal_chat_messages_proto_goTypes = []any{ (*MismatchedDevices)(nil), // 17: org.signal.chat.messages.MismatchedDevices (*MultiRecipientMismatchedDevices)(nil), // 18: org.signal.chat.messages.MultiRecipientMismatchedDevices (*ChallengeRequired)(nil), // 19: org.signal.chat.messages.ChallengeRequired - (*ReportMessageRequest)(nil), // 20: org.signal.chat.messages.ReportMessageRequest - (*ReportMessageResponse)(nil), // 21: org.signal.chat.messages.ReportMessageResponse - (*GetMessagesRequest_GetMessageOptions)(nil), // 22: org.signal.chat.messages.GetMessagesRequest.GetMessageOptions - (*IndividualRecipientMessageBundle_Message)(nil), // 23: org.signal.chat.messages.IndividualRecipientMessageBundle.Message - nil, // 24: org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry - (*emptypb.Empty)(nil), // 25: google.protobuf.Empty - (*signalpb.Envelope)(nil), // 26: signalservice.Envelope - (*common.ServiceIdentifier)(nil), // 27: org.signal.chat.common.ServiceIdentifier - (*errors.NotFound)(nil), // 28: org.signal.chat.errors.NotFound - (*errors.FailedUnidentifiedAuthorization)(nil), // 29: org.signal.chat.errors.FailedUnidentifiedAuthorization + (*GetMessagesRequest_GetMessageOptions)(nil), // 20: org.signal.chat.messages.GetMessagesRequest.GetMessageOptions + (*IndividualRecipientMessageBundle_Message)(nil), // 21: org.signal.chat.messages.IndividualRecipientMessageBundle.Message + nil, // 22: org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry + (*emptypb.Empty)(nil), // 23: google.protobuf.Empty + (*signalpb.Envelope)(nil), // 24: signalservice.Envelope + (*common.ServiceIdentifier)(nil), // 25: org.signal.chat.common.ServiceIdentifier + (*errors.NotFound)(nil), // 26: org.signal.chat.errors.NotFound + (*errors.FailedUnidentifiedAuthorization)(nil), // 27: org.signal.chat.errors.FailedUnidentifiedAuthorization } var file_org_signal_chat_messages_proto_depIdxs = []int32{ - 22, // 0: org.signal.chat.messages.GetMessagesRequest.options:type_name -> org.signal.chat.messages.GetMessagesRequest.GetMessageOptions - 25, // 1: org.signal.chat.messages.GetMessagesStreamClosed.conflicting_stream:type_name -> google.protobuf.Empty - 26, // 2: org.signal.chat.messages.GetMessagesResponse.envelope:type_name -> signalservice.Envelope - 25, // 3: org.signal.chat.messages.GetMessagesResponse.queue_empty:type_name -> google.protobuf.Empty - 24, // 4: org.signal.chat.messages.IndividualRecipientMessageBundle.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry - 27, // 5: org.signal.chat.messages.SendAuthenticatedSenderMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier + 20, // 0: org.signal.chat.messages.GetMessagesRequest.options:type_name -> org.signal.chat.messages.GetMessagesRequest.GetMessageOptions + 23, // 1: org.signal.chat.messages.GetMessagesStreamClosed.conflicting_stream:type_name -> google.protobuf.Empty + 24, // 2: org.signal.chat.messages.GetMessagesResponse.envelope:type_name -> signalservice.Envelope + 23, // 3: org.signal.chat.messages.GetMessagesResponse.queue_empty:type_name -> google.protobuf.Empty + 22, // 4: org.signal.chat.messages.IndividualRecipientMessageBundle.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry + 25, // 5: org.signal.chat.messages.SendAuthenticatedSenderMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier 5, // 6: org.signal.chat.messages.SendAuthenticatedSenderMessageRequest.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle - 25, // 7: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.success:type_name -> google.protobuf.Empty + 23, // 7: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.success:type_name -> google.protobuf.Empty 17, // 8: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.mismatched_devices:type_name -> org.signal.chat.messages.MismatchedDevices 19, // 9: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.challenge_required:type_name -> org.signal.chat.messages.ChallengeRequired - 28, // 10: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.destination_not_found:type_name -> org.signal.chat.errors.NotFound + 26, // 10: org.signal.chat.messages.SendMessageAuthenticatedSenderResponse.destination_not_found:type_name -> org.signal.chat.errors.NotFound 5, // 11: org.signal.chat.messages.SendSyncMessageRequest.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle - 27, // 12: org.signal.chat.messages.SendSealedSenderMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier + 25, // 12: org.signal.chat.messages.SendSealedSenderMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier 5, // 13: org.signal.chat.messages.SendSealedSenderMessageRequest.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle - 25, // 14: org.signal.chat.messages.SendSealedSenderMessageRequest.unrestricted_access:type_name -> google.protobuf.Empty - 27, // 15: org.signal.chat.messages.SendStoryMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier + 23, // 14: org.signal.chat.messages.SendSealedSenderMessageRequest.unrestricted_access:type_name -> google.protobuf.Empty + 25, // 15: org.signal.chat.messages.SendStoryMessageRequest.destination:type_name -> org.signal.chat.common.ServiceIdentifier 5, // 16: org.signal.chat.messages.SendStoryMessageRequest.messages:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle - 25, // 17: org.signal.chat.messages.SendMessageResponse.success:type_name -> google.protobuf.Empty + 23, // 17: org.signal.chat.messages.SendMessageResponse.success:type_name -> google.protobuf.Empty 17, // 18: org.signal.chat.messages.SendMessageResponse.mismatched_devices:type_name -> org.signal.chat.messages.MismatchedDevices - 29, // 19: org.signal.chat.messages.SendMessageResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization - 28, // 20: org.signal.chat.messages.SendMessageResponse.destination_not_found:type_name -> org.signal.chat.errors.NotFound + 27, // 19: org.signal.chat.messages.SendMessageResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 26, // 20: org.signal.chat.messages.SendMessageResponse.destination_not_found:type_name -> org.signal.chat.errors.NotFound 12, // 21: org.signal.chat.messages.SendMultiRecipientMessageRequest.message:type_name -> org.signal.chat.messages.MultiRecipientMessage 12, // 22: org.signal.chat.messages.SendMultiRecipientStoryRequest.message:type_name -> org.signal.chat.messages.MultiRecipientMessage - 27, // 23: org.signal.chat.messages.MultiRecipientSuccess.unresolved_recipients:type_name -> org.signal.chat.common.ServiceIdentifier + 25, // 23: org.signal.chat.messages.MultiRecipientSuccess.unresolved_recipients:type_name -> org.signal.chat.common.ServiceIdentifier 15, // 24: org.signal.chat.messages.SendMultiRecipientMessageResponse.success:type_name -> org.signal.chat.messages.MultiRecipientSuccess 18, // 25: org.signal.chat.messages.SendMultiRecipientMessageResponse.mismatched_devices:type_name -> org.signal.chat.messages.MultiRecipientMismatchedDevices - 29, // 26: org.signal.chat.messages.SendMultiRecipientMessageResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization - 27, // 27: org.signal.chat.messages.MismatchedDevices.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 27, // 26: org.signal.chat.messages.SendMultiRecipientMessageResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 25, // 27: org.signal.chat.messages.MismatchedDevices.service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier 17, // 28: org.signal.chat.messages.MultiRecipientMismatchedDevices.mismatched_devices:type_name -> org.signal.chat.messages.MismatchedDevices 1, // 29: org.signal.chat.messages.ChallengeRequired.challenge_options:type_name -> org.signal.chat.messages.ChallengeRequired.ChallengeType - 27, // 30: org.signal.chat.messages.ReportMessageRequest.source_service_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 0, // 31: org.signal.chat.messages.IndividualRecipientMessageBundle.Message.type:type_name -> org.signal.chat.messages.SendMessageType - 23, // 32: org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry.value:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle.Message - 6, // 33: org.signal.chat.messages.Messages.SendMessage:input_type -> org.signal.chat.messages.SendAuthenticatedSenderMessageRequest - 8, // 34: org.signal.chat.messages.Messages.SendSyncMessage:input_type -> org.signal.chat.messages.SendSyncMessageRequest - 2, // 35: org.signal.chat.messages.Messages.GetMessages:input_type -> org.signal.chat.messages.GetMessagesRequest - 20, // 36: org.signal.chat.messages.Messages.ReportMessage:input_type -> org.signal.chat.messages.ReportMessageRequest - 9, // 37: org.signal.chat.messages.MessagesAnonymous.SendSingleRecipientMessage:input_type -> org.signal.chat.messages.SendSealedSenderMessageRequest - 13, // 38: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientMessage:input_type -> org.signal.chat.messages.SendMultiRecipientMessageRequest - 10, // 39: org.signal.chat.messages.MessagesAnonymous.SendStory:input_type -> org.signal.chat.messages.SendStoryMessageRequest - 14, // 40: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientStory:input_type -> org.signal.chat.messages.SendMultiRecipientStoryRequest - 7, // 41: org.signal.chat.messages.Messages.SendMessage:output_type -> org.signal.chat.messages.SendMessageAuthenticatedSenderResponse - 7, // 42: org.signal.chat.messages.Messages.SendSyncMessage:output_type -> org.signal.chat.messages.SendMessageAuthenticatedSenderResponse - 4, // 43: org.signal.chat.messages.Messages.GetMessages:output_type -> org.signal.chat.messages.GetMessagesResponse - 21, // 44: org.signal.chat.messages.Messages.ReportMessage:output_type -> org.signal.chat.messages.ReportMessageResponse - 11, // 45: org.signal.chat.messages.MessagesAnonymous.SendSingleRecipientMessage:output_type -> org.signal.chat.messages.SendMessageResponse - 16, // 46: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientMessage:output_type -> org.signal.chat.messages.SendMultiRecipientMessageResponse - 11, // 47: org.signal.chat.messages.MessagesAnonymous.SendStory:output_type -> org.signal.chat.messages.SendMessageResponse - 16, // 48: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientStory:output_type -> org.signal.chat.messages.SendMultiRecipientMessageResponse - 41, // [41:49] is the sub-list for method output_type - 33, // [33:41] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 0, // 30: org.signal.chat.messages.IndividualRecipientMessageBundle.Message.type:type_name -> org.signal.chat.messages.SendMessageType + 21, // 31: org.signal.chat.messages.IndividualRecipientMessageBundle.MessagesEntry.value:type_name -> org.signal.chat.messages.IndividualRecipientMessageBundle.Message + 6, // 32: org.signal.chat.messages.Messages.SendMessage:input_type -> org.signal.chat.messages.SendAuthenticatedSenderMessageRequest + 8, // 33: org.signal.chat.messages.Messages.SendSyncMessage:input_type -> org.signal.chat.messages.SendSyncMessageRequest + 2, // 34: org.signal.chat.messages.Messages.GetMessages:input_type -> org.signal.chat.messages.GetMessagesRequest + 9, // 35: org.signal.chat.messages.MessagesAnonymous.SendSingleRecipientMessage:input_type -> org.signal.chat.messages.SendSealedSenderMessageRequest + 13, // 36: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientMessage:input_type -> org.signal.chat.messages.SendMultiRecipientMessageRequest + 10, // 37: org.signal.chat.messages.MessagesAnonymous.SendStory:input_type -> org.signal.chat.messages.SendStoryMessageRequest + 14, // 38: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientStory:input_type -> org.signal.chat.messages.SendMultiRecipientStoryRequest + 7, // 39: org.signal.chat.messages.Messages.SendMessage:output_type -> org.signal.chat.messages.SendMessageAuthenticatedSenderResponse + 7, // 40: org.signal.chat.messages.Messages.SendSyncMessage:output_type -> org.signal.chat.messages.SendMessageAuthenticatedSenderResponse + 4, // 41: org.signal.chat.messages.Messages.GetMessages:output_type -> org.signal.chat.messages.GetMessagesResponse + 11, // 42: org.signal.chat.messages.MessagesAnonymous.SendSingleRecipientMessage:output_type -> org.signal.chat.messages.SendMessageResponse + 16, // 43: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientMessage:output_type -> org.signal.chat.messages.SendMultiRecipientMessageResponse + 11, // 44: org.signal.chat.messages.MessagesAnonymous.SendStory:output_type -> org.signal.chat.messages.SendMessageResponse + 16, // 45: org.signal.chat.messages.MessagesAnonymous.SendMultiRecipientStory:output_type -> org.signal.chat.messages.SendMultiRecipientMessageResponse + 39, // [39:46] is the sub-list for method output_type + 32, // [32:39] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_org_signal_chat_messages_proto_init() } @@ -2081,7 +1971,7 @@ func file_org_signal_chat_messages_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_messages_proto_rawDesc), len(file_org_signal_chat_messages_proto_rawDesc)), NumEnums: 2, - NumMessages: 23, + NumMessages: 21, NumExtensions: 0, NumServices: 2, }, diff --git a/pkg/signalmeow/protobuf/rpc/messages/messages_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/messages/messages_grpc.pb.go index 2545ef2..d9b0a6d 100644 --- a/pkg/signalmeow/protobuf/rpc/messages/messages_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/messages/messages_grpc.pb.go @@ -26,7 +26,6 @@ const ( Messages_SendMessage_FullMethodName = "/org.signal.chat.messages.Messages/SendMessage" Messages_SendSyncMessage_FullMethodName = "/org.signal.chat.messages.Messages/SendSyncMessage" Messages_GetMessages_FullMethodName = "/org.signal.chat.messages.Messages/GetMessages" - Messages_ReportMessage_FullMethodName = "/org.signal.chat.messages.Messages/ReportMessage" ) // MessagesClient is the client API for Messages service. @@ -59,8 +58,6 @@ type MessagesClient interface { // a STREAM_CLOSED error reason. A GetMessagesStreamClosed message will be // present in the error details. GetMessages(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[GetMessagesRequest, GetMessagesResponse], error) - // Reports a message as spam. - ReportMessage(ctx context.Context, in *ReportMessageRequest, opts ...grpc.CallOption) (*ReportMessageResponse, error) } type messagesClient struct { @@ -104,16 +101,6 @@ func (c *messagesClient) GetMessages(ctx context.Context, opts ...grpc.CallOptio // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type Messages_GetMessagesClient = grpc.BidiStreamingClient[GetMessagesRequest, GetMessagesResponse] -func (c *messagesClient) ReportMessage(ctx context.Context, in *ReportMessageRequest, opts ...grpc.CallOption) (*ReportMessageResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ReportMessageResponse) - err := c.cc.Invoke(ctx, Messages_ReportMessage_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - // MessagesServer is the server API for Messages service. // All implementations must embed UnimplementedMessagesServer // for forward compatibility. @@ -144,8 +131,6 @@ type MessagesServer interface { // a STREAM_CLOSED error reason. A GetMessagesStreamClosed message will be // present in the error details. GetMessages(grpc.BidiStreamingServer[GetMessagesRequest, GetMessagesResponse]) error - // Reports a message as spam. - ReportMessage(context.Context, *ReportMessageRequest) (*ReportMessageResponse, error) mustEmbedUnimplementedMessagesServer() } @@ -165,9 +150,6 @@ func (UnimplementedMessagesServer) SendSyncMessage(context.Context, *SendSyncMes func (UnimplementedMessagesServer) GetMessages(grpc.BidiStreamingServer[GetMessagesRequest, GetMessagesResponse]) error { return status.Error(codes.Unimplemented, "method GetMessages not implemented") } -func (UnimplementedMessagesServer) ReportMessage(context.Context, *ReportMessageRequest) (*ReportMessageResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ReportMessage not implemented") -} func (UnimplementedMessagesServer) mustEmbedUnimplementedMessagesServer() {} func (UnimplementedMessagesServer) testEmbeddedByValue() {} @@ -232,24 +214,6 @@ func _Messages_GetMessages_Handler(srv interface{}, stream grpc.ServerStream) er // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type Messages_GetMessagesServer = grpc.BidiStreamingServer[GetMessagesRequest, GetMessagesResponse] -func _Messages_ReportMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReportMessageRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MessagesServer).ReportMessage(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Messages_ReportMessage_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MessagesServer).ReportMessage(ctx, req.(*ReportMessageRequest)) - } - return interceptor(ctx, in, info, handler) -} - // Messages_ServiceDesc is the grpc.ServiceDesc for Messages service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -265,10 +229,6 @@ var Messages_ServiceDesc = grpc.ServiceDesc{ MethodName: "SendSyncMessage", Handler: _Messages_SendSyncMessage_Handler, }, - { - MethodName: "ReportMessage", - Handler: _Messages_ReportMessage_Handler, - }, }, Streams: []grpc.StreamDesc{ { diff --git a/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations.pb.go b/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations.pb.go index 1eec550..507d508 100644 --- a/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations.pb.go +++ b/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations.pb.go @@ -32,8 +32,8 @@ const ( // The amount is below the minimum for the currency. type AmountBelowMinimumError struct { state protoimpl.MessageState `protogen:"open.v1"` - // The minimum amount for the currency in the [currency's minor unit](https://docs.stripe.com/currencies#minor-units) - Minimum uint64 `protobuf:"varint,1,opt,name=minimum,proto3" json:"minimum,omitempty"` + // The minimum amount for the currency + Minimum string `protobuf:"bytes,1,opt,name=minimum,proto3" json:"minimum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -68,18 +68,18 @@ func (*AmountBelowMinimumError) Descriptor() ([]byte, []int) { return file_org_signal_chat_one_time_donations_proto_rawDescGZIP(), []int{0} } -func (x *AmountBelowMinimumError) GetMinimum() uint64 { +func (x *AmountBelowMinimumError) GetMinimum() string { if x != nil { return x.Minimum } - return 0 + return "" } // The SEPA Direct Debit amount exceeds the allowed maximum. type AmountAboveSepaLimitError struct { state protoimpl.MessageState `protogen:"open.v1"` - // The maximum amount for a SEPA transaction in the [currency's minor unit](https://docs.stripe.com/currencies#minor-units) - Maximum uint64 `protobuf:"varint,1,opt,name=maximum,proto3" json:"maximum,omitempty"` + // The maximum amount for a SEPA transaction + Maximum string `protobuf:"bytes,1,opt,name=maximum,proto3" json:"maximum,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -114,11 +114,11 @@ func (*AmountAboveSepaLimitError) Descriptor() ([]byte, []int) { return file_org_signal_chat_one_time_donations_proto_rawDescGZIP(), []int{1} } -func (x *AmountAboveSepaLimitError) GetMaximum() uint64 { +func (x *AmountAboveSepaLimitError) GetMaximum() string { if x != nil { return x.Maximum } - return 0 + return "" } type CreateBoostRequest struct { @@ -793,7 +793,7 @@ func (*ConfirmPayPalBoostResponse_UnsupportedLevel) isConfirmPayPalBoostResponse func (*ConfirmPayPalBoostResponse_ChargeFailure) isConfirmPayPalBoostResponse_Response() {} -type CreateBoostReceiptCredentialRequest struct { +type CreateBoostReceiptCredentialsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // a payment ID from the processor PaymentIntentId string `protobuf:"bytes,1,opt,name=payment_intent_id,json=paymentIntentId,proto3" json:"payment_intent_id,omitempty"` @@ -805,20 +805,20 @@ type CreateBoostReceiptCredentialRequest struct { sizeCache protoimpl.SizeCache } -func (x *CreateBoostReceiptCredentialRequest) Reset() { - *x = CreateBoostReceiptCredentialRequest{} +func (x *CreateBoostReceiptCredentialsRequest) Reset() { + *x = CreateBoostReceiptCredentialsRequest{} mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *CreateBoostReceiptCredentialRequest) String() string { +func (x *CreateBoostReceiptCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateBoostReceiptCredentialRequest) ProtoMessage() {} +func (*CreateBoostReceiptCredentialsRequest) ProtoMessage() {} -func (x *CreateBoostReceiptCredentialRequest) ProtoReflect() protoreflect.Message { +func (x *CreateBoostReceiptCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -830,60 +830,60 @@ func (x *CreateBoostReceiptCredentialRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use CreateBoostReceiptCredentialRequest.ProtoReflect.Descriptor instead. -func (*CreateBoostReceiptCredentialRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateBoostReceiptCredentialsRequest.ProtoReflect.Descriptor instead. +func (*CreateBoostReceiptCredentialsRequest) Descriptor() ([]byte, []int) { return file_org_signal_chat_one_time_donations_proto_rawDescGZIP(), []int{8} } -func (x *CreateBoostReceiptCredentialRequest) GetPaymentIntentId() string { +func (x *CreateBoostReceiptCredentialsRequest) GetPaymentIntentId() string { if x != nil { return x.PaymentIntentId } return "" } -func (x *CreateBoostReceiptCredentialRequest) GetReceiptCredentialRequest() []byte { +func (x *CreateBoostReceiptCredentialsRequest) GetReceiptCredentialRequest() []byte { if x != nil { return x.ReceiptCredentialRequest } return nil } -func (x *CreateBoostReceiptCredentialRequest) GetProcessor() subscriptions.PaymentProvider { +func (x *CreateBoostReceiptCredentialsRequest) GetProcessor() subscriptions.PaymentProvider { if x != nil { return x.Processor } return subscriptions.PaymentProvider(0) } -type CreateBoostReceiptCredentialResponse struct { +type CreateBoostReceiptCredentialsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Response: // - // *CreateBoostReceiptCredentialResponse_Result - // *CreateBoostReceiptCredentialResponse_PaymentStillProcessing - // *CreateBoostReceiptCredentialResponse_PaymentRequired - // *CreateBoostReceiptCredentialResponse_PaymentNotFound - // *CreateBoostReceiptCredentialResponse_ReceiptAlreadyIssued - Response isCreateBoostReceiptCredentialResponse_Response `protobuf_oneof:"response"` + // *CreateBoostReceiptCredentialsResponse_Result + // *CreateBoostReceiptCredentialsResponse_PaymentStillProcessing + // *CreateBoostReceiptCredentialsResponse_PaymentRequired + // *CreateBoostReceiptCredentialsResponse_PaymentNotFound + // *CreateBoostReceiptCredentialsResponse_ReceiptAlreadyIssued + Response isCreateBoostReceiptCredentialsResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *CreateBoostReceiptCredentialResponse) Reset() { - *x = CreateBoostReceiptCredentialResponse{} +func (x *CreateBoostReceiptCredentialsResponse) Reset() { + *x = CreateBoostReceiptCredentialsResponse{} mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *CreateBoostReceiptCredentialResponse) String() string { +func (x *CreateBoostReceiptCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateBoostReceiptCredentialResponse) ProtoMessage() {} +func (*CreateBoostReceiptCredentialsResponse) ProtoMessage() {} -func (x *CreateBoostReceiptCredentialResponse) ProtoReflect() protoreflect.Message { +func (x *CreateBoostReceiptCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -895,104 +895,104 @@ func (x *CreateBoostReceiptCredentialResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use CreateBoostReceiptCredentialResponse.ProtoReflect.Descriptor instead. -func (*CreateBoostReceiptCredentialResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateBoostReceiptCredentialsResponse.ProtoReflect.Descriptor instead. +func (*CreateBoostReceiptCredentialsResponse) Descriptor() ([]byte, []int) { return file_org_signal_chat_one_time_donations_proto_rawDescGZIP(), []int{9} } -func (x *CreateBoostReceiptCredentialResponse) GetResponse() isCreateBoostReceiptCredentialResponse_Response { +func (x *CreateBoostReceiptCredentialsResponse) GetResponse() isCreateBoostReceiptCredentialsResponse_Response { if x != nil { return x.Response } return nil } -func (x *CreateBoostReceiptCredentialResponse) GetResult() *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult { +func (x *CreateBoostReceiptCredentialsResponse) GetResult() *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult { if x != nil { - if x, ok := x.Response.(*CreateBoostReceiptCredentialResponse_Result); ok { + if x, ok := x.Response.(*CreateBoostReceiptCredentialsResponse_Result); ok { return x.Result } } return nil } -func (x *CreateBoostReceiptCredentialResponse) GetPaymentStillProcessing() *errors.FailedPrecondition { +func (x *CreateBoostReceiptCredentialsResponse) GetPaymentStillProcessing() *errors.FailedPrecondition { if x != nil { - if x, ok := x.Response.(*CreateBoostReceiptCredentialResponse_PaymentStillProcessing); ok { + if x, ok := x.Response.(*CreateBoostReceiptCredentialsResponse_PaymentStillProcessing); ok { return x.PaymentStillProcessing } } return nil } -func (x *CreateBoostReceiptCredentialResponse) GetPaymentRequired() *subscriptions.PaymentRequired { +func (x *CreateBoostReceiptCredentialsResponse) GetPaymentRequired() *subscriptions.PaymentRequired { if x != nil { - if x, ok := x.Response.(*CreateBoostReceiptCredentialResponse_PaymentRequired); ok { + if x, ok := x.Response.(*CreateBoostReceiptCredentialsResponse_PaymentRequired); ok { return x.PaymentRequired } } return nil } -func (x *CreateBoostReceiptCredentialResponse) GetPaymentNotFound() *errors.NotFound { +func (x *CreateBoostReceiptCredentialsResponse) GetPaymentNotFound() *errors.NotFound { if x != nil { - if x, ok := x.Response.(*CreateBoostReceiptCredentialResponse_PaymentNotFound); ok { + if x, ok := x.Response.(*CreateBoostReceiptCredentialsResponse_PaymentNotFound); ok { return x.PaymentNotFound } } return nil } -func (x *CreateBoostReceiptCredentialResponse) GetReceiptAlreadyIssued() *errors.FailedPrecondition { +func (x *CreateBoostReceiptCredentialsResponse) GetReceiptAlreadyIssued() *errors.FailedPrecondition { if x != nil { - if x, ok := x.Response.(*CreateBoostReceiptCredentialResponse_ReceiptAlreadyIssued); ok { + if x, ok := x.Response.(*CreateBoostReceiptCredentialsResponse_ReceiptAlreadyIssued); ok { return x.ReceiptAlreadyIssued } } return nil } -type isCreateBoostReceiptCredentialResponse_Response interface { - isCreateBoostReceiptCredentialResponse_Response() +type isCreateBoostReceiptCredentialsResponse_Response interface { + isCreateBoostReceiptCredentialsResponse_Response() } -type CreateBoostReceiptCredentialResponse_Result struct { - Result *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult `protobuf:"bytes,1,opt,name=result,proto3,oneof"` +type CreateBoostReceiptCredentialsResponse_Result struct { + Result *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult `protobuf:"bytes,1,opt,name=result,proto3,oneof"` } -type CreateBoostReceiptCredentialResponse_PaymentStillProcessing struct { +type CreateBoostReceiptCredentialsResponse_PaymentStillProcessing struct { // Payment is still processing; client should retry PaymentStillProcessing *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=payment_still_processing,json=paymentStillProcessing,proto3,oneof"` } -type CreateBoostReceiptCredentialResponse_PaymentRequired struct { +type CreateBoostReceiptCredentialsResponse_PaymentRequired struct { // Payment failed PaymentRequired *subscriptions.PaymentRequired `protobuf:"bytes,3,opt,name=payment_required,json=paymentRequired,proto3,oneof"` } -type CreateBoostReceiptCredentialResponse_PaymentNotFound struct { +type CreateBoostReceiptCredentialsResponse_PaymentNotFound struct { // Payment intent not found PaymentNotFound *errors.NotFound `protobuf:"bytes,4,opt,name=payment_not_found,json=paymentNotFound,proto3,oneof"` } -type CreateBoostReceiptCredentialResponse_ReceiptAlreadyIssued struct { +type CreateBoostReceiptCredentialsResponse_ReceiptAlreadyIssued struct { // A receipt credential was already issued for this payment ReceiptAlreadyIssued *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=receipt_already_issued,json=receiptAlreadyIssued,proto3,oneof"` } -func (*CreateBoostReceiptCredentialResponse_Result) isCreateBoostReceiptCredentialResponse_Response() { +func (*CreateBoostReceiptCredentialsResponse_Result) isCreateBoostReceiptCredentialsResponse_Response() { } -func (*CreateBoostReceiptCredentialResponse_PaymentStillProcessing) isCreateBoostReceiptCredentialResponse_Response() { +func (*CreateBoostReceiptCredentialsResponse_PaymentStillProcessing) isCreateBoostReceiptCredentialsResponse_Response() { } -func (*CreateBoostReceiptCredentialResponse_PaymentRequired) isCreateBoostReceiptCredentialResponse_Response() { +func (*CreateBoostReceiptCredentialsResponse_PaymentRequired) isCreateBoostReceiptCredentialsResponse_Response() { } -func (*CreateBoostReceiptCredentialResponse_PaymentNotFound) isCreateBoostReceiptCredentialResponse_Response() { +func (*CreateBoostReceiptCredentialsResponse_PaymentNotFound) isCreateBoostReceiptCredentialsResponse_Response() { } -func (*CreateBoostReceiptCredentialResponse_ReceiptAlreadyIssued) isCreateBoostReceiptCredentialResponse_Response() { +func (*CreateBoostReceiptCredentialsResponse_ReceiptAlreadyIssued) isCreateBoostReceiptCredentialsResponse_Response() { } type CreatePayPalBoostResponse_CreatePayPalBoostResult struct { @@ -1091,27 +1091,27 @@ func (x *ConfirmPayPalBoostResponse_ConfirmPayPalBoostResult) GetPaymentId() str return "" } -type CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult struct { +type CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult struct { state protoimpl.MessageState `protogen:"open.v1"` ReceiptCredentialResponse []byte `protobuf:"bytes,1,opt,name=receipt_credential_response,json=receiptCredentialResponse,proto3" json:"receipt_credential_response,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) Reset() { - *x = CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult{} +func (x *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) Reset() { + *x = CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult{} mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) String() string { +func (x *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) ProtoMessage() {} +func (*CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) ProtoMessage() {} -func (x *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) ProtoReflect() protoreflect.Message { +func (x *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_one_time_donations_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1123,12 +1123,12 @@ func (x *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult return mi.MessageOf(x) } -// Deprecated: Use CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult.ProtoReflect.Descriptor instead. -func (*CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult.ProtoReflect.Descriptor instead. +func (*CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) Descriptor() ([]byte, []int) { return file_org_signal_chat_one_time_donations_proto_rawDescGZIP(), []int{9, 0} } -func (x *CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult) GetReceiptCredentialResponse() []byte { +func (x *CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult) GetReceiptCredentialResponse() []byte { if x != nil { return x.ReceiptCredentialResponse } @@ -1141,9 +1141,9 @@ const file_org_signal_chat_one_time_donations_proto_rawDesc = "" + "\n" + "(org/signal/chat/one_time_donations.proto\x12\x18org.signal.chat.purchase\x1a\x1dorg/signal/chat/require.proto\x1a\x1corg/signal/chat/errors.proto\x1a\x19org/signal/chat/tag.proto\x1a#org/signal/chat/subscriptions.proto\"3\n" + "\x17AmountBelowMinimumError\x12\x18\n" + - "\aminimum\x18\x01 \x01(\x04R\aminimum\"5\n" + + "\aminimum\x18\x01 \x01(\tR\aminimum\"5\n" + "\x19AmountAboveSepaLimitError\x12\x18\n" + - "\amaximum\x18\x01 \x01(\x04R\amaximum\"\xfa\x01\n" + + "\amaximum\x18\x01 \x01(\tR\amaximum\"\xfa\x01\n" + "\x12CreateBoostRequest\x12!\n" + "\bcurrency\x18\x01 \x01(\tB\x05\xa2\x97\"\x01\x03R\bcurrency\x12\x1e\n" + "\x06amount\x18\x02 \x01(\x04B\x06\xb2\x97\"\x02\b\x01R\x06amount\x12\x1c\n" + @@ -1197,26 +1197,26 @@ const file_org_signal_chat_one_time_donations_proto_rawDesc = "" + "\n" + "payment_id\x18\x01 \x01(\tR\tpaymentIdB\n" + "\n" + - "\bresponse\"\xea\x01\n" + - "#CreateBoostReceiptCredentialRequest\x120\n" + + "\bresponse\"\xeb\x01\n" + + "$CreateBoostReceiptCredentialsRequest\x120\n" + "\x11payment_intent_id\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\x0fpaymentIntentId\x12B\n" + "\x1areceipt_credential_request\x18\x02 \x01(\fB\x04\x88\x97\"\x01R\x18receiptCredentialRequest\x12M\n" + - "\tprocessor\x18\x03 \x01(\x0e2).org.signal.chat.purchase.PaymentProviderB\x04\x90\x97\"\x01R\tprocessor\"\xf1\x05\n" + - "$CreateBoostReceiptCredentialResponse\x12{\n" + - "\x06result\x18\x01 \x01(\v2a.org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.CreateBoostReceiptCredentialResultH\x00R\x06result\x12\x84\x01\n" + + "\tprocessor\x18\x03 \x01(\x0e2).org.signal.chat.purchase.PaymentProviderB\x04\x90\x97\"\x01R\tprocessor\"\xf5\x05\n" + + "%CreateBoostReceiptCredentialsResponse\x12}\n" + + "\x06result\x18\x01 \x01(\v2c.org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.CreateBoostReceiptCredentialsResultH\x00R\x06result\x12\x84\x01\n" + "\x18payment_still_processing\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1c\xc2\xd5\"\x18payment_still_processingH\x00R\x16paymentStillProcessing\x12l\n" + "\x10payment_required\x18\x03 \x01(\v2).org.signal.chat.purchase.PaymentRequiredB\x14\xc2\xd5\"\x10payment_requiredH\x00R\x0fpaymentRequired\x12e\n" + "\x11payment_not_found\x18\x04 \x01(\v2 .org.signal.chat.errors.NotFoundB\x15\xc2\xd5\"\x11payment_not_foundH\x00R\x0fpaymentNotFound\x12~\n" + - "\x16receipt_already_issued\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1a\xc2\xd5\"\x16receipt_already_issuedH\x00R\x14receiptAlreadyIssued\x1ad\n" + - "\"CreateBoostReceiptCredentialResult\x12>\n" + + "\x16receipt_already_issued\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1a\xc2\xd5\"\x16receipt_already_issuedH\x00R\x14receiptAlreadyIssued\x1ae\n" + + "#CreateBoostReceiptCredentialsResult\x12>\n" + "\x1breceipt_credential_response\x18\x01 \x01(\fR\x19receiptCredentialResponseB\n" + "\n" + - "\bresponse2\xac\x04\n" + + "\bresponse2\xaf\x04\n" + "\x10OneTimeDonations\x12l\n" + "\vCreateBoost\x12,.org.signal.chat.purchase.CreateBoostRequest\x1a-.org.signal.chat.purchase.CreateBoostResponse\"\x00\x12~\n" + "\x11CreatePayPalBoost\x122.org.signal.chat.purchase.CreatePayPalBoostRequest\x1a3.org.signal.chat.purchase.CreatePayPalBoostResponse\"\x00\x12\x81\x01\n" + - "\x12ConfirmPayPalBoost\x123.org.signal.chat.purchase.ConfirmPayPalBoostRequest\x1a4.org.signal.chat.purchase.ConfirmPayPalBoostResponse\"\x00\x12\x9f\x01\n" + - "\x1cCreateBoostReceiptCredential\x12=.org.signal.chat.purchase.CreateBoostReceiptCredentialRequest\x1a>.org.signal.chat.purchase.CreateBoostReceiptCredentialResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" + "\x12ConfirmPayPalBoost\x123.org.signal.chat.purchase.ConfirmPayPalBoostRequest\x1a4.org.signal.chat.purchase.ConfirmPayPalBoostResponse\"\x00\x12\xa2\x01\n" + + "\x1dCreateBoostReceiptCredentials\x12>.org.signal.chat.purchase.CreateBoostReceiptCredentialsRequest\x1a?.org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" var ( file_org_signal_chat_one_time_donations_proto_rawDescOnce sync.Once @@ -1232,26 +1232,26 @@ func file_org_signal_chat_one_time_donations_proto_rawDescGZIP() []byte { var file_org_signal_chat_one_time_donations_proto_msgTypes = make([]protoimpl.MessageInfo, 13) var file_org_signal_chat_one_time_donations_proto_goTypes = []any{ - (*AmountBelowMinimumError)(nil), // 0: org.signal.chat.purchase.AmountBelowMinimumError - (*AmountAboveSepaLimitError)(nil), // 1: org.signal.chat.purchase.AmountAboveSepaLimitError - (*CreateBoostRequest)(nil), // 2: org.signal.chat.purchase.CreateBoostRequest - (*CreateBoostResponse)(nil), // 3: org.signal.chat.purchase.CreateBoostResponse - (*CreatePayPalBoostRequest)(nil), // 4: org.signal.chat.purchase.CreatePayPalBoostRequest - (*CreatePayPalBoostResponse)(nil), // 5: org.signal.chat.purchase.CreatePayPalBoostResponse - (*ConfirmPayPalBoostRequest)(nil), // 6: org.signal.chat.purchase.ConfirmPayPalBoostRequest - (*ConfirmPayPalBoostResponse)(nil), // 7: org.signal.chat.purchase.ConfirmPayPalBoostResponse - (*CreateBoostReceiptCredentialRequest)(nil), // 8: org.signal.chat.purchase.CreateBoostReceiptCredentialRequest - (*CreateBoostReceiptCredentialResponse)(nil), // 9: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse - (*CreatePayPalBoostResponse_CreatePayPalBoostResult)(nil), // 10: org.signal.chat.purchase.CreatePayPalBoostResponse.CreatePayPalBoostResult - (*ConfirmPayPalBoostResponse_ConfirmPayPalBoostResult)(nil), // 11: org.signal.chat.purchase.ConfirmPayPalBoostResponse.ConfirmPayPalBoostResult - (*CreateBoostReceiptCredentialResponse_CreateBoostReceiptCredentialResult)(nil), // 12: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.CreateBoostReceiptCredentialResult - (subscriptions.PaymentMethod)(0), // 13: org.signal.chat.purchase.PaymentMethod - (*errors.FailedPrecondition)(nil), // 14: org.signal.chat.errors.FailedPrecondition - (*errors.FailedZkAuthentication)(nil), // 15: org.signal.chat.errors.FailedZkAuthentication - (*subscriptions.ChargeFailure)(nil), // 16: org.signal.chat.purchase.ChargeFailure - (subscriptions.PaymentProvider)(0), // 17: org.signal.chat.purchase.PaymentProvider - (*subscriptions.PaymentRequired)(nil), // 18: org.signal.chat.purchase.PaymentRequired - (*errors.NotFound)(nil), // 19: org.signal.chat.errors.NotFound + (*AmountBelowMinimumError)(nil), // 0: org.signal.chat.purchase.AmountBelowMinimumError + (*AmountAboveSepaLimitError)(nil), // 1: org.signal.chat.purchase.AmountAboveSepaLimitError + (*CreateBoostRequest)(nil), // 2: org.signal.chat.purchase.CreateBoostRequest + (*CreateBoostResponse)(nil), // 3: org.signal.chat.purchase.CreateBoostResponse + (*CreatePayPalBoostRequest)(nil), // 4: org.signal.chat.purchase.CreatePayPalBoostRequest + (*CreatePayPalBoostResponse)(nil), // 5: org.signal.chat.purchase.CreatePayPalBoostResponse + (*ConfirmPayPalBoostRequest)(nil), // 6: org.signal.chat.purchase.ConfirmPayPalBoostRequest + (*ConfirmPayPalBoostResponse)(nil), // 7: org.signal.chat.purchase.ConfirmPayPalBoostResponse + (*CreateBoostReceiptCredentialsRequest)(nil), // 8: org.signal.chat.purchase.CreateBoostReceiptCredentialsRequest + (*CreateBoostReceiptCredentialsResponse)(nil), // 9: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse + (*CreatePayPalBoostResponse_CreatePayPalBoostResult)(nil), // 10: org.signal.chat.purchase.CreatePayPalBoostResponse.CreatePayPalBoostResult + (*ConfirmPayPalBoostResponse_ConfirmPayPalBoostResult)(nil), // 11: org.signal.chat.purchase.ConfirmPayPalBoostResponse.ConfirmPayPalBoostResult + (*CreateBoostReceiptCredentialsResponse_CreateBoostReceiptCredentialsResult)(nil), // 12: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.CreateBoostReceiptCredentialsResult + (subscriptions.PaymentMethod)(0), // 13: org.signal.chat.purchase.PaymentMethod + (*errors.FailedPrecondition)(nil), // 14: org.signal.chat.errors.FailedPrecondition + (*errors.FailedZkAuthentication)(nil), // 15: org.signal.chat.errors.FailedZkAuthentication + (*subscriptions.ChargeFailure)(nil), // 16: org.signal.chat.purchase.ChargeFailure + (subscriptions.PaymentProvider)(0), // 17: org.signal.chat.purchase.PaymentProvider + (*subscriptions.PaymentRequired)(nil), // 18: org.signal.chat.purchase.PaymentRequired + (*errors.NotFound)(nil), // 19: org.signal.chat.errors.NotFound } var file_org_signal_chat_one_time_donations_proto_depIdxs = []int32{ 13, // 0: org.signal.chat.purchase.CreateBoostRequest.payment_method:type_name -> org.signal.chat.purchase.PaymentMethod @@ -1270,20 +1270,20 @@ var file_org_signal_chat_one_time_donations_proto_depIdxs = []int32{ 14, // 13: org.signal.chat.purchase.ConfirmPayPalBoostResponse.unsupported_currency:type_name -> org.signal.chat.errors.FailedPrecondition 14, // 14: org.signal.chat.purchase.ConfirmPayPalBoostResponse.unsupported_level:type_name -> org.signal.chat.errors.FailedPrecondition 16, // 15: org.signal.chat.purchase.ConfirmPayPalBoostResponse.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure - 17, // 16: org.signal.chat.purchase.CreateBoostReceiptCredentialRequest.processor:type_name -> org.signal.chat.purchase.PaymentProvider - 12, // 17: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.result:type_name -> org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.CreateBoostReceiptCredentialResult - 14, // 18: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.payment_still_processing:type_name -> org.signal.chat.errors.FailedPrecondition - 18, // 19: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.payment_required:type_name -> org.signal.chat.purchase.PaymentRequired - 19, // 20: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.payment_not_found:type_name -> org.signal.chat.errors.NotFound - 14, // 21: org.signal.chat.purchase.CreateBoostReceiptCredentialResponse.receipt_already_issued:type_name -> org.signal.chat.errors.FailedPrecondition + 17, // 16: org.signal.chat.purchase.CreateBoostReceiptCredentialsRequest.processor:type_name -> org.signal.chat.purchase.PaymentProvider + 12, // 17: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.result:type_name -> org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.CreateBoostReceiptCredentialsResult + 14, // 18: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.payment_still_processing:type_name -> org.signal.chat.errors.FailedPrecondition + 18, // 19: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.payment_required:type_name -> org.signal.chat.purchase.PaymentRequired + 19, // 20: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.payment_not_found:type_name -> org.signal.chat.errors.NotFound + 14, // 21: org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse.receipt_already_issued:type_name -> org.signal.chat.errors.FailedPrecondition 2, // 22: org.signal.chat.purchase.OneTimeDonations.CreateBoost:input_type -> org.signal.chat.purchase.CreateBoostRequest 4, // 23: org.signal.chat.purchase.OneTimeDonations.CreatePayPalBoost:input_type -> org.signal.chat.purchase.CreatePayPalBoostRequest 6, // 24: org.signal.chat.purchase.OneTimeDonations.ConfirmPayPalBoost:input_type -> org.signal.chat.purchase.ConfirmPayPalBoostRequest - 8, // 25: org.signal.chat.purchase.OneTimeDonations.CreateBoostReceiptCredential:input_type -> org.signal.chat.purchase.CreateBoostReceiptCredentialRequest + 8, // 25: org.signal.chat.purchase.OneTimeDonations.CreateBoostReceiptCredentials:input_type -> org.signal.chat.purchase.CreateBoostReceiptCredentialsRequest 3, // 26: org.signal.chat.purchase.OneTimeDonations.CreateBoost:output_type -> org.signal.chat.purchase.CreateBoostResponse 5, // 27: org.signal.chat.purchase.OneTimeDonations.CreatePayPalBoost:output_type -> org.signal.chat.purchase.CreatePayPalBoostResponse 7, // 28: org.signal.chat.purchase.OneTimeDonations.ConfirmPayPalBoost:output_type -> org.signal.chat.purchase.ConfirmPayPalBoostResponse - 9, // 29: org.signal.chat.purchase.OneTimeDonations.CreateBoostReceiptCredential:output_type -> org.signal.chat.purchase.CreateBoostReceiptCredentialResponse + 9, // 29: org.signal.chat.purchase.OneTimeDonations.CreateBoostReceiptCredentials:output_type -> org.signal.chat.purchase.CreateBoostReceiptCredentialsResponse 26, // [26:30] is the sub-list for method output_type 22, // [22:26] is the sub-list for method input_type 22, // [22:22] is the sub-list for extension type_name @@ -1319,11 +1319,11 @@ func file_org_signal_chat_one_time_donations_proto_init() { (*ConfirmPayPalBoostResponse_ChargeFailure)(nil), } file_org_signal_chat_one_time_donations_proto_msgTypes[9].OneofWrappers = []any{ - (*CreateBoostReceiptCredentialResponse_Result)(nil), - (*CreateBoostReceiptCredentialResponse_PaymentStillProcessing)(nil), - (*CreateBoostReceiptCredentialResponse_PaymentRequired)(nil), - (*CreateBoostReceiptCredentialResponse_PaymentNotFound)(nil), - (*CreateBoostReceiptCredentialResponse_ReceiptAlreadyIssued)(nil), + (*CreateBoostReceiptCredentialsResponse_Result)(nil), + (*CreateBoostReceiptCredentialsResponse_PaymentStillProcessing)(nil), + (*CreateBoostReceiptCredentialsResponse_PaymentRequired)(nil), + (*CreateBoostReceiptCredentialsResponse_PaymentNotFound)(nil), + (*CreateBoostReceiptCredentialsResponse_ReceiptAlreadyIssued)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations_grpc.pb.go index f9c3986..e80afa8 100644 --- a/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/one_time_donations/one_time_donations_grpc.pb.go @@ -23,10 +23,10 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - OneTimeDonations_CreateBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreateBoost" - OneTimeDonations_CreatePayPalBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreatePayPalBoost" - OneTimeDonations_ConfirmPayPalBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/ConfirmPayPalBoost" - OneTimeDonations_CreateBoostReceiptCredential_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreateBoostReceiptCredential" + OneTimeDonations_CreateBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreateBoost" + OneTimeDonations_CreatePayPalBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreatePayPalBoost" + OneTimeDonations_ConfirmPayPalBoost_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/ConfirmPayPalBoost" + OneTimeDonations_CreateBoostReceiptCredentials_FullMethodName = "/org.signal.chat.purchase.OneTimeDonations/CreateBoostReceiptCredentials" ) // OneTimeDonationsClient is the client API for OneTimeDonations service. @@ -38,24 +38,17 @@ const ( // Configuration for one-time donations can be found in ProductConfiguration. type OneTimeDonationsClient interface { // Create a Stripe payment intent and return a client secret that can be used to complete the payment. - // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredential + // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredentials CreateBoost(ctx context.Context, in *CreateBoostRequest, opts ...grpc.CallOption) (*CreateBoostResponse, error) // Create a PayPal one-time payment. - // - // Once the payment is complete, call ConfirmPayPalBoost with the payment ID - // and token. - // - // The PayPal approval page presented to the user may be localized. Callers - // should set their language preferences via an "Accept-Language" header on - // the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Once the payment is complete, call ConfirmPayPalBoost with the payment ID and token CreatePayPalBoost(ctx context.Context, in *CreatePayPalBoostRequest, opts ...grpc.CallOption) (*CreatePayPalBoostResponse, error) // Confirm a PayPal one-time payment ConfirmPayPalBoost(ctx context.Context, in *ConfirmPayPalBoostRequest, opts ...grpc.CallOption) (*ConfirmPayPalBoostResponse, error) // Obtain a ZK receipt credential for a completed one-time donation payment. // The receipt credential can then be used to redeem the one-time donation entitlement // via Donations.RedeemReceipt - CreateBoostReceiptCredential(ctx context.Context, in *CreateBoostReceiptCredentialRequest, opts ...grpc.CallOption) (*CreateBoostReceiptCredentialResponse, error) + CreateBoostReceiptCredentials(ctx context.Context, in *CreateBoostReceiptCredentialsRequest, opts ...grpc.CallOption) (*CreateBoostReceiptCredentialsResponse, error) } type oneTimeDonationsClient struct { @@ -96,10 +89,10 @@ func (c *oneTimeDonationsClient) ConfirmPayPalBoost(ctx context.Context, in *Con return out, nil } -func (c *oneTimeDonationsClient) CreateBoostReceiptCredential(ctx context.Context, in *CreateBoostReceiptCredentialRequest, opts ...grpc.CallOption) (*CreateBoostReceiptCredentialResponse, error) { +func (c *oneTimeDonationsClient) CreateBoostReceiptCredentials(ctx context.Context, in *CreateBoostReceiptCredentialsRequest, opts ...grpc.CallOption) (*CreateBoostReceiptCredentialsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CreateBoostReceiptCredentialResponse) - err := c.cc.Invoke(ctx, OneTimeDonations_CreateBoostReceiptCredential_FullMethodName, in, out, cOpts...) + out := new(CreateBoostReceiptCredentialsResponse) + err := c.cc.Invoke(ctx, OneTimeDonations_CreateBoostReceiptCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -115,24 +108,17 @@ func (c *oneTimeDonationsClient) CreateBoostReceiptCredential(ctx context.Contex // Configuration for one-time donations can be found in ProductConfiguration. type OneTimeDonationsServer interface { // Create a Stripe payment intent and return a client secret that can be used to complete the payment. - // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredential + // Once the payment is complete, the paymentIntentId can be used with CreateBoostReceiptCredentials CreateBoost(context.Context, *CreateBoostRequest) (*CreateBoostResponse, error) // Create a PayPal one-time payment. - // - // Once the payment is complete, call ConfirmPayPalBoost with the payment ID - // and token. - // - // The PayPal approval page presented to the user may be localized. Callers - // should set their language preferences via an "Accept-Language" header on - // the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Once the payment is complete, call ConfirmPayPalBoost with the payment ID and token CreatePayPalBoost(context.Context, *CreatePayPalBoostRequest) (*CreatePayPalBoostResponse, error) // Confirm a PayPal one-time payment ConfirmPayPalBoost(context.Context, *ConfirmPayPalBoostRequest) (*ConfirmPayPalBoostResponse, error) // Obtain a ZK receipt credential for a completed one-time donation payment. // The receipt credential can then be used to redeem the one-time donation entitlement // via Donations.RedeemReceipt - CreateBoostReceiptCredential(context.Context, *CreateBoostReceiptCredentialRequest) (*CreateBoostReceiptCredentialResponse, error) + CreateBoostReceiptCredentials(context.Context, *CreateBoostReceiptCredentialsRequest) (*CreateBoostReceiptCredentialsResponse, error) mustEmbedUnimplementedOneTimeDonationsServer() } @@ -152,8 +138,8 @@ func (UnimplementedOneTimeDonationsServer) CreatePayPalBoost(context.Context, *C func (UnimplementedOneTimeDonationsServer) ConfirmPayPalBoost(context.Context, *ConfirmPayPalBoostRequest) (*ConfirmPayPalBoostResponse, error) { return nil, status.Error(codes.Unimplemented, "method ConfirmPayPalBoost not implemented") } -func (UnimplementedOneTimeDonationsServer) CreateBoostReceiptCredential(context.Context, *CreateBoostReceiptCredentialRequest) (*CreateBoostReceiptCredentialResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CreateBoostReceiptCredential not implemented") +func (UnimplementedOneTimeDonationsServer) CreateBoostReceiptCredentials(context.Context, *CreateBoostReceiptCredentialsRequest) (*CreateBoostReceiptCredentialsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method CreateBoostReceiptCredentials not implemented") } func (UnimplementedOneTimeDonationsServer) mustEmbedUnimplementedOneTimeDonationsServer() {} func (UnimplementedOneTimeDonationsServer) testEmbeddedByValue() {} @@ -230,20 +216,20 @@ func _OneTimeDonations_ConfirmPayPalBoost_Handler(srv interface{}, ctx context.C return interceptor(ctx, in, info, handler) } -func _OneTimeDonations_CreateBoostReceiptCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateBoostReceiptCredentialRequest) +func _OneTimeDonations_CreateBoostReceiptCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateBoostReceiptCredentialsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(OneTimeDonationsServer).CreateBoostReceiptCredential(ctx, in) + return srv.(OneTimeDonationsServer).CreateBoostReceiptCredentials(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: OneTimeDonations_CreateBoostReceiptCredential_FullMethodName, + FullMethod: OneTimeDonations_CreateBoostReceiptCredentials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(OneTimeDonationsServer).CreateBoostReceiptCredential(ctx, req.(*CreateBoostReceiptCredentialRequest)) + return srv.(OneTimeDonationsServer).CreateBoostReceiptCredentials(ctx, req.(*CreateBoostReceiptCredentialsRequest)) } return interceptor(ctx, in, info, handler) } @@ -268,8 +254,8 @@ var OneTimeDonations_ServiceDesc = grpc.ServiceDesc{ Handler: _OneTimeDonations_ConfirmPayPalBoost_Handler, }, { - MethodName: "CreateBoostReceiptCredential", - Handler: _OneTimeDonations_CreateBoostReceiptCredential_Handler, + MethodName: "CreateBoostReceiptCredentials", + Handler: _OneTimeDonations_CreateBoostReceiptCredentials_Handler, }, }, Streams: []grpc.StreamDesc{}, diff --git a/pkg/signalmeow/protobuf/rpc/product_configuration/product_configuration.pb.go b/pkg/signalmeow/protobuf/rpc/product_configuration/product_configuration.pb.go index 04aca75..bd1b669 100644 --- a/pkg/signalmeow/protobuf/rpc/product_configuration/product_configuration.pb.go +++ b/pkg/signalmeow/protobuf/rpc/product_configuration/product_configuration.pb.go @@ -71,8 +71,8 @@ type GetConfigurationResponse struct { BadgeLevels map[uint64]*LevelConfiguration `protobuf:"bytes,2,rep,name=badge_levels,json=badgeLevels,proto3" json:"badge_levels,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Configuration for backup subscription options Backup *BackupConfiguration `protobuf:"bytes,3,opt,name=backup,proto3" json:"backup,omitempty"` - // Maximum value of a one-time SEPA donation, in EUR [minor units](https://docs.stripe.com/currencies#minor-units) - SepaMaximumEuros uint64 `protobuf:"varint,4,opt,name=sepa_maximum_euros,json=sepaMaximumEuros,proto3" json:"sepa_maximum_euros,omitempty"` + // Maximum value of a one-time SEPA donation + SepaMaximumEuros string `protobuf:"bytes,4,opt,name=sepa_maximum_euros,json=sepaMaximumEuros,proto3" json:"sepa_maximum_euros,omitempty"` // Configuration for one-time Signal Login purchases Login *LoginConfiguration `protobuf:"bytes,5,opt,name=login,proto3" json:"login,omitempty"` unknownFields protoimpl.UnknownFields @@ -130,11 +130,11 @@ func (x *GetConfigurationResponse) GetBackup() *BackupConfiguration { return nil } -func (x *GetConfigurationResponse) GetSepaMaximumEuros() uint64 { +func (x *GetConfigurationResponse) GetSepaMaximumEuros() string { if x != nil { return x.SepaMaximumEuros } - return 0 + return "" } func (x *GetConfigurationResponse) GetLogin() *LoginConfiguration { @@ -146,11 +146,9 @@ func (x *GetConfigurationResponse) GetLogin() *LoginConfiguration { type AmountList struct { state protoimpl.MessageState `protogen:"open.v1"` - // Amount in the currency's minor unit. Unless otherwise noted, currencies are - // two-decimal: divide by 100 to get the value in the specified currency. - // Some currencies are [zero-decimal](https://docs.stripe.com/currencies#zero-decimal); - // for zero-decimal currencies no multiplication is required. - Amounts []uint64 `protobuf:"varint,1,rep,packed,name=amounts,proto3" json:"amounts,omitempty"` + // NOTE: this is a string instead of a numeric type because it is intended + // for display purposes only + Amounts []string `protobuf:"bytes,1,rep,name=amounts,proto3" json:"amounts,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -185,7 +183,7 @@ func (*AmountList) Descriptor() ([]byte, []int) { return file_org_signal_chat_product_configuration_proto_rawDescGZIP(), []int{2} } -func (x *AmountList) GetAmounts() []uint64 { +func (x *AmountList) GetAmounts() []string { if x != nil { return x.Amounts } @@ -194,16 +192,16 @@ func (x *AmountList) GetAmounts() []uint64 { type CurrencyConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` - // Minimum one-time donation in the currency's minor unit - Minimum uint64 `protobuf:"varint,1,opt,name=minimum,proto3" json:"minimum,omitempty"` + // Minimum one-time donation + // NOTE: this is a string instead of a numeric type because it is intended + // for display purposes only + Minimum string `protobuf:"bytes,1,opt,name=minimum,proto3" json:"minimum,omitempty"` // Map of one-time donation level IDs to suggested amounts OneTime map[uint64]*AmountList `protobuf:"bytes,2,rep,name=one_time,json=oneTime,proto3" json:"one_time,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // Map of subscription level IDs to the amount charged in the currency's minor - // unit - Subscription map[uint64]uint64 `protobuf:"bytes,3,rep,name=subscription,proto3" json:"subscription,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` - // Map of backup subscription level IDs to the amount charged in the - // currency's minor unit - BackupSubscription map[uint64]uint64 `protobuf:"bytes,4,rep,name=backup_subscription,json=backupSubscription,proto3" json:"backup_subscription,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + // Map of subscription level IDs to the amount charged + Subscription map[uint64]string `protobuf:"bytes,3,rep,name=subscription,proto3" json:"subscription,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Map of backup subscription level IDs to the amount charged + BackupSubscription map[uint64]string `protobuf:"bytes,4,rep,name=backup_subscription,json=backupSubscription,proto3" json:"backup_subscription,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` SupportedPaymentMethods []subscriptions.PaymentMethod `protobuf:"varint,5,rep,packed,name=supported_payment_methods,json=supportedPaymentMethods,proto3,enum=org.signal.chat.purchase.PaymentMethod" json:"supported_payment_methods,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -239,11 +237,11 @@ func (*CurrencyConfiguration) Descriptor() ([]byte, []int) { return file_org_signal_chat_product_configuration_proto_rawDescGZIP(), []int{3} } -func (x *CurrencyConfiguration) GetMinimum() uint64 { +func (x *CurrencyConfiguration) GetMinimum() string { if x != nil { return x.Minimum } - return 0 + return "" } func (x *CurrencyConfiguration) GetOneTime() map[uint64]*AmountList { @@ -253,14 +251,14 @@ func (x *CurrencyConfiguration) GetOneTime() map[uint64]*AmountList { return nil } -func (x *CurrencyConfiguration) GetSubscription() map[uint64]uint64 { +func (x *CurrencyConfiguration) GetSubscription() map[uint64]string { if x != nil { return x.Subscription } return nil } -func (x *CurrencyConfiguration) GetBackupSubscription() map[uint64]uint64 { +func (x *CurrencyConfiguration) GetBackupSubscription() map[uint64]string { if x != nil { return x.BackupSubscription } @@ -455,8 +453,6 @@ type LoginConfiguration struct { Level uint64 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` // The play billing productID associated with a Signal Login purchase PlayProductId string `protobuf:"bytes,2,opt,name=play_product_id,json=playProductId,proto3" json:"play_product_id,omitempty"` - // The play billing optionID to use to purchase a Signal Login - PlayOptionId string `protobuf:"bytes,4,opt,name=play_option_id,json=playOptionId,proto3" json:"play_option_id,omitempty"` // The App Store productID associated with a Signal Login purchase AppStoreProductId string `protobuf:"bytes,3,opt,name=app_store_product_id,json=appStoreProductId,proto3" json:"app_store_product_id,omitempty"` unknownFields protoimpl.UnknownFields @@ -507,13 +503,6 @@ func (x *LoginConfiguration) GetPlayProductId() string { return "" } -func (x *LoginConfiguration) GetPlayOptionId() string { - if x != nil { - return x.PlayOptionId - } - return "" -} - func (x *LoginConfiguration) GetAppStoreProductId() string { if x != nil { return x.AppStoreProductId @@ -533,7 +522,7 @@ const file_org_signal_chat_product_configuration_proto_rawDesc = "" + "currencies\x12f\n" + "\fbadge_levels\x18\x02 \x03(\v2C.org.signal.chat.purchase.GetConfigurationResponse.BadgeLevelsEntryR\vbadgeLevels\x12E\n" + "\x06backup\x18\x03 \x01(\v2-.org.signal.chat.purchase.BackupConfigurationR\x06backup\x12,\n" + - "\x12sepa_maximum_euros\x18\x04 \x01(\x04R\x10sepaMaximumEuros\x12B\n" + + "\x12sepa_maximum_euros\x18\x04 \x01(\tR\x10sepaMaximumEuros\x12B\n" + "\x05login\x18\x05 \x01(\v2,.org.signal.chat.purchase.LoginConfigurationR\x05login\x1an\n" + "\x0fCurrenciesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12E\n" + @@ -543,9 +532,9 @@ const file_org_signal_chat_product_configuration_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\v2,.org.signal.chat.purchase.LevelConfigurationR\x05value:\x028\x01\"&\n" + "\n" + "AmountList\x12\x18\n" + - "\aamounts\x18\x01 \x03(\x04R\aamounts\"\xba\x05\n" + + "\aamounts\x18\x01 \x03(\tR\aamounts\"\xba\x05\n" + "\x15CurrencyConfiguration\x12\x18\n" + - "\aminimum\x18\x01 \x01(\x04R\aminimum\x12W\n" + + "\aminimum\x18\x01 \x01(\tR\aminimum\x12W\n" + "\bone_time\x18\x02 \x03(\v2<.org.signal.chat.purchase.CurrencyConfiguration.OneTimeEntryR\aoneTime\x12e\n" + "\fsubscription\x18\x03 \x03(\v2A.org.signal.chat.purchase.CurrencyConfiguration.SubscriptionEntryR\fsubscription\x12x\n" + "\x13backup_subscription\x18\x04 \x03(\v2G.org.signal.chat.purchase.CurrencyConfiguration.BackupSubscriptionEntryR\x12backupSubscription\x12c\n" + @@ -555,10 +544,10 @@ const file_org_signal_chat_product_configuration_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\v2$.org.signal.chat.purchase.AmountListR\x05value:\x028\x01\x1a?\n" + "\x11SubscriptionEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x04R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x04R\x05value:\x028\x01\x1aE\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aE\n" + "\x17BackupSubscriptionEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x04R\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\x04R\x05value:\x028\x01\"\x85\x01\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x85\x01\n" + "\x12LevelConfiguration\x12\x19\n" + "\bbadge_id\x18\x01 \x01(\tR\abadgeId\x129\n" + "\x16badge_duration_seconds\x18\x02 \x01(\x04H\x00R\x14badgeDurationSeconds\x88\x01\x01B\x19\n" + @@ -572,11 +561,10 @@ const file_org_signal_chat_product_configuration_proto_rawDesc = "" + "\x14free_tier_media_days\x18\x02 \x01(\x04R\x11freeTierMediaDays\x1am\n" + "\vLevelsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x04R\x03key\x12H\n" + - "\x05value\x18\x02 \x01(\v22.org.signal.chat.purchase.BackupLevelConfigurationR\x05value:\x028\x01\"\xa9\x01\n" + + "\x05value\x18\x02 \x01(\v22.org.signal.chat.purchase.BackupLevelConfigurationR\x05value:\x028\x01\"\x83\x01\n" + "\x12LoginConfiguration\x12\x14\n" + "\x05level\x18\x01 \x01(\x04R\x05level\x12&\n" + - "\x0fplay_product_id\x18\x02 \x01(\tR\rplayProductId\x12$\n" + - "\x0eplay_option_id\x18\x04 \x01(\tR\fplayOptionId\x12/\n" + + "\x0fplay_product_id\x18\x02 \x01(\tR\rplayProductId\x12/\n" + "\x14app_store_product_id\x18\x03 \x01(\tR\x11appStoreProductId2\x99\x01\n" + "\x14ProductConfiguration\x12{\n" + "\x10GetConfiguration\x121.org.signal.chat.purchase.GetConfigurationRequest\x1a2.org.signal.chat.purchase.GetConfigurationResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" diff --git a/pkg/signalmeow/protobuf/rpc/profile/profile.pb.go b/pkg/signalmeow/protobuf/rpc/profile/profile.pb.go index 054b348..2c27314 100644 --- a/pkg/signalmeow/protobuf/rpc/profile/profile.pb.go +++ b/pkg/signalmeow/protobuf/rpc/profile/profile.pb.go @@ -206,105 +206,6 @@ func (x *SetProfileV1Request) GetPhoneNumberSharing() []byte { return nil } -type SetV1AvatarRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The profile version. Required. - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // The profile key commitment. Required if this is a new profile version. - Commitment []byte `protobuf:"bytes,2,opt,name=commitment,proto3" json:"commitment,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetV1AvatarRequest) Reset() { - *x = SetV1AvatarRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetV1AvatarRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetV1AvatarRequest) ProtoMessage() {} - -func (x *SetV1AvatarRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_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 SetV1AvatarRequest.ProtoReflect.Descriptor instead. -func (*SetV1AvatarRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{1} -} - -func (x *SetV1AvatarRequest) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *SetV1AvatarRequest) GetCommitment() []byte { - if x != nil { - return x.Commitment - } - return nil -} - -type SetV1AvatarResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // the policy and credential used by clients to upload an avatar to the CDN - Form *common.S3UploadForm `protobuf:"bytes,1,opt,name=form,proto3" json:"form,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SetV1AvatarResponse) Reset() { - *x = SetV1AvatarResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SetV1AvatarResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SetV1AvatarResponse) ProtoMessage() {} - -func (x *SetV1AvatarResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[2] - 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 SetV1AvatarResponse.ProtoReflect.Descriptor instead. -func (*SetV1AvatarResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{2} -} - -func (x *SetV1AvatarResponse) GetForm() *common.S3UploadForm { - if x != nil { - return x.Form - } - return nil -} - type SetProfileRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // The profile version. Required. @@ -341,7 +242,7 @@ type SetProfileRequest struct { func (x *SetProfileRequest) Reset() { *x = SetProfileRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[3] + mi := &file_org_signal_chat_profile_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -353,7 +254,7 @@ func (x *SetProfileRequest) String() string { func (*SetProfileRequest) ProtoMessage() {} func (x *SetProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[3] + mi := &file_org_signal_chat_profile_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -366,7 +267,7 @@ func (x *SetProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetProfileRequest.ProtoReflect.Descriptor instead. func (*SetProfileRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{3} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{1} } func (x *SetProfileRequest) GetVersion() []byte { @@ -435,7 +336,7 @@ type PaymentsForbiddenInRegion struct { func (x *PaymentsForbiddenInRegion) Reset() { *x = PaymentsForbiddenInRegion{} - mi := &file_org_signal_chat_profile_proto_msgTypes[4] + mi := &file_org_signal_chat_profile_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -447,7 +348,7 @@ func (x *PaymentsForbiddenInRegion) String() string { func (*PaymentsForbiddenInRegion) ProtoMessage() {} func (x *PaymentsForbiddenInRegion) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[4] + mi := &file_org_signal_chat_profile_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -460,7 +361,7 @@ func (x *PaymentsForbiddenInRegion) ProtoReflect() protoreflect.Message { // Deprecated: Use PaymentsForbiddenInRegion.ProtoReflect.Descriptor instead. func (*PaymentsForbiddenInRegion) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{4} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{2} } // Indicates that the account does not have the Profiles v2 capability, which @@ -473,7 +374,7 @@ type ProfilesV2CapabilityRequired struct { func (x *ProfilesV2CapabilityRequired) Reset() { *x = ProfilesV2CapabilityRequired{} - mi := &file_org_signal_chat_profile_proto_msgTypes[5] + mi := &file_org_signal_chat_profile_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -485,7 +386,7 @@ func (x *ProfilesV2CapabilityRequired) String() string { func (*ProfilesV2CapabilityRequired) ProtoMessage() {} func (x *ProfilesV2CapabilityRequired) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[5] + mi := &file_org_signal_chat_profile_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -498,7 +399,7 @@ func (x *ProfilesV2CapabilityRequired) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfilesV2CapabilityRequired.ProtoReflect.Descriptor instead. func (*ProfilesV2CapabilityRequired) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{5} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{3} } type SetProfileResult struct { @@ -515,7 +416,7 @@ type SetProfileResult struct { func (x *SetProfileResult) Reset() { *x = SetProfileResult{} - mi := &file_org_signal_chat_profile_proto_msgTypes[6] + mi := &file_org_signal_chat_profile_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +428,7 @@ func (x *SetProfileResult) String() string { func (*SetProfileResult) ProtoMessage() {} func (x *SetProfileResult) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[6] + mi := &file_org_signal_chat_profile_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +441,7 @@ func (x *SetProfileResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SetProfileResult.ProtoReflect.Descriptor instead. func (*SetProfileResult) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{6} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{4} } func (x *SetProfileResult) GetV1AvatarUploadForm() *common.S3UploadForm { @@ -558,6 +459,7 @@ type SetProfileResponse struct { // *SetProfileResponse_ExpectedDataWriteConflict // *SetProfileResponse_PaymentsForbiddenInRegion // *SetProfileResponse_ExpectedVersionWriteConflict + // *SetProfileResponse_ProfilesV2CapabilityRequired Response isSetProfileResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -565,7 +467,7 @@ type SetProfileResponse struct { func (x *SetProfileResponse) Reset() { *x = SetProfileResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[7] + mi := &file_org_signal_chat_profile_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -577,7 +479,7 @@ func (x *SetProfileResponse) String() string { func (*SetProfileResponse) ProtoMessage() {} func (x *SetProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[7] + mi := &file_org_signal_chat_profile_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -590,7 +492,7 @@ func (x *SetProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetProfileResponse.ProtoReflect.Descriptor instead. func (*SetProfileResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{7} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{5} } func (x *SetProfileResponse) GetResponse() isSetProfileResponse_Response { @@ -636,6 +538,15 @@ func (x *SetProfileResponse) GetExpectedVersionWriteConflict() *errors.FailedPre return nil } +func (x *SetProfileResponse) GetProfilesV2CapabilityRequired() *ProfilesV2CapabilityRequired { + if x != nil { + if x, ok := x.Response.(*SetProfileResponse_ProfilesV2CapabilityRequired); ok { + return x.ProfilesV2CapabilityRequired + } + } + return nil +} + type isSetProfileResponse_Response interface { isSetProfileResponse_Response() } @@ -663,6 +574,12 @@ type SetProfileResponse_ExpectedVersionWriteConflict struct { ExpectedVersionWriteConflict *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=expected_version_write_conflict,json=expectedVersionWriteConflict,proto3,oneof"` } +type SetProfileResponse_ProfilesV2CapabilityRequired struct { + // Because this is a temporary field during the migration, it has the highest + // field number without serialization overhead. This is purely aesthetic. + ProfilesV2CapabilityRequired *ProfilesV2CapabilityRequired `protobuf:"bytes,15,opt,name=profiles_v2_capability_required,json=profilesV2CapabilityRequired,proto3,oneof"` +} + func (*SetProfileResponse_Result) isSetProfileResponse_Response() {} func (*SetProfileResponse_ExpectedDataWriteConflict) isSetProfileResponse_Response() {} @@ -671,6 +588,8 @@ func (*SetProfileResponse_PaymentsForbiddenInRegion) isSetProfileResponse_Respon func (*SetProfileResponse_ExpectedVersionWriteConflict) isSetProfileResponse_Response() {} +func (*SetProfileResponse_ProfilesV2CapabilityRequired) isSetProfileResponse_Response() {} + type GetProfileRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // The ACI of the account for which to get profile data. @@ -687,7 +606,7 @@ type GetProfileRequest struct { func (x *GetProfileRequest) Reset() { *x = GetProfileRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[8] + mi := &file_org_signal_chat_profile_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -699,7 +618,7 @@ func (x *GetProfileRequest) String() string { func (*GetProfileRequest) ProtoMessage() {} func (x *GetProfileRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[8] + mi := &file_org_signal_chat_profile_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -712,7 +631,7 @@ func (x *GetProfileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileRequest.ProtoReflect.Descriptor instead. func (*GetProfileRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{8} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{6} } func (x *GetProfileRequest) GetAccountIdentifier() *common.ServiceIdentifier { @@ -751,7 +670,7 @@ type GetProfileAnonymousRequest struct { func (x *GetProfileAnonymousRequest) Reset() { *x = GetProfileAnonymousRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[9] + mi := &file_org_signal_chat_profile_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -763,7 +682,7 @@ func (x *GetProfileAnonymousRequest) String() string { func (*GetProfileAnonymousRequest) ProtoMessage() {} func (x *GetProfileAnonymousRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[9] + mi := &file_org_signal_chat_profile_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -776,7 +695,7 @@ func (x *GetProfileAnonymousRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileAnonymousRequest.ProtoReflect.Descriptor instead. func (*GetProfileAnonymousRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{9} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{7} } func (x *GetProfileAnonymousRequest) GetRequest() *GetProfileRequest { @@ -848,7 +767,7 @@ type AccountInfo struct { func (x *AccountInfo) Reset() { *x = AccountInfo{} - mi := &file_org_signal_chat_profile_proto_msgTypes[10] + mi := &file_org_signal_chat_profile_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -860,7 +779,7 @@ func (x *AccountInfo) String() string { func (*AccountInfo) ProtoMessage() {} func (x *AccountInfo) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[10] + mi := &file_org_signal_chat_profile_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -873,7 +792,7 @@ func (x *AccountInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use AccountInfo.ProtoReflect.Descriptor instead. func (*AccountInfo) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{10} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{8} } func (x *AccountInfo) GetIdentityKey() []byte { @@ -947,7 +866,7 @@ type ProfileResult struct { func (x *ProfileResult) Reset() { *x = ProfileResult{} - mi := &file_org_signal_chat_profile_proto_msgTypes[11] + mi := &file_org_signal_chat_profile_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +878,7 @@ func (x *ProfileResult) String() string { func (*ProfileResult) ProtoMessage() {} func (x *ProfileResult) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[11] + mi := &file_org_signal_chat_profile_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,7 +891,7 @@ func (x *ProfileResult) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileResult.ProtoReflect.Descriptor instead. func (*ProfileResult) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{11} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{9} } func (x *ProfileResult) GetData() []byte { @@ -1025,7 +944,7 @@ type LegacyProfileResult struct { func (x *LegacyProfileResult) Reset() { *x = LegacyProfileResult{} - mi := &file_org_signal_chat_profile_proto_msgTypes[12] + mi := &file_org_signal_chat_profile_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1037,7 +956,7 @@ func (x *LegacyProfileResult) String() string { func (*LegacyProfileResult) ProtoMessage() {} func (x *LegacyProfileResult) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[12] + mi := &file_org_signal_chat_profile_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1050,7 +969,7 @@ func (x *LegacyProfileResult) ProtoReflect() protoreflect.Message { // Deprecated: Use LegacyProfileResult.ProtoReflect.Descriptor instead. func (*LegacyProfileResult) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{12} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{10} } func (x *LegacyProfileResult) GetName() []byte { @@ -1117,7 +1036,7 @@ type GetProfileResponse struct { func (x *GetProfileResponse) Reset() { *x = GetProfileResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[13] + mi := &file_org_signal_chat_profile_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1129,7 +1048,7 @@ func (x *GetProfileResponse) String() string { func (*GetProfileResponse) ProtoMessage() {} func (x *GetProfileResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[13] + mi := &file_org_signal_chat_profile_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1142,7 +1061,7 @@ func (x *GetProfileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileResponse.ProtoReflect.Descriptor instead. func (*GetProfileResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{13} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{11} } func (x *GetProfileResponse) GetResponse() isGetProfileResponse_Response { @@ -1239,7 +1158,7 @@ type GetProfileAnonymousResponse struct { func (x *GetProfileAnonymousResponse) Reset() { *x = GetProfileAnonymousResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[14] + mi := &file_org_signal_chat_profile_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1251,7 +1170,7 @@ func (x *GetProfileAnonymousResponse) String() string { func (*GetProfileAnonymousResponse) ProtoMessage() {} func (x *GetProfileAnonymousResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[14] + mi := &file_org_signal_chat_profile_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1264,7 +1183,7 @@ func (x *GetProfileAnonymousResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetProfileAnonymousResponse.ProtoReflect.Descriptor instead. func (*GetProfileAnonymousResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{14} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{12} } func (x *GetProfileAnonymousResponse) GetResponse() isGetProfileAnonymousResponse_Response { @@ -1361,35 +1280,35 @@ func (*GetProfileAnonymousResponse_FailedUnidentifiedAuthorization) isGetProfile func (*GetProfileAnonymousResponse_ProfileV1) isGetProfileAnonymousResponse_Response() {} -type GetProfileKeyCredentialRequest struct { +type GetExpiringProfileKeyCredentialRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // The ACI of the account for which to get a profile key credential. AccountIdentifier *common.ServiceIdentifier `protobuf:"bytes,1,opt,name=account_identifier,json=accountIdentifier,proto3" json:"account_identifier,omitempty"` - // A zkgroup request for a profile key credential for the target’s current profile. + // A zkgroup request for a profile key credential. CredentialRequest []byte `protobuf:"bytes,2,opt,name=credential_request,json=credentialRequest,proto3" json:"credential_request,omitempty"` // The type of credential being requested. CredentialType CredentialType `protobuf:"varint,3,opt,name=credential_type,json=credentialType,proto3,enum=org.signal.chat.profile.CredentialType" json:"credential_type,omitempty"` - // The unidentified access key for the targeted account. - UnidentifiedAccessKey []byte `protobuf:"bytes,4,opt,name=unidentified_access_key,json=unidentifiedAccessKey,proto3" json:"unidentified_access_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // The profile version for which to generate a profile key credential. + Version []byte `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *GetProfileKeyCredentialRequest) Reset() { - *x = GetProfileKeyCredentialRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[15] +func (x *GetExpiringProfileKeyCredentialRequest) Reset() { + *x = GetExpiringProfileKeyCredentialRequest{} + mi := &file_org_signal_chat_profile_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetProfileKeyCredentialRequest) String() string { +func (x *GetExpiringProfileKeyCredentialRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProfileKeyCredentialRequest) ProtoMessage() {} +func (*GetExpiringProfileKeyCredentialRequest) ProtoMessage() {} -func (x *GetProfileKeyCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[15] +func (x *GetExpiringProfileKeyCredentialRequest) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,40 +1319,94 @@ func (x *GetProfileKeyCredentialRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProfileKeyCredentialRequest.ProtoReflect.Descriptor instead. -func (*GetProfileKeyCredentialRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{15} +// Deprecated: Use GetExpiringProfileKeyCredentialRequest.ProtoReflect.Descriptor instead. +func (*GetExpiringProfileKeyCredentialRequest) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{13} } -func (x *GetProfileKeyCredentialRequest) GetAccountIdentifier() *common.ServiceIdentifier { +func (x *GetExpiringProfileKeyCredentialRequest) GetAccountIdentifier() *common.ServiceIdentifier { if x != nil { return x.AccountIdentifier } return nil } -func (x *GetProfileKeyCredentialRequest) GetCredentialRequest() []byte { +func (x *GetExpiringProfileKeyCredentialRequest) GetCredentialRequest() []byte { if x != nil { return x.CredentialRequest } return nil } -func (x *GetProfileKeyCredentialRequest) GetCredentialType() CredentialType { +func (x *GetExpiringProfileKeyCredentialRequest) GetCredentialType() CredentialType { if x != nil { return x.CredentialType } return CredentialType_CREDENTIAL_TYPE_UNSPECIFIED } -func (x *GetProfileKeyCredentialRequest) GetUnidentifiedAccessKey() []byte { +func (x *GetExpiringProfileKeyCredentialRequest) GetVersion() []byte { + if x != nil { + return x.Version + } + return nil +} + +type GetExpiringProfileKeyCredentialAnonymousRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Contains the data necessary to request an expiring profile key credential. + Request *GetExpiringProfileKeyCredentialRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` + // The unidentified access key for the targeted account. + UnidentifiedAccessKey []byte `protobuf:"bytes,2,opt,name=unidentified_access_key,json=unidentifiedAccessKey,proto3" json:"unidentified_access_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetExpiringProfileKeyCredentialAnonymousRequest) Reset() { + *x = GetExpiringProfileKeyCredentialAnonymousRequest{} + mi := &file_org_signal_chat_profile_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetExpiringProfileKeyCredentialAnonymousRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExpiringProfileKeyCredentialAnonymousRequest) ProtoMessage() {} + +func (x *GetExpiringProfileKeyCredentialAnonymousRequest) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[14] + 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 GetExpiringProfileKeyCredentialAnonymousRequest.ProtoReflect.Descriptor instead. +func (*GetExpiringProfileKeyCredentialAnonymousRequest) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{14} +} + +func (x *GetExpiringProfileKeyCredentialAnonymousRequest) GetRequest() *GetExpiringProfileKeyCredentialRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *GetExpiringProfileKeyCredentialAnonymousRequest) GetUnidentifiedAccessKey() []byte { if x != nil { return x.UnidentifiedAccessKey } return nil } -type GetProfileKeyCredentialResult struct { +type GetExpiringProfileKeyCredentialResult struct { state protoimpl.MessageState `protogen:"open.v1"` // A zkgroup credential used by a client to prove that it has the profile key // of a targeted account. @@ -1442,21 +1415,21 @@ type GetProfileKeyCredentialResult struct { sizeCache protoimpl.SizeCache } -func (x *GetProfileKeyCredentialResult) Reset() { - *x = GetProfileKeyCredentialResult{} - mi := &file_org_signal_chat_profile_proto_msgTypes[16] +func (x *GetExpiringProfileKeyCredentialResult) Reset() { + *x = GetExpiringProfileKeyCredentialResult{} + mi := &file_org_signal_chat_profile_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetProfileKeyCredentialResult) String() string { +func (x *GetExpiringProfileKeyCredentialResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProfileKeyCredentialResult) ProtoMessage() {} +func (*GetExpiringProfileKeyCredentialResult) ProtoMessage() {} -func (x *GetProfileKeyCredentialResult) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[16] +func (x *GetExpiringProfileKeyCredentialResult) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1467,45 +1440,45 @@ func (x *GetProfileKeyCredentialResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProfileKeyCredentialResult.ProtoReflect.Descriptor instead. -func (*GetProfileKeyCredentialResult) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{16} +// Deprecated: Use GetExpiringProfileKeyCredentialResult.ProtoReflect.Descriptor instead. +func (*GetExpiringProfileKeyCredentialResult) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{15} } -func (x *GetProfileKeyCredentialResult) GetProfileKeyCredential() []byte { +func (x *GetExpiringProfileKeyCredentialResult) GetProfileKeyCredential() []byte { if x != nil { return x.ProfileKeyCredential } return nil } -type GetProfileKeyCredentialResponse struct { +type GetExpiringProfileKeyCredentialAnonymousResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Response: // - // *GetProfileKeyCredentialResponse_Result - // *GetProfileKeyCredentialResponse_NotFound - // *GetProfileKeyCredentialResponse_FailedUnidentifiedAuthorization - Response isGetProfileKeyCredentialResponse_Response `protobuf_oneof:"response"` + // *GetExpiringProfileKeyCredentialAnonymousResponse_Result + // *GetExpiringProfileKeyCredentialAnonymousResponse_NotFound + // *GetExpiringProfileKeyCredentialAnonymousResponse_FailedUnidentifiedAuthorization + Response isGetExpiringProfileKeyCredentialAnonymousResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetProfileKeyCredentialResponse) Reset() { - *x = GetProfileKeyCredentialResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[17] +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) Reset() { + *x = GetExpiringProfileKeyCredentialAnonymousResponse{} + mi := &file_org_signal_chat_profile_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetProfileKeyCredentialResponse) String() string { +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProfileKeyCredentialResponse) ProtoMessage() {} +func (*GetExpiringProfileKeyCredentialAnonymousResponse) ProtoMessage() {} -func (x *GetProfileKeyCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[17] +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1516,94 +1489,92 @@ func (x *GetProfileKeyCredentialResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProfileKeyCredentialResponse.ProtoReflect.Descriptor instead. -func (*GetProfileKeyCredentialResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{17} +// Deprecated: Use GetExpiringProfileKeyCredentialAnonymousResponse.ProtoReflect.Descriptor instead. +func (*GetExpiringProfileKeyCredentialAnonymousResponse) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{16} } -func (x *GetProfileKeyCredentialResponse) GetResponse() isGetProfileKeyCredentialResponse_Response { +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) GetResponse() isGetExpiringProfileKeyCredentialAnonymousResponse_Response { if x != nil { return x.Response } return nil } -func (x *GetProfileKeyCredentialResponse) GetResult() *GetProfileKeyCredentialResult { +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) GetResult() *GetExpiringProfileKeyCredentialResult { if x != nil { - if x, ok := x.Response.(*GetProfileKeyCredentialResponse_Result); ok { + if x, ok := x.Response.(*GetExpiringProfileKeyCredentialAnonymousResponse_Result); ok { return x.Result } } return nil } -func (x *GetProfileKeyCredentialResponse) GetNotFound() *errors.NotFound { +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) GetNotFound() *errors.NotFound { if x != nil { - if x, ok := x.Response.(*GetProfileKeyCredentialResponse_NotFound); ok { + if x, ok := x.Response.(*GetExpiringProfileKeyCredentialAnonymousResponse_NotFound); ok { return x.NotFound } } return nil } -func (x *GetProfileKeyCredentialResponse) GetFailedUnidentifiedAuthorization() *errors.FailedUnidentifiedAuthorization { +func (x *GetExpiringProfileKeyCredentialAnonymousResponse) GetFailedUnidentifiedAuthorization() *errors.FailedUnidentifiedAuthorization { if x != nil { - if x, ok := x.Response.(*GetProfileKeyCredentialResponse_FailedUnidentifiedAuthorization); ok { + if x, ok := x.Response.(*GetExpiringProfileKeyCredentialAnonymousResponse_FailedUnidentifiedAuthorization); ok { return x.FailedUnidentifiedAuthorization } } return nil } -type isGetProfileKeyCredentialResponse_Response interface { - isGetProfileKeyCredentialResponse_Response() +type isGetExpiringProfileKeyCredentialAnonymousResponse_Response interface { + isGetExpiringProfileKeyCredentialAnonymousResponse_Response() } -type GetProfileKeyCredentialResponse_Result struct { - Result *GetProfileKeyCredentialResult `protobuf:"bytes,1,opt,name=result,proto3,oneof"` +type GetExpiringProfileKeyCredentialAnonymousResponse_Result struct { + Result *GetExpiringProfileKeyCredentialResult `protobuf:"bytes,1,opt,name=result,proto3,oneof"` } -type GetProfileKeyCredentialResponse_NotFound struct { - // Indicates the account was not found or the account's current profile was - // not found. Use `AccountsAnonymous.CheckAccountExistence` for a canonical - // account existence check. +type GetExpiringProfileKeyCredentialAnonymousResponse_NotFound struct { NotFound *errors.NotFound `protobuf:"bytes,2,opt,name=not_found,json=notFound,proto3,oneof"` } -type GetProfileKeyCredentialResponse_FailedUnidentifiedAuthorization struct { - // The provided unidentified access key was incorrect +type GetExpiringProfileKeyCredentialAnonymousResponse_FailedUnidentifiedAuthorization struct { FailedUnidentifiedAuthorization *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=failed_unidentified_authorization,json=failedUnidentifiedAuthorization,proto3,oneof"` } -func (*GetProfileKeyCredentialResponse_Result) isGetProfileKeyCredentialResponse_Response() {} - -func (*GetProfileKeyCredentialResponse_NotFound) isGetProfileKeyCredentialResponse_Response() {} - -func (*GetProfileKeyCredentialResponse_FailedUnidentifiedAuthorization) isGetProfileKeyCredentialResponse_Response() { +func (*GetExpiringProfileKeyCredentialAnonymousResponse_Result) isGetExpiringProfileKeyCredentialAnonymousResponse_Response() { } -type GetAvatarCredentialRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AvatarCredentialRequest []byte `protobuf:"bytes,1,opt,name=avatar_credential_request,json=avatarCredentialRequest,proto3" json:"avatar_credential_request,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +func (*GetExpiringProfileKeyCredentialAnonymousResponse_NotFound) isGetExpiringProfileKeyCredentialAnonymousResponse_Response() { } -func (x *GetAvatarCredentialRequest) Reset() { - *x = GetAvatarCredentialRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[18] +func (*GetExpiringProfileKeyCredentialAnonymousResponse_FailedUnidentifiedAuthorization) isGetExpiringProfileKeyCredentialAnonymousResponse_Response() { +} + +type GetAvatarCredentialsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + AvatarCredentialsRequest []byte `protobuf:"bytes,1,opt,name=avatar_credentials_request,json=avatarCredentialsRequest,proto3" json:"avatar_credentials_request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetAvatarCredentialsRequest) Reset() { + *x = GetAvatarCredentialsRequest{} + mi := &file_org_signal_chat_profile_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetAvatarCredentialRequest) String() string { +func (x *GetAvatarCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAvatarCredentialRequest) ProtoMessage() {} +func (*GetAvatarCredentialsRequest) ProtoMessage() {} -func (x *GetAvatarCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[18] +func (x *GetAvatarCredentialsRequest) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1614,44 +1585,44 @@ func (x *GetAvatarCredentialRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAvatarCredentialRequest.ProtoReflect.Descriptor instead. -func (*GetAvatarCredentialRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{18} +// Deprecated: Use GetAvatarCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetAvatarCredentialsRequest) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{17} } -func (x *GetAvatarCredentialRequest) GetAvatarCredentialRequest() []byte { +func (x *GetAvatarCredentialsRequest) GetAvatarCredentialsRequest() []byte { if x != nil { - return x.AvatarCredentialRequest + return x.AvatarCredentialsRequest } return nil } -type GetAvatarCredentialResponse struct { +type GetAvatarCredentialsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Response: // - // *GetAvatarCredentialResponse_AvatarCredential - // *GetAvatarCredentialResponse_MissingZkCredentialKey - Response isGetAvatarCredentialResponse_Response `protobuf_oneof:"response"` + // *GetAvatarCredentialsResponse_AvatarCredentials + // *GetAvatarCredentialsResponse_MissingZkCredentialKey + Response isGetAvatarCredentialsResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetAvatarCredentialResponse) Reset() { - *x = GetAvatarCredentialResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[19] +func (x *GetAvatarCredentialsResponse) Reset() { + *x = GetAvatarCredentialsResponse{} + mi := &file_org_signal_chat_profile_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetAvatarCredentialResponse) String() string { +func (x *GetAvatarCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAvatarCredentialResponse) ProtoMessage() {} +func (*GetAvatarCredentialsResponse) ProtoMessage() {} -func (x *GetAvatarCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[19] +func (x *GetAvatarCredentialsResponse) ProtoReflect() protoreflect.Message { + mi := &file_org_signal_chat_profile_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1662,56 +1633,57 @@ func (x *GetAvatarCredentialResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAvatarCredentialResponse.ProtoReflect.Descriptor instead. -func (*GetAvatarCredentialResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{19} +// Deprecated: Use GetAvatarCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetAvatarCredentialsResponse) Descriptor() ([]byte, []int) { + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{18} } -func (x *GetAvatarCredentialResponse) GetResponse() isGetAvatarCredentialResponse_Response { +func (x *GetAvatarCredentialsResponse) GetResponse() isGetAvatarCredentialsResponse_Response { if x != nil { return x.Response } return nil } -func (x *GetAvatarCredentialResponse) GetAvatarCredential() []byte { +func (x *GetAvatarCredentialsResponse) GetAvatarCredentials() []byte { if x != nil { - if x, ok := x.Response.(*GetAvatarCredentialResponse_AvatarCredential); ok { - return x.AvatarCredential + if x, ok := x.Response.(*GetAvatarCredentialsResponse_AvatarCredentials); ok { + return x.AvatarCredentials } } return nil } -func (x *GetAvatarCredentialResponse) GetMissingZkCredentialKey() *errors.FailedPrecondition { +func (x *GetAvatarCredentialsResponse) GetMissingZkCredentialKey() *errors.FailedPrecondition { if x != nil { - if x, ok := x.Response.(*GetAvatarCredentialResponse_MissingZkCredentialKey); ok { + if x, ok := x.Response.(*GetAvatarCredentialsResponse_MissingZkCredentialKey); ok { return x.MissingZkCredentialKey } } return nil } -type isGetAvatarCredentialResponse_Response interface { - isGetAvatarCredentialResponse_Response() +type isGetAvatarCredentialsResponse_Response interface { + isGetAvatarCredentialsResponse_Response() } -type GetAvatarCredentialResponse_AvatarCredential struct { - AvatarCredential []byte `protobuf:"bytes,1,opt,name=avatar_credential,json=avatarCredential,proto3,oneof"` +type GetAvatarCredentialsResponse_AvatarCredentials struct { + AvatarCredentials []byte `protobuf:"bytes,1,opt,name=avatar_credentials,json=avatarCredentials,proto3,oneof"` } -type GetAvatarCredentialResponse_MissingZkCredentialKey struct { +type GetAvatarCredentialsResponse_MissingZkCredentialKey struct { // the client must call Accounts.SetZkCredentialKey to call this method MissingZkCredentialKey *errors.FailedPrecondition `protobuf:"bytes,2,opt,name=missing_zk_credential_key,json=missingZkCredentialKey,proto3,oneof"` } -func (*GetAvatarCredentialResponse_AvatarCredential) isGetAvatarCredentialResponse_Response() {} +func (*GetAvatarCredentialsResponse_AvatarCredentials) isGetAvatarCredentialsResponse_Response() {} -func (*GetAvatarCredentialResponse_MissingZkCredentialKey) isGetAvatarCredentialResponse_Response() {} +func (*GetAvatarCredentialsResponse_MissingZkCredentialKey) isGetAvatarCredentialsResponse_Response() { +} type GetAvatarUploadFormRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AvatarCredentialPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credential_presentation,json=avatarCredentialPresentation,proto3" json:"avatar_credential_presentation,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AvatarCredentialsPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credentials_presentation,json=avatarCredentialsPresentation,proto3" json:"avatar_credentials_presentation,omitempty"` // The length of the attachment for the requested upload form. Uploads // performed with this form will be limited to the provided length. UploadLength uint32 `protobuf:"varint,2,opt,name=upload_length,json=uploadLength,proto3" json:"upload_length,omitempty"` @@ -1721,7 +1693,7 @@ type GetAvatarUploadFormRequest struct { func (x *GetAvatarUploadFormRequest) Reset() { *x = GetAvatarUploadFormRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[20] + mi := &file_org_signal_chat_profile_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1733,7 +1705,7 @@ func (x *GetAvatarUploadFormRequest) String() string { func (*GetAvatarUploadFormRequest) ProtoMessage() {} func (x *GetAvatarUploadFormRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[20] + mi := &file_org_signal_chat_profile_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1746,12 +1718,12 @@ func (x *GetAvatarUploadFormRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAvatarUploadFormRequest.ProtoReflect.Descriptor instead. func (*GetAvatarUploadFormRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{20} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{19} } -func (x *GetAvatarUploadFormRequest) GetAvatarCredentialPresentation() []byte { +func (x *GetAvatarUploadFormRequest) GetAvatarCredentialsPresentation() []byte { if x != nil { - return x.AvatarCredentialPresentation + return x.AvatarCredentialsPresentation } return nil } @@ -1768,7 +1740,7 @@ type GetAvatarUploadFormResponse struct { // Types that are valid to be assigned to Response: // // *GetAvatarUploadFormResponse_AvatarUploadForm - // *GetAvatarUploadFormResponse_InvalidCredentialPresentation + // *GetAvatarUploadFormResponse_InvalidCredentialsPresentation Response isGetAvatarUploadFormResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1776,7 +1748,7 @@ type GetAvatarUploadFormResponse struct { func (x *GetAvatarUploadFormResponse) Reset() { *x = GetAvatarUploadFormResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[21] + mi := &file_org_signal_chat_profile_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1788,7 +1760,7 @@ func (x *GetAvatarUploadFormResponse) String() string { func (*GetAvatarUploadFormResponse) ProtoMessage() {} func (x *GetAvatarUploadFormResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[21] + mi := &file_org_signal_chat_profile_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1801,7 +1773,7 @@ func (x *GetAvatarUploadFormResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAvatarUploadFormResponse.ProtoReflect.Descriptor instead. func (*GetAvatarUploadFormResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{21} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{20} } func (x *GetAvatarUploadFormResponse) GetResponse() isGetAvatarUploadFormResponse_Response { @@ -1820,10 +1792,10 @@ func (x *GetAvatarUploadFormResponse) GetAvatarUploadForm() *common.S3UploadForm return nil } -func (x *GetAvatarUploadFormResponse) GetInvalidCredentialPresentation() *errors.FailedZkAuthentication { +func (x *GetAvatarUploadFormResponse) GetInvalidCredentialsPresentation() *errors.FailedZkAuthentication { if x != nil { - if x, ok := x.Response.(*GetAvatarUploadFormResponse_InvalidCredentialPresentation); ok { - return x.InvalidCredentialPresentation + if x, ok := x.Response.(*GetAvatarUploadFormResponse_InvalidCredentialsPresentation); ok { + return x.InvalidCredentialsPresentation } } return nil @@ -1834,29 +1806,28 @@ type isGetAvatarUploadFormResponse_Response interface { } type GetAvatarUploadFormResponse_AvatarUploadForm struct { - // the policy and credential used by clients to upload an avatar to the CDN AvatarUploadForm *common.S3UploadForm `protobuf:"bytes,1,opt,name=avatar_upload_form,json=avatarUploadForm,proto3,oneof"` } -type GetAvatarUploadFormResponse_InvalidCredentialPresentation struct { - InvalidCredentialPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credential_presentation,json=invalidCredentialPresentation,proto3,oneof"` +type GetAvatarUploadFormResponse_InvalidCredentialsPresentation struct { + InvalidCredentialsPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credentials_presentation,json=invalidCredentialsPresentation,proto3,oneof"` } func (*GetAvatarUploadFormResponse_AvatarUploadForm) isGetAvatarUploadFormResponse_Response() {} -func (*GetAvatarUploadFormResponse_InvalidCredentialPresentation) isGetAvatarUploadFormResponse_Response() { +func (*GetAvatarUploadFormResponse_InvalidCredentialsPresentation) isGetAvatarUploadFormResponse_Response() { } type ExtendAvatarTTLRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AvatarCredentialPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credential_presentation,json=avatarCredentialPresentation,proto3" json:"avatar_credential_presentation,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AvatarCredentialsPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credentials_presentation,json=avatarCredentialsPresentation,proto3" json:"avatar_credentials_presentation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExtendAvatarTTLRequest) Reset() { *x = ExtendAvatarTTLRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[22] + mi := &file_org_signal_chat_profile_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1868,7 +1839,7 @@ func (x *ExtendAvatarTTLRequest) String() string { func (*ExtendAvatarTTLRequest) ProtoMessage() {} func (x *ExtendAvatarTTLRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[22] + mi := &file_org_signal_chat_profile_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1881,12 +1852,12 @@ func (x *ExtendAvatarTTLRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtendAvatarTTLRequest.ProtoReflect.Descriptor instead. func (*ExtendAvatarTTLRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{22} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{21} } -func (x *ExtendAvatarTTLRequest) GetAvatarCredentialPresentation() []byte { +func (x *ExtendAvatarTTLRequest) GetAvatarCredentialsPresentation() []byte { if x != nil { - return x.AvatarCredentialPresentation + return x.AvatarCredentialsPresentation } return nil } @@ -1896,7 +1867,7 @@ type ExtendAvatarTTLResponse struct { // Types that are valid to be assigned to Response: // // *ExtendAvatarTTLResponse_Path - // *ExtendAvatarTTLResponse_InvalidCredentialPresentation + // *ExtendAvatarTTLResponse_InvalidCredentialsPresentation // *ExtendAvatarTTLResponse_NotFound Response isExtendAvatarTTLResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields @@ -1905,7 +1876,7 @@ type ExtendAvatarTTLResponse struct { func (x *ExtendAvatarTTLResponse) Reset() { *x = ExtendAvatarTTLResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[23] + mi := &file_org_signal_chat_profile_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1917,7 +1888,7 @@ func (x *ExtendAvatarTTLResponse) String() string { func (*ExtendAvatarTTLResponse) ProtoMessage() {} func (x *ExtendAvatarTTLResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[23] + mi := &file_org_signal_chat_profile_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1930,7 +1901,7 @@ func (x *ExtendAvatarTTLResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtendAvatarTTLResponse.ProtoReflect.Descriptor instead. func (*ExtendAvatarTTLResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{23} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{22} } func (x *ExtendAvatarTTLResponse) GetResponse() isExtendAvatarTTLResponse_Response { @@ -1949,10 +1920,10 @@ func (x *ExtendAvatarTTLResponse) GetPath() string { return "" } -func (x *ExtendAvatarTTLResponse) GetInvalidCredentialPresentation() *errors.FailedZkAuthentication { +func (x *ExtendAvatarTTLResponse) GetInvalidCredentialsPresentation() *errors.FailedZkAuthentication { if x != nil { - if x, ok := x.Response.(*ExtendAvatarTTLResponse_InvalidCredentialPresentation); ok { - return x.InvalidCredentialPresentation + if x, ok := x.Response.(*ExtendAvatarTTLResponse_InvalidCredentialsPresentation); ok { + return x.InvalidCredentialsPresentation } } return nil @@ -1976,8 +1947,8 @@ type ExtendAvatarTTLResponse_Path struct { Path string `protobuf:"bytes,1,opt,name=path,proto3,oneof"` } -type ExtendAvatarTTLResponse_InvalidCredentialPresentation struct { - InvalidCredentialPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credential_presentation,json=invalidCredentialPresentation,proto3,oneof"` +type ExtendAvatarTTLResponse_InvalidCredentialsPresentation struct { + InvalidCredentialsPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credentials_presentation,json=invalidCredentialsPresentation,proto3,oneof"` } type ExtendAvatarTTLResponse_NotFound struct { @@ -1987,20 +1958,20 @@ type ExtendAvatarTTLResponse_NotFound struct { func (*ExtendAvatarTTLResponse_Path) isExtendAvatarTTLResponse_Response() {} -func (*ExtendAvatarTTLResponse_InvalidCredentialPresentation) isExtendAvatarTTLResponse_Response() {} +func (*ExtendAvatarTTLResponse_InvalidCredentialsPresentation) isExtendAvatarTTLResponse_Response() {} func (*ExtendAvatarTTLResponse_NotFound) isExtendAvatarTTLResponse_Response() {} type DeleteAvatarRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - AvatarCredentialPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credential_presentation,json=avatarCredentialPresentation,proto3" json:"avatar_credential_presentation,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AvatarCredentialsPresentation []byte `protobuf:"bytes,1,opt,name=avatar_credentials_presentation,json=avatarCredentialsPresentation,proto3" json:"avatar_credentials_presentation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteAvatarRequest) Reset() { *x = DeleteAvatarRequest{} - mi := &file_org_signal_chat_profile_proto_msgTypes[24] + mi := &file_org_signal_chat_profile_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +1983,7 @@ func (x *DeleteAvatarRequest) String() string { func (*DeleteAvatarRequest) ProtoMessage() {} func (x *DeleteAvatarRequest) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[24] + mi := &file_org_signal_chat_profile_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2025,12 +1996,12 @@ func (x *DeleteAvatarRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAvatarRequest.ProtoReflect.Descriptor instead. func (*DeleteAvatarRequest) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{24} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{23} } -func (x *DeleteAvatarRequest) GetAvatarCredentialPresentation() []byte { +func (x *DeleteAvatarRequest) GetAvatarCredentialsPresentation() []byte { if x != nil { - return x.AvatarCredentialPresentation + return x.AvatarCredentialsPresentation } return nil } @@ -2040,7 +2011,7 @@ type DeleteAvatarResponse struct { // Types that are valid to be assigned to Response: // // *DeleteAvatarResponse_Success - // *DeleteAvatarResponse_InvalidCredentialPresentation + // *DeleteAvatarResponse_InvalidCredentialsPresentation Response isDeleteAvatarResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2048,7 +2019,7 @@ type DeleteAvatarResponse struct { func (x *DeleteAvatarResponse) Reset() { *x = DeleteAvatarResponse{} - mi := &file_org_signal_chat_profile_proto_msgTypes[25] + mi := &file_org_signal_chat_profile_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2060,7 +2031,7 @@ func (x *DeleteAvatarResponse) String() string { func (*DeleteAvatarResponse) ProtoMessage() {} func (x *DeleteAvatarResponse) ProtoReflect() protoreflect.Message { - mi := &file_org_signal_chat_profile_proto_msgTypes[25] + mi := &file_org_signal_chat_profile_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2073,7 +2044,7 @@ func (x *DeleteAvatarResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAvatarResponse.ProtoReflect.Descriptor instead. func (*DeleteAvatarResponse) Descriptor() ([]byte, []int) { - return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{25} + return file_org_signal_chat_profile_proto_rawDescGZIP(), []int{24} } func (x *DeleteAvatarResponse) GetResponse() isDeleteAvatarResponse_Response { @@ -2092,10 +2063,10 @@ func (x *DeleteAvatarResponse) GetSuccess() *emptypb.Empty { return nil } -func (x *DeleteAvatarResponse) GetInvalidCredentialPresentation() *errors.FailedZkAuthentication { +func (x *DeleteAvatarResponse) GetInvalidCredentialsPresentation() *errors.FailedZkAuthentication { if x != nil { - if x, ok := x.Response.(*DeleteAvatarResponse_InvalidCredentialPresentation); ok { - return x.InvalidCredentialPresentation + if x, ok := x.Response.(*DeleteAvatarResponse_InvalidCredentialsPresentation); ok { + return x.InvalidCredentialsPresentation } } return nil @@ -2109,13 +2080,13 @@ type DeleteAvatarResponse_Success struct { Success *emptypb.Empty `protobuf:"bytes,1,opt,name=success,proto3,oneof"` } -type DeleteAvatarResponse_InvalidCredentialPresentation struct { - InvalidCredentialPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credential_presentation,json=invalidCredentialPresentation,proto3,oneof"` +type DeleteAvatarResponse_InvalidCredentialsPresentation struct { + InvalidCredentialsPresentation *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=invalid_credentials_presentation,json=invalidCredentialsPresentation,proto3,oneof"` } func (*DeleteAvatarResponse_Success) isDeleteAvatarResponse_Response() {} -func (*DeleteAvatarResponse_InvalidCredentialPresentation) isDeleteAvatarResponse_Response() {} +func (*DeleteAvatarResponse_InvalidCredentialsPresentation) isDeleteAvatarResponse_Response() {} var File_org_signal_chat_profile_proto protoreflect.FileDescriptor @@ -2132,14 +2103,7 @@ const file_org_signal_chat_profile_proto_rawDesc = "" + "\fAvatarChange\x12\x1b\n" + "\x17AVATAR_CHANGE_UNCHANGED\x10\x00\x12\x17\n" + "\x13AVATAR_CHANGE_CLEAR\x10\x01\x12\x18\n" + - "\x14AVATAR_CHANGE_UPDATE\x10\x02\"]\n" + - "\x12SetV1AvatarRequest\x12\x1f\n" + - "\aversion\x18\x01 \x01(\tB\x05\xa2\x97\"\x01@R\aversion\x12&\n" + - "\n" + - "commitment\x18\x02 \x01(\fB\x06\xa2\x97\"\x02\x00aR\n" + - "commitment\"O\n" + - "\x13SetV1AvatarResponse\x128\n" + - "\x04form\x18\x01 \x01(\v2$.org.signal.chat.common.S3UploadFormR\x04form\"\xa5\x03\n" + + "\x14AVATAR_CHANGE_UPDATE\x10\x02\"\xa5\x03\n" + "\x11SetProfileRequest\x12\x1f\n" + "\aversion\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\aversion\x12\x1f\n" + "\x04data\x18\x02 \x01(\fB\v\x88\x97\"\x01\x9a\x97\"\x03\x10\xa9\aR\x04data\x12C\n" + @@ -2155,12 +2119,13 @@ const file_org_signal_chat_profile_proto_rawDesc = "" + "\x1cProfilesV2CapabilityRequired\"\x8a\x01\n" + "\x10SetProfileResult\x12\\\n" + "\x15v1_avatar_upload_form\x18\x0f \x01(\v2$.org.signal.chat.common.S3UploadFormH\x00R\x12v1AvatarUploadForm\x88\x01\x01B\x18\n" + - "\x16_v1_avatar_upload_form\"\xac\x04\n" + + "\x16_v1_avatar_upload_form\"\xd2\x05\n" + "\x12SetProfileResponse\x12C\n" + "\x06result\x18\x01 \x01(\v2).org.signal.chat.profile.SetProfileResultH\x00R\x06result\x12\x8f\x01\n" + "\x1cexpected_data_write_conflict\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB \xc2\xd5\"\x1cexpected_data_write_conflictH\x00R\x19expectedDataWriteConflict\x12\x97\x01\n" + "\x1cpayments_forbidden_in_region\x18\x03 \x01(\v22.org.signal.chat.profile.PaymentsForbiddenInRegionB \xc2\xd5\"\x1cpayments_forbidden_in_regionH\x00R\x19paymentsForbiddenInRegion\x12\x98\x01\n" + - "\x1fexpected_version_write_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fexpected_version_write_conflictH\x00R\x1cexpectedVersionWriteConflictB\n" + + "\x1fexpected_version_write_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fexpected_version_write_conflictH\x00R\x1cexpectedVersionWriteConflict\x12\xa3\x01\n" + + "\x1fprofiles_v2_capability_required\x18\x0f \x01(\v25.org.signal.chat.profile.ProfilesV2CapabilityRequiredB#\xc2\xd5\"\x1fprofiles_v2_capability_requiredH\x00R\x1cprofilesV2CapabilityRequiredB\n" + "\n" + "\bresponse\"\xb4\x01\n" + "\x11GetProfileRequest\x12b\n" + @@ -2210,64 +2175,66 @@ const file_org_signal_chat_profile_proto_rawDesc = "" + "profile_v1\x18\x0f \x01(\v2,.org.signal.chat.profile.LegacyProfileResultB\x0e\xc2\xd5\"\n" + "profile_v1H\x00R\tprofileV1B\n" + "\n" + - "\bresponse\"\xd0\x02\n" + - "\x1eGetProfileKeyCredentialRequest\x12b\n" + + "\bresponse\"\xba\x02\n" + + "&GetExpiringProfileKeyCredentialRequest\x12b\n" + "\x12account_identifier\x18\x01 \x01(\v2).org.signal.chat.common.ServiceIdentifierB\b\xb8\x97\"\x01ȗ\"\x01R\x11accountIdentifier\x123\n" + "\x12credential_request\x18\x02 \x01(\fB\x04\x88\x97\"\x01R\x11credentialRequest\x12V\n" + - "\x0fcredential_type\x18\x03 \x01(\x0e2'.org.signal.chat.profile.CredentialTypeB\x04\x90\x97\"\x01R\x0ecredentialType\x12=\n" + - "\x17unidentified_access_key\x18\x04 \x01(\fB\x05\xa2\x97\"\x01\x10R\x15unidentifiedAccessKey\"U\n" + - "\x1dGetProfileKeyCredentialResult\x124\n" + - "\x16profile_key_credential\x18\x01 \x01(\fR\x14profileKeyCredential\"\xfe\x02\n" + - "\x1fGetProfileKeyCredentialResponse\x12P\n" + - "\x06result\x18\x01 \x01(\v26.org.signal.chat.profile.GetProfileKeyCredentialResultH\x00R\x06result\x12N\n" + + "\x0fcredential_type\x18\x03 \x01(\x0e2'.org.signal.chat.profile.CredentialTypeB\x04\x90\x97\"\x01R\x0ecredentialType\x12\x1f\n" + + "\aversion\x18\x04 \x01(\fB\x05\xa2\x97\"\x01 R\aversion\"\xd1\x01\n" + + "/GetExpiringProfileKeyCredentialAnonymousRequest\x12_\n" + + "\arequest\x18\x01 \x01(\v2?.org.signal.chat.profile.GetExpiringProfileKeyCredentialRequestB\x04\xb8\x97\"\x01R\arequest\x12=\n" + + "\x17unidentified_access_key\x18\x02 \x01(\fB\x05\xa2\x97\"\x01\x10R\x15unidentifiedAccessKey\"]\n" + + "%GetExpiringProfileKeyCredentialResult\x124\n" + + "\x16profile_key_credential\x18\x01 \x01(\fR\x14profileKeyCredential\"\x97\x03\n" + + "0GetExpiringProfileKeyCredentialAnonymousResponse\x12X\n" + + "\x06result\x18\x01 \x01(\v2>.org.signal.chat.profile.GetExpiringProfileKeyCredentialResultH\x00R\x06result\x12N\n" + "\tnot_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\r\xc2\xd5\"\tnot_foundH\x00R\bnotFound\x12\xac\x01\n" + "!failed_unidentified_authorization\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB%\xc2\xd5\"!failed_unidentified_authorizationH\x00R\x1ffailedUnidentifiedAuthorizationB\n" + "\n" + - "\bresponse\"X\n" + - "\x1aGetAvatarCredentialRequest\x12:\n" + - "\x19avatar_credential_request\x18\x01 \x01(\fR\x17avatarCredentialRequest\"\xe1\x01\n" + - "\x1bGetAvatarCredentialResponse\x12-\n" + - "\x11avatar_credential\x18\x01 \x01(\fH\x00R\x10avatarCredential\x12\x86\x01\n" + + "\bresponse\"[\n" + + "\x1bGetAvatarCredentialsRequest\x12<\n" + + "\x1aavatar_credentials_request\x18\x01 \x01(\fR\x18avatarCredentialsRequest\"\xe4\x01\n" + + "\x1cGetAvatarCredentialsResponse\x12/\n" + + "\x12avatar_credentials\x18\x01 \x01(\fH\x00R\x11avatarCredentials\x12\x86\x01\n" + "\x19missing_zk_credential_key\x18\x02 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1d\xc2\xd5\"\x19missing_zk_credential_keyH\x00R\x16missingZkCredentialKeyB\n" + "\n" + - "\bresponse\"\x94\x01\n" + - "\x1aGetAvatarUploadFormRequest\x12D\n" + - "\x1eavatar_credential_presentation\x18\x01 \x01(\fR\x1cavatarCredentialPresentation\x120\n" + - "\rupload_length\x18\x02 \x01(\rB\v\xb2\x97\"\a\b\x01\x10\x80\x80\x80\x05R\fuploadLength\"\x9f\x02\n" + + "\bresponse\"\x96\x01\n" + + "\x1aGetAvatarUploadFormRequest\x12F\n" + + "\x1favatar_credentials_presentation\x18\x01 \x01(\fR\x1davatarCredentialsPresentation\x120\n" + + "\rupload_length\x18\x02 \x01(\rB\v\xb2\x97\"\a\b\x01\x10\x80\x80\x80\x05R\fuploadLength\"\xa2\x02\n" + "\x1bGetAvatarUploadFormResponse\x12T\n" + - "\x12avatar_upload_form\x18\x01 \x01(\v2$.org.signal.chat.common.S3UploadFormH\x00R\x10avatarUploadForm\x12\x9d\x01\n" + - "\x1finvalid_credential_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB#\xc2\xd5\"\x1finvalid_credential_presentationH\x00R\x1dinvalidCredentialPresentationB\n" + + "\x12avatar_upload_form\x18\x01 \x01(\v2$.org.signal.chat.common.S3UploadFormH\x00R\x10avatarUploadForm\x12\xa0\x01\n" + + " invalid_credentials_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB$\xc2\xd5\" invalid_credentials_presentationH\x00R\x1einvalidCredentialsPresentationB\n" + "\n" + - "\bresponse\"^\n" + - "\x16ExtendAvatarTTLRequest\x12D\n" + - "\x1eavatar_credential_presentation\x18\x01 \x01(\fR\x1cavatarCredentialPresentation\"\xb2\x02\n" + + "\bresponse\"`\n" + + "\x16ExtendAvatarTTLRequest\x12F\n" + + "\x1favatar_credentials_presentation\x18\x01 \x01(\fR\x1davatarCredentialsPresentation\"\xb5\x02\n" + "\x17ExtendAvatarTTLResponse\x12\x14\n" + - "\x04path\x18\x01 \x01(\tH\x00R\x04path\x12\x9d\x01\n" + - "\x1finvalid_credential_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB#\xc2\xd5\"\x1finvalid_credential_presentationH\x00R\x1dinvalidCredentialPresentation\x12U\n" + + "\x04path\x18\x01 \x01(\tH\x00R\x04path\x12\xa0\x01\n" + + " invalid_credentials_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB$\xc2\xd5\" invalid_credentials_presentationH\x00R\x1einvalidCredentialsPresentation\x12U\n" + "\tnot_found\x18\x03 \x01(\v2 .org.signal.chat.errors.NotFoundB\x14\xc2\xd5\"\x10no_active_avatarH\x00R\bnotFoundB\n" + "\n" + - "\bresponse\"[\n" + - "\x13DeleteAvatarRequest\x12D\n" + - "\x1eavatar_credential_presentation\x18\x01 \x01(\fR\x1cavatarCredentialPresentation\"\xf6\x01\n" + + "\bresponse\"]\n" + + "\x13DeleteAvatarRequest\x12F\n" + + "\x1favatar_credentials_presentation\x18\x01 \x01(\fR\x1davatarCredentialsPresentation\"\xf9\x01\n" + "\x14DeleteAvatarResponse\x122\n" + - "\asuccess\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\asuccess\x12\x9d\x01\n" + - "\x1finvalid_credential_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB#\xc2\xd5\"\x1finvalid_credential_presentationH\x00R\x1dinvalidCredentialPresentationB\n" + + "\asuccess\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\asuccess\x12\xa0\x01\n" + + " invalid_credentials_presentation\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB$\xc2\xd5\" invalid_credentials_presentationH\x00R\x1einvalidCredentialsPresentationB\n" + "\n" + "\bresponse*[\n" + "\x0eCredentialType\x12\x1f\n" + "\x1bCREDENTIAL_TYPE_UNSPECIFIED\x10\x00\x12(\n" + - "$CREDENTIAL_TYPE_EXPIRING_PROFILE_KEY\x10\x012\xd2\x03\n" + + "$CREDENTIAL_TYPE_EXPIRING_PROFILE_KEY\x10\x012\xe9\x02\n" + "\aProfile\x12g\n" + "\n" + "SetProfile\x12*.org.signal.chat.profile.SetProfileRequest\x1a+.org.signal.chat.profile.SetProfileResponse\"\x00\x12g\n" + "\n" + - "GetProfile\x12*.org.signal.chat.profile.GetProfileRequest\x1a+.org.signal.chat.profile.GetProfileResponse\"\x00\x12\x82\x01\n" + - "\x13GetAvatarCredential\x123.org.signal.chat.profile.GetAvatarCredentialRequest\x1a4.org.signal.chat.profile.GetAvatarCredentialResponse\"\x00\x12j\n" + - "\vSetV1Avatar\x12+.org.signal.chat.profile.SetV1AvatarRequest\x1a,.org.signal.chat.profile.SetV1AvatarResponse\"\x00\x1a\x04\xc8\xd5\"\x012\x90\x05\n" + + "GetProfile\x12*.org.signal.chat.profile.GetProfileRequest\x1a+.org.signal.chat.profile.GetProfileResponse\"\x00\x12\x85\x01\n" + + "\x14GetAvatarCredentials\x124.org.signal.chat.profile.GetAvatarCredentialsRequest\x1a5.org.signal.chat.profile.GetAvatarCredentialsResponse\"\x00\x1a\x04\xc8\xd5\"\x012\xba\x05\n" + "\x10ProfileAnonymous\x12y\n" + "\n" + - "GetProfile\x123.org.signal.chat.profile.GetProfileAnonymousRequest\x1a4.org.signal.chat.profile.GetProfileAnonymousResponse\"\x00\x12\x8e\x01\n" + - "\x17GetProfileKeyCredential\x127.org.signal.chat.profile.GetProfileKeyCredentialRequest\x1a8.org.signal.chat.profile.GetProfileKeyCredentialResponse\"\x00\x12\x82\x01\n" + + "GetProfile\x123.org.signal.chat.profile.GetProfileAnonymousRequest\x1a4.org.signal.chat.profile.GetProfileAnonymousResponse\"\x00\x12\xb8\x01\n" + + "\x1fGetExpiringProfileKeyCredential\x12H.org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest\x1aI.org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse\"\x00\x12\x82\x01\n" + "\x13GetAvatarUploadForm\x123.org.signal.chat.profile.GetAvatarUploadFormRequest\x1a4.org.signal.chat.profile.GetAvatarUploadFormResponse\"\x00\x12v\n" + "\x0fExtendAvatarTTL\x12/.org.signal.chat.profile.ExtendAvatarTTLRequest\x1a0.org.signal.chat.profile.ExtendAvatarTTLResponse\"\x00\x12m\n" + "\fDeleteAvatar\x12,.org.signal.chat.profile.DeleteAvatarRequest\x1a-.org.signal.chat.profile.DeleteAvatarResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" @@ -2285,99 +2252,97 @@ func file_org_signal_chat_profile_proto_rawDescGZIP() []byte { } var file_org_signal_chat_profile_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_org_signal_chat_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_org_signal_chat_profile_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_org_signal_chat_profile_proto_goTypes = []any{ - (CredentialType)(0), // 0: org.signal.chat.profile.CredentialType - (SetProfileV1Request_AvatarChange)(0), // 1: org.signal.chat.profile.SetProfileV1Request.AvatarChange - (*SetProfileV1Request)(nil), // 2: org.signal.chat.profile.SetProfileV1Request - (*SetV1AvatarRequest)(nil), // 3: org.signal.chat.profile.SetV1AvatarRequest - (*SetV1AvatarResponse)(nil), // 4: org.signal.chat.profile.SetV1AvatarResponse - (*SetProfileRequest)(nil), // 5: org.signal.chat.profile.SetProfileRequest - (*PaymentsForbiddenInRegion)(nil), // 6: org.signal.chat.profile.PaymentsForbiddenInRegion - (*ProfilesV2CapabilityRequired)(nil), // 7: org.signal.chat.profile.ProfilesV2CapabilityRequired - (*SetProfileResult)(nil), // 8: org.signal.chat.profile.SetProfileResult - (*SetProfileResponse)(nil), // 9: org.signal.chat.profile.SetProfileResponse - (*GetProfileRequest)(nil), // 10: org.signal.chat.profile.GetProfileRequest - (*GetProfileAnonymousRequest)(nil), // 11: org.signal.chat.profile.GetProfileAnonymousRequest - (*AccountInfo)(nil), // 12: org.signal.chat.profile.AccountInfo - (*ProfileResult)(nil), // 13: org.signal.chat.profile.ProfileResult - (*LegacyProfileResult)(nil), // 14: org.signal.chat.profile.LegacyProfileResult - (*GetProfileResponse)(nil), // 15: org.signal.chat.profile.GetProfileResponse - (*GetProfileAnonymousResponse)(nil), // 16: org.signal.chat.profile.GetProfileAnonymousResponse - (*GetProfileKeyCredentialRequest)(nil), // 17: org.signal.chat.profile.GetProfileKeyCredentialRequest - (*GetProfileKeyCredentialResult)(nil), // 18: org.signal.chat.profile.GetProfileKeyCredentialResult - (*GetProfileKeyCredentialResponse)(nil), // 19: org.signal.chat.profile.GetProfileKeyCredentialResponse - (*GetAvatarCredentialRequest)(nil), // 20: org.signal.chat.profile.GetAvatarCredentialRequest - (*GetAvatarCredentialResponse)(nil), // 21: org.signal.chat.profile.GetAvatarCredentialResponse - (*GetAvatarUploadFormRequest)(nil), // 22: org.signal.chat.profile.GetAvatarUploadFormRequest - (*GetAvatarUploadFormResponse)(nil), // 23: org.signal.chat.profile.GetAvatarUploadFormResponse - (*ExtendAvatarTTLRequest)(nil), // 24: org.signal.chat.profile.ExtendAvatarTTLRequest - (*ExtendAvatarTTLResponse)(nil), // 25: org.signal.chat.profile.ExtendAvatarTTLResponse - (*DeleteAvatarRequest)(nil), // 26: org.signal.chat.profile.DeleteAvatarRequest - (*DeleteAvatarResponse)(nil), // 27: org.signal.chat.profile.DeleteAvatarResponse - (*common.S3UploadForm)(nil), // 28: org.signal.chat.common.S3UploadForm - (*errors.FailedPrecondition)(nil), // 29: org.signal.chat.errors.FailedPrecondition - (*common.ServiceIdentifier)(nil), // 30: org.signal.chat.common.ServiceIdentifier - (*errors.NotFound)(nil), // 31: org.signal.chat.errors.NotFound - (*errors.FailedUnidentifiedAuthorization)(nil), // 32: org.signal.chat.errors.FailedUnidentifiedAuthorization - (*errors.FailedZkAuthentication)(nil), // 33: org.signal.chat.errors.FailedZkAuthentication - (*emptypb.Empty)(nil), // 34: google.protobuf.Empty + (CredentialType)(0), // 0: org.signal.chat.profile.CredentialType + (SetProfileV1Request_AvatarChange)(0), // 1: org.signal.chat.profile.SetProfileV1Request.AvatarChange + (*SetProfileV1Request)(nil), // 2: org.signal.chat.profile.SetProfileV1Request + (*SetProfileRequest)(nil), // 3: org.signal.chat.profile.SetProfileRequest + (*PaymentsForbiddenInRegion)(nil), // 4: org.signal.chat.profile.PaymentsForbiddenInRegion + (*ProfilesV2CapabilityRequired)(nil), // 5: org.signal.chat.profile.ProfilesV2CapabilityRequired + (*SetProfileResult)(nil), // 6: org.signal.chat.profile.SetProfileResult + (*SetProfileResponse)(nil), // 7: org.signal.chat.profile.SetProfileResponse + (*GetProfileRequest)(nil), // 8: org.signal.chat.profile.GetProfileRequest + (*GetProfileAnonymousRequest)(nil), // 9: org.signal.chat.profile.GetProfileAnonymousRequest + (*AccountInfo)(nil), // 10: org.signal.chat.profile.AccountInfo + (*ProfileResult)(nil), // 11: org.signal.chat.profile.ProfileResult + (*LegacyProfileResult)(nil), // 12: org.signal.chat.profile.LegacyProfileResult + (*GetProfileResponse)(nil), // 13: org.signal.chat.profile.GetProfileResponse + (*GetProfileAnonymousResponse)(nil), // 14: org.signal.chat.profile.GetProfileAnonymousResponse + (*GetExpiringProfileKeyCredentialRequest)(nil), // 15: org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest + (*GetExpiringProfileKeyCredentialAnonymousRequest)(nil), // 16: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest + (*GetExpiringProfileKeyCredentialResult)(nil), // 17: org.signal.chat.profile.GetExpiringProfileKeyCredentialResult + (*GetExpiringProfileKeyCredentialAnonymousResponse)(nil), // 18: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse + (*GetAvatarCredentialsRequest)(nil), // 19: org.signal.chat.profile.GetAvatarCredentialsRequest + (*GetAvatarCredentialsResponse)(nil), // 20: org.signal.chat.profile.GetAvatarCredentialsResponse + (*GetAvatarUploadFormRequest)(nil), // 21: org.signal.chat.profile.GetAvatarUploadFormRequest + (*GetAvatarUploadFormResponse)(nil), // 22: org.signal.chat.profile.GetAvatarUploadFormResponse + (*ExtendAvatarTTLRequest)(nil), // 23: org.signal.chat.profile.ExtendAvatarTTLRequest + (*ExtendAvatarTTLResponse)(nil), // 24: org.signal.chat.profile.ExtendAvatarTTLResponse + (*DeleteAvatarRequest)(nil), // 25: org.signal.chat.profile.DeleteAvatarRequest + (*DeleteAvatarResponse)(nil), // 26: org.signal.chat.profile.DeleteAvatarResponse + (*common.S3UploadForm)(nil), // 27: org.signal.chat.common.S3UploadForm + (*errors.FailedPrecondition)(nil), // 28: org.signal.chat.errors.FailedPrecondition + (*common.ServiceIdentifier)(nil), // 29: org.signal.chat.common.ServiceIdentifier + (*errors.NotFound)(nil), // 30: org.signal.chat.errors.NotFound + (*errors.FailedUnidentifiedAuthorization)(nil), // 31: org.signal.chat.errors.FailedUnidentifiedAuthorization + (*errors.FailedZkAuthentication)(nil), // 32: org.signal.chat.errors.FailedZkAuthentication + (*emptypb.Empty)(nil), // 33: google.protobuf.Empty } var file_org_signal_chat_profile_proto_depIdxs = []int32{ 1, // 0: org.signal.chat.profile.SetProfileV1Request.avatar_change:type_name -> org.signal.chat.profile.SetProfileV1Request.AvatarChange - 28, // 1: org.signal.chat.profile.SetV1AvatarResponse.form:type_name -> org.signal.chat.common.S3UploadForm - 2, // 2: org.signal.chat.profile.SetProfileRequest.v1Request:type_name -> org.signal.chat.profile.SetProfileV1Request - 28, // 3: org.signal.chat.profile.SetProfileResult.v1_avatar_upload_form:type_name -> org.signal.chat.common.S3UploadForm - 8, // 4: org.signal.chat.profile.SetProfileResponse.result:type_name -> org.signal.chat.profile.SetProfileResult - 29, // 5: org.signal.chat.profile.SetProfileResponse.expected_data_write_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 6, // 6: org.signal.chat.profile.SetProfileResponse.payments_forbidden_in_region:type_name -> org.signal.chat.profile.PaymentsForbiddenInRegion - 29, // 7: org.signal.chat.profile.SetProfileResponse.expected_version_write_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 30, // 8: org.signal.chat.profile.GetProfileRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 10, // 9: org.signal.chat.profile.GetProfileAnonymousRequest.request:type_name -> org.signal.chat.profile.GetProfileRequest - 12, // 10: org.signal.chat.profile.ProfileResult.account_info:type_name -> org.signal.chat.profile.AccountInfo - 12, // 11: org.signal.chat.profile.LegacyProfileResult.account_info:type_name -> org.signal.chat.profile.AccountInfo - 13, // 12: org.signal.chat.profile.GetProfileResponse.profile:type_name -> org.signal.chat.profile.ProfileResult - 31, // 13: org.signal.chat.profile.GetProfileResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 14, // 14: org.signal.chat.profile.GetProfileResponse.legacy_profile:type_name -> org.signal.chat.profile.LegacyProfileResult - 13, // 15: org.signal.chat.profile.GetProfileAnonymousResponse.profile:type_name -> org.signal.chat.profile.ProfileResult - 31, // 16: org.signal.chat.profile.GetProfileAnonymousResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 32, // 17: org.signal.chat.profile.GetProfileAnonymousResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization - 14, // 18: org.signal.chat.profile.GetProfileAnonymousResponse.profile_v1:type_name -> org.signal.chat.profile.LegacyProfileResult - 30, // 19: org.signal.chat.profile.GetProfileKeyCredentialRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier - 0, // 20: org.signal.chat.profile.GetProfileKeyCredentialRequest.credential_type:type_name -> org.signal.chat.profile.CredentialType - 18, // 21: org.signal.chat.profile.GetProfileKeyCredentialResponse.result:type_name -> org.signal.chat.profile.GetProfileKeyCredentialResult - 31, // 22: org.signal.chat.profile.GetProfileKeyCredentialResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 32, // 23: org.signal.chat.profile.GetProfileKeyCredentialResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization - 29, // 24: org.signal.chat.profile.GetAvatarCredentialResponse.missing_zk_credential_key:type_name -> org.signal.chat.errors.FailedPrecondition - 28, // 25: org.signal.chat.profile.GetAvatarUploadFormResponse.avatar_upload_form:type_name -> org.signal.chat.common.S3UploadForm - 33, // 26: org.signal.chat.profile.GetAvatarUploadFormResponse.invalid_credential_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication - 33, // 27: org.signal.chat.profile.ExtendAvatarTTLResponse.invalid_credential_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication - 31, // 28: org.signal.chat.profile.ExtendAvatarTTLResponse.not_found:type_name -> org.signal.chat.errors.NotFound - 34, // 29: org.signal.chat.profile.DeleteAvatarResponse.success:type_name -> google.protobuf.Empty - 33, // 30: org.signal.chat.profile.DeleteAvatarResponse.invalid_credential_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication - 5, // 31: org.signal.chat.profile.Profile.SetProfile:input_type -> org.signal.chat.profile.SetProfileRequest - 10, // 32: org.signal.chat.profile.Profile.GetProfile:input_type -> org.signal.chat.profile.GetProfileRequest - 20, // 33: org.signal.chat.profile.Profile.GetAvatarCredential:input_type -> org.signal.chat.profile.GetAvatarCredentialRequest - 3, // 34: org.signal.chat.profile.Profile.SetV1Avatar:input_type -> org.signal.chat.profile.SetV1AvatarRequest - 11, // 35: org.signal.chat.profile.ProfileAnonymous.GetProfile:input_type -> org.signal.chat.profile.GetProfileAnonymousRequest - 17, // 36: org.signal.chat.profile.ProfileAnonymous.GetProfileKeyCredential:input_type -> org.signal.chat.profile.GetProfileKeyCredentialRequest - 22, // 37: org.signal.chat.profile.ProfileAnonymous.GetAvatarUploadForm:input_type -> org.signal.chat.profile.GetAvatarUploadFormRequest - 24, // 38: org.signal.chat.profile.ProfileAnonymous.ExtendAvatarTTL:input_type -> org.signal.chat.profile.ExtendAvatarTTLRequest - 26, // 39: org.signal.chat.profile.ProfileAnonymous.DeleteAvatar:input_type -> org.signal.chat.profile.DeleteAvatarRequest - 9, // 40: org.signal.chat.profile.Profile.SetProfile:output_type -> org.signal.chat.profile.SetProfileResponse - 15, // 41: org.signal.chat.profile.Profile.GetProfile:output_type -> org.signal.chat.profile.GetProfileResponse - 21, // 42: org.signal.chat.profile.Profile.GetAvatarCredential:output_type -> org.signal.chat.profile.GetAvatarCredentialResponse - 4, // 43: org.signal.chat.profile.Profile.SetV1Avatar:output_type -> org.signal.chat.profile.SetV1AvatarResponse - 16, // 44: org.signal.chat.profile.ProfileAnonymous.GetProfile:output_type -> org.signal.chat.profile.GetProfileAnonymousResponse - 19, // 45: org.signal.chat.profile.ProfileAnonymous.GetProfileKeyCredential:output_type -> org.signal.chat.profile.GetProfileKeyCredentialResponse - 23, // 46: org.signal.chat.profile.ProfileAnonymous.GetAvatarUploadForm:output_type -> org.signal.chat.profile.GetAvatarUploadFormResponse - 25, // 47: org.signal.chat.profile.ProfileAnonymous.ExtendAvatarTTL:output_type -> org.signal.chat.profile.ExtendAvatarTTLResponse - 27, // 48: org.signal.chat.profile.ProfileAnonymous.DeleteAvatar:output_type -> org.signal.chat.profile.DeleteAvatarResponse - 40, // [40:49] is the sub-list for method output_type - 31, // [31:40] is the sub-list for method input_type - 31, // [31:31] is the sub-list for extension type_name - 31, // [31:31] is the sub-list for extension extendee - 0, // [0:31] is the sub-list for field type_name + 2, // 1: org.signal.chat.profile.SetProfileRequest.v1Request:type_name -> org.signal.chat.profile.SetProfileV1Request + 27, // 2: org.signal.chat.profile.SetProfileResult.v1_avatar_upload_form:type_name -> org.signal.chat.common.S3UploadForm + 6, // 3: org.signal.chat.profile.SetProfileResponse.result:type_name -> org.signal.chat.profile.SetProfileResult + 28, // 4: org.signal.chat.profile.SetProfileResponse.expected_data_write_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 4, // 5: org.signal.chat.profile.SetProfileResponse.payments_forbidden_in_region:type_name -> org.signal.chat.profile.PaymentsForbiddenInRegion + 28, // 6: org.signal.chat.profile.SetProfileResponse.expected_version_write_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 5, // 7: org.signal.chat.profile.SetProfileResponse.profiles_v2_capability_required:type_name -> org.signal.chat.profile.ProfilesV2CapabilityRequired + 29, // 8: org.signal.chat.profile.GetProfileRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 8, // 9: org.signal.chat.profile.GetProfileAnonymousRequest.request:type_name -> org.signal.chat.profile.GetProfileRequest + 10, // 10: org.signal.chat.profile.ProfileResult.account_info:type_name -> org.signal.chat.profile.AccountInfo + 10, // 11: org.signal.chat.profile.LegacyProfileResult.account_info:type_name -> org.signal.chat.profile.AccountInfo + 11, // 12: org.signal.chat.profile.GetProfileResponse.profile:type_name -> org.signal.chat.profile.ProfileResult + 30, // 13: org.signal.chat.profile.GetProfileResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 12, // 14: org.signal.chat.profile.GetProfileResponse.legacy_profile:type_name -> org.signal.chat.profile.LegacyProfileResult + 11, // 15: org.signal.chat.profile.GetProfileAnonymousResponse.profile:type_name -> org.signal.chat.profile.ProfileResult + 30, // 16: org.signal.chat.profile.GetProfileAnonymousResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 31, // 17: org.signal.chat.profile.GetProfileAnonymousResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 12, // 18: org.signal.chat.profile.GetProfileAnonymousResponse.profile_v1:type_name -> org.signal.chat.profile.LegacyProfileResult + 29, // 19: org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest.account_identifier:type_name -> org.signal.chat.common.ServiceIdentifier + 0, // 20: org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest.credential_type:type_name -> org.signal.chat.profile.CredentialType + 15, // 21: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest.request:type_name -> org.signal.chat.profile.GetExpiringProfileKeyCredentialRequest + 17, // 22: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse.result:type_name -> org.signal.chat.profile.GetExpiringProfileKeyCredentialResult + 30, // 23: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 31, // 24: org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse.failed_unidentified_authorization:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 28, // 25: org.signal.chat.profile.GetAvatarCredentialsResponse.missing_zk_credential_key:type_name -> org.signal.chat.errors.FailedPrecondition + 27, // 26: org.signal.chat.profile.GetAvatarUploadFormResponse.avatar_upload_form:type_name -> org.signal.chat.common.S3UploadForm + 32, // 27: org.signal.chat.profile.GetAvatarUploadFormResponse.invalid_credentials_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication + 32, // 28: org.signal.chat.profile.ExtendAvatarTTLResponse.invalid_credentials_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication + 30, // 29: org.signal.chat.profile.ExtendAvatarTTLResponse.not_found:type_name -> org.signal.chat.errors.NotFound + 33, // 30: org.signal.chat.profile.DeleteAvatarResponse.success:type_name -> google.protobuf.Empty + 32, // 31: org.signal.chat.profile.DeleteAvatarResponse.invalid_credentials_presentation:type_name -> org.signal.chat.errors.FailedZkAuthentication + 3, // 32: org.signal.chat.profile.Profile.SetProfile:input_type -> org.signal.chat.profile.SetProfileRequest + 8, // 33: org.signal.chat.profile.Profile.GetProfile:input_type -> org.signal.chat.profile.GetProfileRequest + 19, // 34: org.signal.chat.profile.Profile.GetAvatarCredentials:input_type -> org.signal.chat.profile.GetAvatarCredentialsRequest + 9, // 35: org.signal.chat.profile.ProfileAnonymous.GetProfile:input_type -> org.signal.chat.profile.GetProfileAnonymousRequest + 16, // 36: org.signal.chat.profile.ProfileAnonymous.GetExpiringProfileKeyCredential:input_type -> org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousRequest + 21, // 37: org.signal.chat.profile.ProfileAnonymous.GetAvatarUploadForm:input_type -> org.signal.chat.profile.GetAvatarUploadFormRequest + 23, // 38: org.signal.chat.profile.ProfileAnonymous.ExtendAvatarTTL:input_type -> org.signal.chat.profile.ExtendAvatarTTLRequest + 25, // 39: org.signal.chat.profile.ProfileAnonymous.DeleteAvatar:input_type -> org.signal.chat.profile.DeleteAvatarRequest + 7, // 40: org.signal.chat.profile.Profile.SetProfile:output_type -> org.signal.chat.profile.SetProfileResponse + 13, // 41: org.signal.chat.profile.Profile.GetProfile:output_type -> org.signal.chat.profile.GetProfileResponse + 20, // 42: org.signal.chat.profile.Profile.GetAvatarCredentials:output_type -> org.signal.chat.profile.GetAvatarCredentialsResponse + 14, // 43: org.signal.chat.profile.ProfileAnonymous.GetProfile:output_type -> org.signal.chat.profile.GetProfileAnonymousResponse + 18, // 44: org.signal.chat.profile.ProfileAnonymous.GetExpiringProfileKeyCredential:output_type -> org.signal.chat.profile.GetExpiringProfileKeyCredentialAnonymousResponse + 22, // 45: org.signal.chat.profile.ProfileAnonymous.GetAvatarUploadForm:output_type -> org.signal.chat.profile.GetAvatarUploadFormResponse + 24, // 46: org.signal.chat.profile.ProfileAnonymous.ExtendAvatarTTL:output_type -> org.signal.chat.profile.ExtendAvatarTTLResponse + 26, // 47: org.signal.chat.profile.ProfileAnonymous.DeleteAvatar:output_type -> org.signal.chat.profile.DeleteAvatarResponse + 40, // [40:48] is the sub-list for method output_type + 32, // [32:40] is the sub-list for method input_type + 32, // [32:32] is the sub-list for extension type_name + 32, // [32:32] is the sub-list for extension extendee + 0, // [0:32] is the sub-list for field type_name } func init() { file_org_signal_chat_profile_proto_init() } @@ -2385,51 +2350,52 @@ func file_org_signal_chat_profile_proto_init() { if File_org_signal_chat_profile_proto != nil { return } - file_org_signal_chat_profile_proto_msgTypes[6].OneofWrappers = []any{} - file_org_signal_chat_profile_proto_msgTypes[7].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[4].OneofWrappers = []any{} + file_org_signal_chat_profile_proto_msgTypes[5].OneofWrappers = []any{ (*SetProfileResponse_Result)(nil), (*SetProfileResponse_ExpectedDataWriteConflict)(nil), (*SetProfileResponse_PaymentsForbiddenInRegion)(nil), (*SetProfileResponse_ExpectedVersionWriteConflict)(nil), + (*SetProfileResponse_ProfilesV2CapabilityRequired)(nil), } - file_org_signal_chat_profile_proto_msgTypes[9].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[7].OneofWrappers = []any{ (*GetProfileAnonymousRequest_UnidentifiedAccessKey)(nil), (*GetProfileAnonymousRequest_GroupSendToken)(nil), } - file_org_signal_chat_profile_proto_msgTypes[13].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[11].OneofWrappers = []any{ (*GetProfileResponse_Profile)(nil), (*GetProfileResponse_EtagMatched)(nil), (*GetProfileResponse_NotFound)(nil), (*GetProfileResponse_LegacyProfile)(nil), } - file_org_signal_chat_profile_proto_msgTypes[14].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[12].OneofWrappers = []any{ (*GetProfileAnonymousResponse_Profile)(nil), (*GetProfileAnonymousResponse_EtagMatched)(nil), (*GetProfileAnonymousResponse_NotFound)(nil), (*GetProfileAnonymousResponse_FailedUnidentifiedAuthorization)(nil), (*GetProfileAnonymousResponse_ProfileV1)(nil), } - file_org_signal_chat_profile_proto_msgTypes[17].OneofWrappers = []any{ - (*GetProfileKeyCredentialResponse_Result)(nil), - (*GetProfileKeyCredentialResponse_NotFound)(nil), - (*GetProfileKeyCredentialResponse_FailedUnidentifiedAuthorization)(nil), + file_org_signal_chat_profile_proto_msgTypes[16].OneofWrappers = []any{ + (*GetExpiringProfileKeyCredentialAnonymousResponse_Result)(nil), + (*GetExpiringProfileKeyCredentialAnonymousResponse_NotFound)(nil), + (*GetExpiringProfileKeyCredentialAnonymousResponse_FailedUnidentifiedAuthorization)(nil), } - file_org_signal_chat_profile_proto_msgTypes[19].OneofWrappers = []any{ - (*GetAvatarCredentialResponse_AvatarCredential)(nil), - (*GetAvatarCredentialResponse_MissingZkCredentialKey)(nil), + file_org_signal_chat_profile_proto_msgTypes[18].OneofWrappers = []any{ + (*GetAvatarCredentialsResponse_AvatarCredentials)(nil), + (*GetAvatarCredentialsResponse_MissingZkCredentialKey)(nil), } - file_org_signal_chat_profile_proto_msgTypes[21].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[20].OneofWrappers = []any{ (*GetAvatarUploadFormResponse_AvatarUploadForm)(nil), - (*GetAvatarUploadFormResponse_InvalidCredentialPresentation)(nil), + (*GetAvatarUploadFormResponse_InvalidCredentialsPresentation)(nil), } - file_org_signal_chat_profile_proto_msgTypes[23].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[22].OneofWrappers = []any{ (*ExtendAvatarTTLResponse_Path)(nil), - (*ExtendAvatarTTLResponse_InvalidCredentialPresentation)(nil), + (*ExtendAvatarTTLResponse_InvalidCredentialsPresentation)(nil), (*ExtendAvatarTTLResponse_NotFound)(nil), } - file_org_signal_chat_profile_proto_msgTypes[25].OneofWrappers = []any{ + file_org_signal_chat_profile_proto_msgTypes[24].OneofWrappers = []any{ (*DeleteAvatarResponse_Success)(nil), - (*DeleteAvatarResponse_InvalidCredentialPresentation)(nil), + (*DeleteAvatarResponse_InvalidCredentialsPresentation)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -2437,7 +2403,7 @@ func file_org_signal_chat_profile_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_org_signal_chat_profile_proto_rawDesc), len(file_org_signal_chat_profile_proto_rawDesc)), NumEnums: 2, - NumMessages: 26, + NumMessages: 25, NumExtensions: 0, NumServices: 2, }, diff --git a/pkg/signalmeow/protobuf/rpc/profile/profile_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/profile/profile_grpc.pb.go index 82dcc4f..f7be155 100644 --- a/pkg/signalmeow/protobuf/rpc/profile/profile_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/profile/profile_grpc.pb.go @@ -23,10 +23,9 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - Profile_SetProfile_FullMethodName = "/org.signal.chat.profile.Profile/SetProfile" - Profile_GetProfile_FullMethodName = "/org.signal.chat.profile.Profile/GetProfile" - Profile_GetAvatarCredential_FullMethodName = "/org.signal.chat.profile.Profile/GetAvatarCredential" - Profile_SetV1Avatar_FullMethodName = "/org.signal.chat.profile.Profile/SetV1Avatar" + Profile_SetProfile_FullMethodName = "/org.signal.chat.profile.Profile/SetProfile" + Profile_GetProfile_FullMethodName = "/org.signal.chat.profile.Profile/GetProfile" + Profile_GetAvatarCredentials_FullMethodName = "/org.signal.chat.profile.Profile/GetAvatarCredentials" ) // ProfileClient is the client API for Profile service. @@ -35,25 +34,15 @@ const ( // // Provides methods for working with profiles and profile-related data. type ProfileClient interface { - // Sets profile data and, if needed, returns a credential used by clients to upload a v1 avatar. + // Sets profile data and, if needed, returns credentials used by clients to upload a v1 avatar. SetProfile(ctx context.Context, in *SetProfileRequest, opts ...grpc.CallOption) (*SetProfileResponse, error) // Retrieves profile data. Callers with an unidentified access key for the account // should use the version of this method in `ProfileAnonymous` instead. GetProfile(ctx context.Context, in *GetProfileRequest, opts ...grpc.CallOption) (*GetProfileResponse, error) - // Returns an anonymous credential that may be presented with avatar operations in ProfilesAnonymous + // Returns anonymous credentials that may be presented with avatar operations in ProfilesAnonymous // // Note: `Accounts.SetZkCredentialKey` is a pre-requisite for this RPC - GetAvatarCredential(ctx context.Context, in *GetAvatarCredentialRequest, opts ...grpc.CallOption) (*GetAvatarCredentialResponse, error) - // Returns a credential used by clients to upload a v1 avatar, deleting any current avatar. - // - // This RPC streamlines avatar changes during the v1 -> v2 transition by minimizing uploads: - // 1. SetV1Avatar - // 2. Upload to CDN - // 3. SetProfile with v1 `AVATAR_CHANGE_UNCHANGED` and the v1 avatar in the v2 profile body - // - // Clients that do this will be required to upload current avatars using `ProfilesAnonymous.GetAvatarUploadFormRequest` - // once v1 Profile APIs are no longer supported. - SetV1Avatar(ctx context.Context, in *SetV1AvatarRequest, opts ...grpc.CallOption) (*SetV1AvatarResponse, error) + GetAvatarCredentials(ctx context.Context, in *GetAvatarCredentialsRequest, opts ...grpc.CallOption) (*GetAvatarCredentialsResponse, error) } type profileClient struct { @@ -84,20 +73,10 @@ func (c *profileClient) GetProfile(ctx context.Context, in *GetProfileRequest, o return out, nil } -func (c *profileClient) GetAvatarCredential(ctx context.Context, in *GetAvatarCredentialRequest, opts ...grpc.CallOption) (*GetAvatarCredentialResponse, error) { +func (c *profileClient) GetAvatarCredentials(ctx context.Context, in *GetAvatarCredentialsRequest, opts ...grpc.CallOption) (*GetAvatarCredentialsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetAvatarCredentialResponse) - err := c.cc.Invoke(ctx, Profile_GetAvatarCredential_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *profileClient) SetV1Avatar(ctx context.Context, in *SetV1AvatarRequest, opts ...grpc.CallOption) (*SetV1AvatarResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SetV1AvatarResponse) - err := c.cc.Invoke(ctx, Profile_SetV1Avatar_FullMethodName, in, out, cOpts...) + out := new(GetAvatarCredentialsResponse) + err := c.cc.Invoke(ctx, Profile_GetAvatarCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -110,25 +89,15 @@ func (c *profileClient) SetV1Avatar(ctx context.Context, in *SetV1AvatarRequest, // // Provides methods for working with profiles and profile-related data. type ProfileServer interface { - // Sets profile data and, if needed, returns a credential used by clients to upload a v1 avatar. + // Sets profile data and, if needed, returns credentials used by clients to upload a v1 avatar. SetProfile(context.Context, *SetProfileRequest) (*SetProfileResponse, error) // Retrieves profile data. Callers with an unidentified access key for the account // should use the version of this method in `ProfileAnonymous` instead. GetProfile(context.Context, *GetProfileRequest) (*GetProfileResponse, error) - // Returns an anonymous credential that may be presented with avatar operations in ProfilesAnonymous + // Returns anonymous credentials that may be presented with avatar operations in ProfilesAnonymous // // Note: `Accounts.SetZkCredentialKey` is a pre-requisite for this RPC - GetAvatarCredential(context.Context, *GetAvatarCredentialRequest) (*GetAvatarCredentialResponse, error) - // Returns a credential used by clients to upload a v1 avatar, deleting any current avatar. - // - // This RPC streamlines avatar changes during the v1 -> v2 transition by minimizing uploads: - // 1. SetV1Avatar - // 2. Upload to CDN - // 3. SetProfile with v1 `AVATAR_CHANGE_UNCHANGED` and the v1 avatar in the v2 profile body - // - // Clients that do this will be required to upload current avatars using `ProfilesAnonymous.GetAvatarUploadFormRequest` - // once v1 Profile APIs are no longer supported. - SetV1Avatar(context.Context, *SetV1AvatarRequest) (*SetV1AvatarResponse, error) + GetAvatarCredentials(context.Context, *GetAvatarCredentialsRequest) (*GetAvatarCredentialsResponse, error) mustEmbedUnimplementedProfileServer() } @@ -145,11 +114,8 @@ func (UnimplementedProfileServer) SetProfile(context.Context, *SetProfileRequest func (UnimplementedProfileServer) GetProfile(context.Context, *GetProfileRequest) (*GetProfileResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetProfile not implemented") } -func (UnimplementedProfileServer) GetAvatarCredential(context.Context, *GetAvatarCredentialRequest) (*GetAvatarCredentialResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetAvatarCredential not implemented") -} -func (UnimplementedProfileServer) SetV1Avatar(context.Context, *SetV1AvatarRequest) (*SetV1AvatarResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SetV1Avatar not implemented") +func (UnimplementedProfileServer) GetAvatarCredentials(context.Context, *GetAvatarCredentialsRequest) (*GetAvatarCredentialsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetAvatarCredentials not implemented") } func (UnimplementedProfileServer) mustEmbedUnimplementedProfileServer() {} func (UnimplementedProfileServer) testEmbeddedByValue() {} @@ -208,38 +174,20 @@ func _Profile_GetProfile_Handler(srv interface{}, ctx context.Context, dec func( return interceptor(ctx, in, info, handler) } -func _Profile_GetAvatarCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAvatarCredentialRequest) +func _Profile_GetAvatarCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAvatarCredentialsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProfileServer).GetAvatarCredential(ctx, in) + return srv.(ProfileServer).GetAvatarCredentials(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Profile_GetAvatarCredential_FullMethodName, + FullMethod: Profile_GetAvatarCredentials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProfileServer).GetAvatarCredential(ctx, req.(*GetAvatarCredentialRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Profile_SetV1Avatar_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SetV1AvatarRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProfileServer).SetV1Avatar(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Profile_SetV1Avatar_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProfileServer).SetV1Avatar(ctx, req.(*SetV1AvatarRequest)) + return srv.(ProfileServer).GetAvatarCredentials(ctx, req.(*GetAvatarCredentialsRequest)) } return interceptor(ctx, in, info, handler) } @@ -260,12 +208,8 @@ var Profile_ServiceDesc = grpc.ServiceDesc{ Handler: _Profile_GetProfile_Handler, }, { - MethodName: "GetAvatarCredential", - Handler: _Profile_GetAvatarCredential_Handler, - }, - { - MethodName: "SetV1Avatar", - Handler: _Profile_SetV1Avatar_Handler, + MethodName: "GetAvatarCredentials", + Handler: _Profile_GetAvatarCredentials_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -273,11 +217,11 @@ var Profile_ServiceDesc = grpc.ServiceDesc{ } const ( - ProfileAnonymous_GetProfile_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetProfile" - ProfileAnonymous_GetProfileKeyCredential_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetProfileKeyCredential" - ProfileAnonymous_GetAvatarUploadForm_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetAvatarUploadForm" - ProfileAnonymous_ExtendAvatarTTL_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/ExtendAvatarTTL" - ProfileAnonymous_DeleteAvatar_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/DeleteAvatar" + ProfileAnonymous_GetProfile_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetProfile" + ProfileAnonymous_GetExpiringProfileKeyCredential_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetExpiringProfileKeyCredential" + ProfileAnonymous_GetAvatarUploadForm_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/GetAvatarUploadForm" + ProfileAnonymous_ExtendAvatarTTL_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/ExtendAvatarTTL" + ProfileAnonymous_DeleteAvatar_FullMethodName = "/org.signal.chat.profile.ProfileAnonymous/DeleteAvatar" ) // ProfileAnonymousClient is the client API for ProfileAnonymous service. @@ -294,15 +238,15 @@ type ProfileAnonymousClient interface { // Retrieves profile data. GetProfile(ctx context.Context, in *GetProfileAnonymousRequest, opts ...grpc.CallOption) (*GetProfileAnonymousResponse, error) // Retrieves a profile key credential. - GetProfileKeyCredential(ctx context.Context, in *GetProfileKeyCredentialRequest, opts ...grpc.CallOption) (*GetProfileKeyCredentialResponse, error) - // Returns a credential to upload a v2 avatar. After uploading the avatar, the client + GetExpiringProfileKeyCredential(ctx context.Context, in *GetExpiringProfileKeyCredentialAnonymousRequest, opts ...grpc.CallOption) (*GetExpiringProfileKeyCredentialAnonymousResponse, error) + // Returns credentials to upload a v2 avatar. After uploading the avatar, the client // must call SetProfile with the new avatar URL in the encrypted `data`. // // Because avatars are uploaded anonymously, they have an expiration equal to the // idle account expiration. Clients must periodically (recommended: every 90 days) // call ExtendAvatarTTL to extend the TTl. // - // Note: any existing avatar associated with this credential will be deleted immediately + // Note: any existing avatar associated with these credentials will be deleted immediately GetAvatarUploadForm(ctx context.Context, in *GetAvatarUploadFormRequest, opts ...grpc.CallOption) (*GetAvatarUploadFormResponse, error) // Extends the TTL of the avatar currently associated with the request’s avatar auth credential ExtendAvatarTTL(ctx context.Context, in *ExtendAvatarTTLRequest, opts ...grpc.CallOption) (*ExtendAvatarTTLResponse, error) @@ -330,10 +274,10 @@ func (c *profileAnonymousClient) GetProfile(ctx context.Context, in *GetProfileA return out, nil } -func (c *profileAnonymousClient) GetProfileKeyCredential(ctx context.Context, in *GetProfileKeyCredentialRequest, opts ...grpc.CallOption) (*GetProfileKeyCredentialResponse, error) { +func (c *profileAnonymousClient) GetExpiringProfileKeyCredential(ctx context.Context, in *GetExpiringProfileKeyCredentialAnonymousRequest, opts ...grpc.CallOption) (*GetExpiringProfileKeyCredentialAnonymousResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetProfileKeyCredentialResponse) - err := c.cc.Invoke(ctx, ProfileAnonymous_GetProfileKeyCredential_FullMethodName, in, out, cOpts...) + out := new(GetExpiringProfileKeyCredentialAnonymousResponse) + err := c.cc.Invoke(ctx, ProfileAnonymous_GetExpiringProfileKeyCredential_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -384,15 +328,15 @@ type ProfileAnonymousServer interface { // Retrieves profile data. GetProfile(context.Context, *GetProfileAnonymousRequest) (*GetProfileAnonymousResponse, error) // Retrieves a profile key credential. - GetProfileKeyCredential(context.Context, *GetProfileKeyCredentialRequest) (*GetProfileKeyCredentialResponse, error) - // Returns a credential to upload a v2 avatar. After uploading the avatar, the client + GetExpiringProfileKeyCredential(context.Context, *GetExpiringProfileKeyCredentialAnonymousRequest) (*GetExpiringProfileKeyCredentialAnonymousResponse, error) + // Returns credentials to upload a v2 avatar. After uploading the avatar, the client // must call SetProfile with the new avatar URL in the encrypted `data`. // // Because avatars are uploaded anonymously, they have an expiration equal to the // idle account expiration. Clients must periodically (recommended: every 90 days) // call ExtendAvatarTTL to extend the TTl. // - // Note: any existing avatar associated with this credential will be deleted immediately + // Note: any existing avatar associated with these credentials will be deleted immediately GetAvatarUploadForm(context.Context, *GetAvatarUploadFormRequest) (*GetAvatarUploadFormResponse, error) // Extends the TTL of the avatar currently associated with the request’s avatar auth credential ExtendAvatarTTL(context.Context, *ExtendAvatarTTLRequest) (*ExtendAvatarTTLResponse, error) @@ -413,8 +357,8 @@ type UnimplementedProfileAnonymousServer struct{} func (UnimplementedProfileAnonymousServer) GetProfile(context.Context, *GetProfileAnonymousRequest) (*GetProfileAnonymousResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetProfile not implemented") } -func (UnimplementedProfileAnonymousServer) GetProfileKeyCredential(context.Context, *GetProfileKeyCredentialRequest) (*GetProfileKeyCredentialResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetProfileKeyCredential not implemented") +func (UnimplementedProfileAnonymousServer) GetExpiringProfileKeyCredential(context.Context, *GetExpiringProfileKeyCredentialAnonymousRequest) (*GetExpiringProfileKeyCredentialAnonymousResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetExpiringProfileKeyCredential not implemented") } func (UnimplementedProfileAnonymousServer) GetAvatarUploadForm(context.Context, *GetAvatarUploadFormRequest) (*GetAvatarUploadFormResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetAvatarUploadForm not implemented") @@ -464,20 +408,20 @@ func _ProfileAnonymous_GetProfile_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _ProfileAnonymous_GetProfileKeyCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetProfileKeyCredentialRequest) +func _ProfileAnonymous_GetExpiringProfileKeyCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetExpiringProfileKeyCredentialAnonymousRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ProfileAnonymousServer).GetProfileKeyCredential(ctx, in) + return srv.(ProfileAnonymousServer).GetExpiringProfileKeyCredential(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: ProfileAnonymous_GetProfileKeyCredential_FullMethodName, + FullMethod: ProfileAnonymous_GetExpiringProfileKeyCredential_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProfileAnonymousServer).GetProfileKeyCredential(ctx, req.(*GetProfileKeyCredentialRequest)) + return srv.(ProfileAnonymousServer).GetExpiringProfileKeyCredential(ctx, req.(*GetExpiringProfileKeyCredentialAnonymousRequest)) } return interceptor(ctx, in, info, handler) } @@ -548,8 +492,8 @@ var ProfileAnonymous_ServiceDesc = grpc.ServiceDesc{ Handler: _ProfileAnonymous_GetProfile_Handler, }, { - MethodName: "GetProfileKeyCredential", - Handler: _ProfileAnonymous_GetProfileKeyCredential_Handler, + MethodName: "GetExpiringProfileKeyCredential", + Handler: _ProfileAnonymous_GetExpiringProfileKeyCredential_Handler, }, { MethodName: "GetAvatarUploadForm", diff --git a/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions.pb.go b/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions.pb.go index b6d0e2b..f39f345 100644 --- a/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions.pb.go +++ b/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions.pb.go @@ -260,9 +260,8 @@ func (BankTransferType) EnumDescriptor() ([]byte, []int) { } type UpdateSubscriberRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // New subscriber-ids must be a randomly-generated 32 byte byte-string. - SubscriberId []byte `protobuf:"bytes,1,opt,name=subscriber_id,json=subscriberId,proto3" json:"subscriber_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SubscriberId []byte `protobuf:"bytes,1,opt,name=subscriber_id,json=subscriberId,proto3" json:"subscriber_id,omitempty"` // A libsignal DonationPermit from rpc Donations.CreateDonationPermit. // Not required if the subscriber already exists. DonationPermit []byte `protobuf:"bytes,2,opt,name=donation_permit,json=donationPermit,proto3" json:"donation_permit,omitempty"` @@ -319,6 +318,7 @@ type UpdateSubscriberResponse struct { // Types that are valid to be assigned to Response: // // *UpdateSubscriberResponse_Success + // *UpdateSubscriberResponse_SubscriberIdMismatch // *UpdateSubscriberResponse_PermitRejected Response isUpdateSubscriberResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields @@ -371,6 +371,15 @@ func (x *UpdateSubscriberResponse) GetSuccess() *emptypb.Empty { return nil } +func (x *UpdateSubscriberResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*UpdateSubscriberResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *UpdateSubscriberResponse) GetPermitRejected() *errors.FailedZkAuthentication { if x != nil { if x, ok := x.Response.(*UpdateSubscriberResponse_PermitRejected); ok { @@ -388,13 +397,20 @@ type UpdateSubscriberResponse_Success struct { Success *emptypb.Empty `protobuf:"bytes,1,opt,name=success,proto3,oneof"` } +type UpdateSubscriberResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,2,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type UpdateSubscriberResponse_PermitRejected struct { // The donation permit was expired or already spent - PermitRejected *errors.FailedZkAuthentication `protobuf:"bytes,2,opt,name=permit_rejected,json=permitRejected,proto3,oneof"` + PermitRejected *errors.FailedZkAuthentication `protobuf:"bytes,3,opt,name=permit_rejected,json=permitRejected,proto3,oneof"` } func (*UpdateSubscriberResponse_Success) isUpdateSubscriberResponse_Response() {} +func (*UpdateSubscriberResponse_SubscriberIdMismatch) isUpdateSubscriberResponse_Response() {} + func (*UpdateSubscriberResponse_PermitRejected) isUpdateSubscriberResponse_Response() {} type DeleteSubscriberRequest struct { @@ -526,7 +542,6 @@ type DeleteSubscriberResponse_Success struct { } type DeleteSubscriberResponse_SubscriberNotFound struct { - // The subscriber did not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } @@ -610,6 +625,7 @@ type CreatePaymentMethodResponse struct { // // *CreatePaymentMethodResponse_Result // *CreatePaymentMethodResponse_SubscriberNotFound + // *CreatePaymentMethodResponse_SubscriberIdMismatch // *CreatePaymentMethodResponse_SubscriptionProcessorConflict // *CreatePaymentMethodResponse_PermitRejected Response isCreatePaymentMethodResponse_Response `protobuf_oneof:"response"` @@ -672,6 +688,15 @@ func (x *CreatePaymentMethodResponse) GetSubscriberNotFound() *errors.NotFound { return nil } +func (x *CreatePaymentMethodResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*CreatePaymentMethodResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *CreatePaymentMethodResponse) GetSubscriptionProcessorConflict() *errors.FailedPrecondition { if x != nil { if x, ok := x.Response.(*CreatePaymentMethodResponse_SubscriptionProcessorConflict); ok { @@ -699,25 +724,30 @@ type CreatePaymentMethodResponse_Result struct { } type CreatePaymentMethodResponse_SubscriberNotFound struct { - // The subscriber did not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type CreatePaymentMethodResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type CreatePaymentMethodResponse_SubscriptionProcessorConflict struct { - // New payment processor does not match existing processor associated with - // the subscription - SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` + // New payment processor does not match existing processor associated with the subscription + SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` } type CreatePaymentMethodResponse_PermitRejected struct { // The donation permit was expired or already spent - PermitRejected *errors.FailedZkAuthentication `protobuf:"bytes,4,opt,name=permit_rejected,json=permitRejected,proto3,oneof"` + PermitRejected *errors.FailedZkAuthentication `protobuf:"bytes,5,opt,name=permit_rejected,json=permitRejected,proto3,oneof"` } func (*CreatePaymentMethodResponse_Result) isCreatePaymentMethodResponse_Response() {} func (*CreatePaymentMethodResponse_SubscriberNotFound) isCreatePaymentMethodResponse_Response() {} +func (*CreatePaymentMethodResponse_SubscriberIdMismatch) isCreatePaymentMethodResponse_Response() {} + func (*CreatePaymentMethodResponse_SubscriptionProcessorConflict) isCreatePaymentMethodResponse_Response() { } @@ -791,6 +821,7 @@ type CreatePayPalPaymentMethodResponse struct { // // *CreatePayPalPaymentMethodResponse_Result // *CreatePayPalPaymentMethodResponse_SubscriberNotFound + // *CreatePayPalPaymentMethodResponse_SubscriberIdMismatch // *CreatePayPalPaymentMethodResponse_SubscriptionProcessorConflict Response isCreatePayPalPaymentMethodResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields @@ -852,6 +883,15 @@ func (x *CreatePayPalPaymentMethodResponse) GetSubscriberNotFound() *errors.NotF return nil } +func (x *CreatePayPalPaymentMethodResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*CreatePayPalPaymentMethodResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *CreatePayPalPaymentMethodResponse) GetSubscriptionProcessorConflict() *errors.FailedPrecondition { if x != nil { if x, ok := x.Response.(*CreatePayPalPaymentMethodResponse_SubscriptionProcessorConflict); ok { @@ -870,14 +910,17 @@ type CreatePayPalPaymentMethodResponse_Result struct { } type CreatePayPalPaymentMethodResponse_SubscriberNotFound struct { - // The subscriber did not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type CreatePayPalPaymentMethodResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type CreatePayPalPaymentMethodResponse_SubscriptionProcessorConflict struct { - // New payment processor does not match existing processor associated with - // the subscription - SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` + // New payment processor does not match existing processor associated with the subscription + SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` } func (*CreatePayPalPaymentMethodResponse_Result) isCreatePayPalPaymentMethodResponse_Response() {} @@ -885,6 +928,9 @@ func (*CreatePayPalPaymentMethodResponse_Result) isCreatePayPalPaymentMethodResp func (*CreatePayPalPaymentMethodResponse_SubscriberNotFound) isCreatePayPalPaymentMethodResponse_Response() { } +func (*CreatePayPalPaymentMethodResponse_SubscriberIdMismatch) isCreatePayPalPaymentMethodResponse_Response() { +} + func (*CreatePayPalPaymentMethodResponse_SubscriptionProcessorConflict) isCreatePayPalPaymentMethodResponse_Response() { } @@ -1000,7 +1046,9 @@ type SetDefaultPaymentMethodResponse struct { // // *SetDefaultPaymentMethodResponse_Success // *SetDefaultPaymentMethodResponse_SubscriberNotFound + // *SetDefaultPaymentMethodResponse_SubscriberIdMismatch // *SetDefaultPaymentMethodResponse_PaymentMethodNotSetUp + // *SetDefaultPaymentMethodResponse_SubscriptionProcessorConflict Response isSetDefaultPaymentMethodResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1061,6 +1109,15 @@ func (x *SetDefaultPaymentMethodResponse) GetSubscriberNotFound() *errors.NotFou return nil } +func (x *SetDefaultPaymentMethodResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*SetDefaultPaymentMethodResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *SetDefaultPaymentMethodResponse) GetPaymentMethodNotSetUp() *errors.FailedPrecondition { if x != nil { if x, ok := x.Response.(*SetDefaultPaymentMethodResponse_PaymentMethodNotSetUp); ok { @@ -1070,6 +1127,15 @@ func (x *SetDefaultPaymentMethodResponse) GetPaymentMethodNotSetUp() *errors.Fai return nil } +func (x *SetDefaultPaymentMethodResponse) GetSubscriptionProcessorConflict() *errors.FailedPrecondition { + if x != nil { + if x, ok := x.Response.(*SetDefaultPaymentMethodResponse_SubscriptionProcessorConflict); ok { + return x.SubscriptionProcessorConflict + } + } + return nil +} + type isSetDefaultPaymentMethodResponse_Response interface { isSetDefaultPaymentMethodResponse_Response() } @@ -1079,14 +1145,21 @@ type SetDefaultPaymentMethodResponse_Success struct { } type SetDefaultPaymentMethodResponse_SubscriberNotFound struct { - // The subscriber did not exist, or the referenced setup intent was not found SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type SetDefaultPaymentMethodResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type SetDefaultPaymentMethodResponse_PaymentMethodNotSetUp struct { - // No payment method has been created for the subscriber, or the provided - // payment method has not finished being set up with the processor - PaymentMethodNotSetUp *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=payment_method_not_set_up,json=paymentMethodNotSetUp,proto3,oneof"` + PaymentMethodNotSetUp *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=payment_method_not_set_up,json=paymentMethodNotSetUp,proto3,oneof"` +} + +type SetDefaultPaymentMethodResponse_SubscriptionProcessorConflict struct { + // Payment processor does not match existing processor associated with the subscription + SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` } func (*SetDefaultPaymentMethodResponse_Success) isSetDefaultPaymentMethodResponse_Response() {} @@ -1094,9 +1167,15 @@ func (*SetDefaultPaymentMethodResponse_Success) isSetDefaultPaymentMethodRespons func (*SetDefaultPaymentMethodResponse_SubscriberNotFound) isSetDefaultPaymentMethodResponse_Response() { } +func (*SetDefaultPaymentMethodResponse_SubscriberIdMismatch) isSetDefaultPaymentMethodResponse_Response() { +} + func (*SetDefaultPaymentMethodResponse_PaymentMethodNotSetUp) isSetDefaultPaymentMethodResponse_Response() { } +func (*SetDefaultPaymentMethodResponse_SubscriptionProcessorConflict) isSetDefaultPaymentMethodResponse_Response() { +} + type SetSubscriptionLevelRequest struct { state protoimpl.MessageState `protogen:"open.v1"` SubscriberId []byte `protobuf:"bytes,1,opt,name=subscriberId,proto3" json:"subscriberId,omitempty"` @@ -1321,6 +1400,7 @@ type SetSubscriptionLevelResponse struct { // // *SetSubscriptionLevelResponse_Success // *SetSubscriptionLevelResponse_SubscriberNotFound + // *SetSubscriptionLevelResponse_SubscriberIdMismatch // *SetSubscriptionLevelResponse_SubscriptionProcessorConflict // *SetSubscriptionLevelResponse_PaymentMethodNotSetUp // *SetSubscriptionLevelResponse_UnsupportedOperation @@ -1390,6 +1470,15 @@ func (x *SetSubscriptionLevelResponse) GetSubscriberNotFound() *errors.NotFound return nil } +func (x *SetSubscriptionLevelResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*SetSubscriptionLevelResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *SetSubscriptionLevelResponse) GetSubscriptionProcessorConflict() *errors.FailedPrecondition { if x != nil { if x, ok := x.Response.(*SetSubscriptionLevelResponse_SubscriptionProcessorConflict); ok { @@ -1480,60 +1569,64 @@ type SetSubscriptionLevelResponse_Success struct { } type SetSubscriptionLevelResponse_SubscriberNotFound struct { - // The subscriber did not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type SetSubscriptionLevelResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type SetSubscriptionLevelResponse_SubscriptionProcessorConflict struct { - // New payment processor does not match existing processor associated with - // the subscription - SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` + // New payment processor does not match existing processor associated with the subscription + SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` } type SetSubscriptionLevelResponse_PaymentMethodNotSetUp struct { - // No payment method has been created for the subscriber - PaymentMethodNotSetUp *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=payment_method_not_set_up,json=paymentMethodNotSetUp,proto3,oneof"` + PaymentMethodNotSetUp *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=payment_method_not_set_up,json=paymentMethodNotSetUp,proto3,oneof"` } type SetSubscriptionLevelResponse_UnsupportedOperation struct { // The payment processor does not support this operation - UnsupportedOperation *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=unsupported_operation,json=unsupportedOperation,proto3,oneof"` + UnsupportedOperation *errors.FailedPrecondition `protobuf:"bytes,6,opt,name=unsupported_operation,json=unsupportedOperation,proto3,oneof"` } type SetSubscriptionLevelResponse_UnsupportedLevel struct { // The requested level was invalid - UnsupportedLevel *errors.FailedPrecondition `protobuf:"bytes,6,opt,name=unsupported_level,json=unsupportedLevel,proto3,oneof"` + UnsupportedLevel *errors.FailedPrecondition `protobuf:"bytes,7,opt,name=unsupported_level,json=unsupportedLevel,proto3,oneof"` } type SetSubscriptionLevelResponse_UnsupportedCurrency struct { // The requested currency was invalid - UnsupportedCurrency *errors.FailedPrecondition `protobuf:"bytes,7,opt,name=unsupported_currency,json=unsupportedCurrency,proto3,oneof"` + UnsupportedCurrency *errors.FailedPrecondition `protobuf:"bytes,8,opt,name=unsupported_currency,json=unsupportedCurrency,proto3,oneof"` } type SetSubscriptionLevelResponse_PaymentRequiresAction struct { // The card could not be charged - PaymentRequiresAction *errors.FailedPrecondition `protobuf:"bytes,8,opt,name=payment_requires_action,json=paymentRequiresAction,proto3,oneof"` + PaymentRequiresAction *errors.FailedPrecondition `protobuf:"bytes,9,opt,name=payment_requires_action,json=paymentRequiresAction,proto3,oneof"` } type SetSubscriptionLevelResponse_InvalidLevelTransition struct { // Cannot transition from existing level to the requested level - InvalidLevelTransition *errors.FailedPrecondition `protobuf:"bytes,9,opt,name=invalid_level_transition,json=invalidLevelTransition,proto3,oneof"` + InvalidLevelTransition *errors.FailedPrecondition `protobuf:"bytes,10,opt,name=invalid_level_transition,json=invalidLevelTransition,proto3,oneof"` } type SetSubscriptionLevelResponse_InvalidIdempotencyKey struct { // The idempotency key was invalid or re-used with a modified request - InvalidIdempotencyKey *errors.FailedPrecondition `protobuf:"bytes,10,opt,name=invalid_idempotency_key,json=invalidIdempotencyKey,proto3,oneof"` + InvalidIdempotencyKey *errors.FailedPrecondition `protobuf:"bytes,11,opt,name=invalid_idempotency_key,json=invalidIdempotencyKey,proto3,oneof"` } type SetSubscriptionLevelResponse_ChargeFailure struct { // The payment failed; see charge failure details - ChargeFailure *ChargeFailure `protobuf:"bytes,11,opt,name=charge_failure,json=chargeFailure,proto3,oneof"` + ChargeFailure *ChargeFailure `protobuf:"bytes,12,opt,name=charge_failure,json=chargeFailure,proto3,oneof"` } func (*SetSubscriptionLevelResponse_Success) isSetSubscriptionLevelResponse_Response() {} func (*SetSubscriptionLevelResponse_SubscriberNotFound) isSetSubscriptionLevelResponse_Response() {} +func (*SetSubscriptionLevelResponse_SubscriberIdMismatch) isSetSubscriptionLevelResponse_Response() {} + func (*SetSubscriptionLevelResponse_SubscriptionProcessorConflict) isSetSubscriptionLevelResponse_Response() { } @@ -1653,6 +1746,7 @@ type SetIapSubscriptionResponse struct { // // *SetIapSubscriptionResponse_Success // *SetIapSubscriptionResponse_SubscriberNotFound + // *SetIapSubscriptionResponse_SubscriberIdMismatch // *SetIapSubscriptionResponse_SubscriptionProcessorConflict // *SetIapSubscriptionResponse_PaymentRequired // *SetIapSubscriptionResponse_InvalidTransaction @@ -1716,6 +1810,15 @@ func (x *SetIapSubscriptionResponse) GetSubscriberNotFound() *errors.NotFound { return nil } +func (x *SetIapSubscriptionResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*SetIapSubscriptionResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + func (x *SetIapSubscriptionResponse) GetSubscriptionProcessorConflict() *errors.FailedPrecondition { if x != nil { if x, ok := x.Response.(*SetIapSubscriptionResponse_SubscriptionProcessorConflict); ok { @@ -1752,32 +1855,33 @@ type SetIapSubscriptionResponse_Success struct { } type SetIapSubscriptionResponse_SubscriberNotFound struct { - // The subscriber did not exist or the provided purchase identifier does not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type SetIapSubscriptionResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + type SetIapSubscriptionResponse_SubscriptionProcessorConflict struct { - // New payment processor does not match existing processor associated with - // the subscription - SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` + // New payment processor does not match existing processor associated with the subscription + SubscriptionProcessorConflict *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=subscription_processor_conflict,json=subscriptionProcessorConflict,proto3,oneof"` } type SetIapSubscriptionResponse_PaymentRequired struct { - // The subscription is not in a purchase state that grants the user an - // entitlement - PaymentRequired *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=payment_required,json=paymentRequired,proto3,oneof"` + PaymentRequired *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=payment_required,json=paymentRequired,proto3,oneof"` } type SetIapSubscriptionResponse_InvalidTransaction struct { - // The provided purchase identifier is malformed or the identified - // transaction is not supported for use at this endpoint - InvalidTransaction *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=invalid_transaction,json=invalidTransaction,proto3,oneof"` + InvalidTransaction *errors.FailedPrecondition `protobuf:"bytes,6,opt,name=invalid_transaction,json=invalidTransaction,proto3,oneof"` } func (*SetIapSubscriptionResponse_Success) isSetIapSubscriptionResponse_Response() {} func (*SetIapSubscriptionResponse_SubscriberNotFound) isSetIapSubscriptionResponse_Response() {} +func (*SetIapSubscriptionResponse_SubscriberIdMismatch) isSetIapSubscriptionResponse_Response() {} + func (*SetIapSubscriptionResponse_SubscriptionProcessorConflict) isSetIapSubscriptionResponse_Response() { } @@ -1785,7 +1889,7 @@ func (*SetIapSubscriptionResponse_PaymentRequired) isSetIapSubscriptionResponse_ func (*SetIapSubscriptionResponse_InvalidTransaction) isSetIapSubscriptionResponse_Response() {} -type GetReceiptCredentialRequest struct { +type GetReceiptCredentialsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` SubscriberId []byte `protobuf:"bytes,1,opt,name=subscriberId,proto3" json:"subscriberId,omitempty"` ReceiptCredentialRequest []byte `protobuf:"bytes,2,opt,name=receiptCredentialRequest,proto3" json:"receiptCredentialRequest,omitempty"` @@ -1793,20 +1897,20 @@ type GetReceiptCredentialRequest struct { sizeCache protoimpl.SizeCache } -func (x *GetReceiptCredentialRequest) Reset() { - *x = GetReceiptCredentialRequest{} +func (x *GetReceiptCredentialsRequest) Reset() { + *x = GetReceiptCredentialsRequest{} mi := &file_org_signal_chat_subscriptions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetReceiptCredentialRequest) String() string { +func (x *GetReceiptCredentialsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReceiptCredentialRequest) ProtoMessage() {} +func (*GetReceiptCredentialsRequest) ProtoMessage() {} -func (x *GetReceiptCredentialRequest) ProtoReflect() protoreflect.Message { +func (x *GetReceiptCredentialsRequest) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_subscriptions_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1818,53 +1922,54 @@ func (x *GetReceiptCredentialRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReceiptCredentialRequest.ProtoReflect.Descriptor instead. -func (*GetReceiptCredentialRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetReceiptCredentialsRequest.ProtoReflect.Descriptor instead. +func (*GetReceiptCredentialsRequest) Descriptor() ([]byte, []int) { return file_org_signal_chat_subscriptions_proto_rawDescGZIP(), []int{16} } -func (x *GetReceiptCredentialRequest) GetSubscriberId() []byte { +func (x *GetReceiptCredentialsRequest) GetSubscriberId() []byte { if x != nil { return x.SubscriberId } return nil } -func (x *GetReceiptCredentialRequest) GetReceiptCredentialRequest() []byte { +func (x *GetReceiptCredentialsRequest) GetReceiptCredentialRequest() []byte { if x != nil { return x.ReceiptCredentialRequest } return nil } -type GetReceiptCredentialResponse struct { +type GetReceiptCredentialsResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Response: // - // *GetReceiptCredentialResponse_Success - // *GetReceiptCredentialResponse_SubscriberNotFound - // *GetReceiptCredentialResponse_NoPaidInvoice - // *GetReceiptCredentialResponse_PaymentRequired - // *GetReceiptCredentialResponse_AlreadyRedeemed - Response isGetReceiptCredentialResponse_Response `protobuf_oneof:"response"` + // *GetReceiptCredentialsResponse_Success + // *GetReceiptCredentialsResponse_SubscriberNotFound + // *GetReceiptCredentialsResponse_SubscriberIdMismatch + // *GetReceiptCredentialsResponse_NoPaidInvoice + // *GetReceiptCredentialsResponse_PaymentRequired + // *GetReceiptCredentialsResponse_AlreadyRedeemed + Response isGetReceiptCredentialsResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetReceiptCredentialResponse) Reset() { - *x = GetReceiptCredentialResponse{} +func (x *GetReceiptCredentialsResponse) Reset() { + *x = GetReceiptCredentialsResponse{} mi := &file_org_signal_chat_subscriptions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetReceiptCredentialResponse) String() string { +func (x *GetReceiptCredentialsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReceiptCredentialResponse) ProtoMessage() {} +func (*GetReceiptCredentialsResponse) ProtoMessage() {} -func (x *GetReceiptCredentialResponse) ProtoReflect() protoreflect.Message { +func (x *GetReceiptCredentialsResponse) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_subscriptions_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1876,100 +1981,116 @@ func (x *GetReceiptCredentialResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReceiptCredentialResponse.ProtoReflect.Descriptor instead. -func (*GetReceiptCredentialResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetReceiptCredentialsResponse.ProtoReflect.Descriptor instead. +func (*GetReceiptCredentialsResponse) Descriptor() ([]byte, []int) { return file_org_signal_chat_subscriptions_proto_rawDescGZIP(), []int{17} } -func (x *GetReceiptCredentialResponse) GetResponse() isGetReceiptCredentialResponse_Response { +func (x *GetReceiptCredentialsResponse) GetResponse() isGetReceiptCredentialsResponse_Response { if x != nil { return x.Response } return nil } -func (x *GetReceiptCredentialResponse) GetSuccess() *GetReceiptCredentialResponse_GetReceiptCredentialResult { +func (x *GetReceiptCredentialsResponse) GetSuccess() *GetReceiptCredentialsResponse_GetReceiptCredentialsResult { if x != nil { - if x, ok := x.Response.(*GetReceiptCredentialResponse_Success); ok { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_Success); ok { return x.Success } } return nil } -func (x *GetReceiptCredentialResponse) GetSubscriberNotFound() *errors.NotFound { +func (x *GetReceiptCredentialsResponse) GetSubscriberNotFound() *errors.NotFound { if x != nil { - if x, ok := x.Response.(*GetReceiptCredentialResponse_SubscriberNotFound); ok { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_SubscriberNotFound); ok { return x.SubscriberNotFound } } return nil } -func (x *GetReceiptCredentialResponse) GetNoPaidInvoice() *errors.FailedPrecondition { +func (x *GetReceiptCredentialsResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { if x != nil { - if x, ok := x.Response.(*GetReceiptCredentialResponse_NoPaidInvoice); ok { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + +func (x *GetReceiptCredentialsResponse) GetNoPaidInvoice() *errors.FailedPrecondition { + if x != nil { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_NoPaidInvoice); ok { return x.NoPaidInvoice } } return nil } -func (x *GetReceiptCredentialResponse) GetPaymentRequired() *PaymentRequired { +func (x *GetReceiptCredentialsResponse) GetPaymentRequired() *PaymentRequired { if x != nil { - if x, ok := x.Response.(*GetReceiptCredentialResponse_PaymentRequired); ok { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_PaymentRequired); ok { return x.PaymentRequired } } return nil } -func (x *GetReceiptCredentialResponse) GetAlreadyRedeemed() *errors.FailedPrecondition { +func (x *GetReceiptCredentialsResponse) GetAlreadyRedeemed() *errors.FailedPrecondition { if x != nil { - if x, ok := x.Response.(*GetReceiptCredentialResponse_AlreadyRedeemed); ok { + if x, ok := x.Response.(*GetReceiptCredentialsResponse_AlreadyRedeemed); ok { return x.AlreadyRedeemed } } return nil } -type isGetReceiptCredentialResponse_Response interface { - isGetReceiptCredentialResponse_Response() +type isGetReceiptCredentialsResponse_Response interface { + isGetReceiptCredentialsResponse_Response() } -type GetReceiptCredentialResponse_Success struct { - Success *GetReceiptCredentialResponse_GetReceiptCredentialResult `protobuf:"bytes,1,opt,name=success,proto3,oneof"` +type GetReceiptCredentialsResponse_Success struct { + Success *GetReceiptCredentialsResponse_GetReceiptCredentialsResult `protobuf:"bytes,1,opt,name=success,proto3,oneof"` } -type GetReceiptCredentialResponse_SubscriberNotFound struct { - // The subscriber did not exist or it did not have an associated subscription +type GetReceiptCredentialsResponse_SubscriberNotFound struct { SubscriberNotFound *errors.NotFound `protobuf:"bytes,2,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } -type GetReceiptCredentialResponse_NoPaidInvoice struct { +type GetReceiptCredentialsResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,3,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + +type GetReceiptCredentialsResponse_NoPaidInvoice struct { // No invoice has been issued for this subscription OR invoice is in 'draft' or 'open' state - NoPaidInvoice *errors.FailedPrecondition `protobuf:"bytes,3,opt,name=no_paid_invoice,json=noPaidInvoice,proto3,oneof"` + NoPaidInvoice *errors.FailedPrecondition `protobuf:"bytes,4,opt,name=no_paid_invoice,json=noPaidInvoice,proto3,oneof"` } -type GetReceiptCredentialResponse_PaymentRequired struct { +type GetReceiptCredentialsResponse_PaymentRequired struct { // Invoice is in any state other than 'draft', 'open', or 'paid'; Charge failure details may be present - PaymentRequired *PaymentRequired `protobuf:"bytes,4,opt,name=payment_required,json=paymentRequired,proto3,oneof"` + PaymentRequired *PaymentRequired `protobuf:"bytes,5,opt,name=payment_required,json=paymentRequired,proto3,oneof"` } -type GetReceiptCredentialResponse_AlreadyRedeemed struct { +type GetReceiptCredentialsResponse_AlreadyRedeemed struct { // Latest paid receipt on subscription was already redeemed for a receipt credential but with a different GetReceiptCredentialRequest - AlreadyRedeemed *errors.FailedPrecondition `protobuf:"bytes,5,opt,name=already_redeemed,json=alreadyRedeemed,proto3,oneof"` + AlreadyRedeemed *errors.FailedPrecondition `protobuf:"bytes,6,opt,name=already_redeemed,json=alreadyRedeemed,proto3,oneof"` } -func (*GetReceiptCredentialResponse_Success) isGetReceiptCredentialResponse_Response() {} +func (*GetReceiptCredentialsResponse_Success) isGetReceiptCredentialsResponse_Response() {} -func (*GetReceiptCredentialResponse_SubscriberNotFound) isGetReceiptCredentialResponse_Response() {} +func (*GetReceiptCredentialsResponse_SubscriberNotFound) isGetReceiptCredentialsResponse_Response() {} -func (*GetReceiptCredentialResponse_NoPaidInvoice) isGetReceiptCredentialResponse_Response() {} +func (*GetReceiptCredentialsResponse_SubscriberIdMismatch) isGetReceiptCredentialsResponse_Response() { +} -func (*GetReceiptCredentialResponse_PaymentRequired) isGetReceiptCredentialResponse_Response() {} +func (*GetReceiptCredentialsResponse_NoPaidInvoice) isGetReceiptCredentialsResponse_Response() {} -func (*GetReceiptCredentialResponse_AlreadyRedeemed) isGetReceiptCredentialResponse_Response() {} +func (*GetReceiptCredentialsResponse_PaymentRequired) isGetReceiptCredentialsResponse_Response() {} + +func (*GetReceiptCredentialsResponse_AlreadyRedeemed) isGetReceiptCredentialsResponse_Response() {} type GetSubscriptionInformationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2022,6 +2143,7 @@ type GetSubscriptionInformationResponse struct { // *GetSubscriptionInformationResponse_Success // *GetSubscriptionInformationResponse_NoSubscription // *GetSubscriptionInformationResponse_SubscriberNotFound + // *GetSubscriptionInformationResponse_SubscriberIdMismatch Response isGetSubscriptionInformationResponse_Response `protobuf_oneof:"response"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2091,6 +2213,15 @@ func (x *GetSubscriptionInformationResponse) GetSubscriberNotFound() *errors.Not return nil } +func (x *GetSubscriptionInformationResponse) GetSubscriberIdMismatch() *errors.FailedUnidentifiedAuthorization { + if x != nil { + if x, ok := x.Response.(*GetSubscriptionInformationResponse_SubscriberIdMismatch); ok { + return x.SubscriberIdMismatch + } + } + return nil +} + type isGetSubscriptionInformationResponse_Response interface { isGetSubscriptionInformationResponse_Response() } @@ -2100,15 +2231,18 @@ type GetSubscriptionInformationResponse_Success struct { } type GetSubscriptionInformationResponse_NoSubscription struct { - // The subscriber exists but has no subscription with a payment processor NoSubscription *emptypb.Empty `protobuf:"bytes,2,opt,name=no_subscription,json=noSubscription,proto3,oneof"` } type GetSubscriptionInformationResponse_SubscriberNotFound struct { - // The subscriber did not exist SubscriberNotFound *errors.NotFound `protobuf:"bytes,3,opt,name=subscriber_not_found,json=subscriberNotFound,proto3,oneof"` } +type GetSubscriptionInformationResponse_SubscriberIdMismatch struct { + // subscriberId authentication failure + SubscriberIdMismatch *errors.FailedUnidentifiedAuthorization `protobuf:"bytes,4,opt,name=subscriber_id_mismatch,json=subscriberIdMismatch,proto3,oneof"` +} + func (*GetSubscriptionInformationResponse_Success) isGetSubscriptionInformationResponse_Response() {} func (*GetSubscriptionInformationResponse_NoSubscription) isGetSubscriptionInformationResponse_Response() { @@ -2117,6 +2251,9 @@ func (*GetSubscriptionInformationResponse_NoSubscription) isGetSubscriptionInfor func (*GetSubscriptionInformationResponse_SubscriberNotFound) isGetSubscriptionInformationResponse_Response() { } +func (*GetSubscriptionInformationResponse_SubscriberIdMismatch) isGetSubscriptionInformationResponse_Response() { +} + type GetBankMandateRequest struct { state protoimpl.MessageState `protogen:"open.v1"` BankTransferType BankTransferType `protobuf:"varint,1,opt,name=bank_transfer_type,json=bankTransferType,proto3,enum=org.signal.chat.purchase.BankTransferType" json:"bank_transfer_type,omitempty"` @@ -2619,27 +2756,27 @@ func (x *SetIapSubscriptionResponse_SetIapSubscriptionResult) GetLevel() uint64 return 0 } -type GetReceiptCredentialResponse_GetReceiptCredentialResult struct { +type GetReceiptCredentialsResponse_GetReceiptCredentialsResult struct { state protoimpl.MessageState `protogen:"open.v1"` ReceiptCredentialResponse []byte `protobuf:"bytes,1,opt,name=receiptCredentialResponse,proto3" json:"receiptCredentialResponse,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetReceiptCredentialResponse_GetReceiptCredentialResult) Reset() { - *x = GetReceiptCredentialResponse_GetReceiptCredentialResult{} +func (x *GetReceiptCredentialsResponse_GetReceiptCredentialsResult) Reset() { + *x = GetReceiptCredentialsResponse_GetReceiptCredentialsResult{} mi := &file_org_signal_chat_subscriptions_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetReceiptCredentialResponse_GetReceiptCredentialResult) String() string { +func (x *GetReceiptCredentialsResponse_GetReceiptCredentialsResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReceiptCredentialResponse_GetReceiptCredentialResult) ProtoMessage() {} +func (*GetReceiptCredentialsResponse_GetReceiptCredentialsResult) ProtoMessage() {} -func (x *GetReceiptCredentialResponse_GetReceiptCredentialResult) ProtoReflect() protoreflect.Message { +func (x *GetReceiptCredentialsResponse_GetReceiptCredentialsResult) ProtoReflect() protoreflect.Message { mi := &file_org_signal_chat_subscriptions_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2651,12 +2788,12 @@ func (x *GetReceiptCredentialResponse_GetReceiptCredentialResult) ProtoReflect() return mi.MessageOf(x) } -// Deprecated: Use GetReceiptCredentialResponse_GetReceiptCredentialResult.ProtoReflect.Descriptor instead. -func (*GetReceiptCredentialResponse_GetReceiptCredentialResult) Descriptor() ([]byte, []int) { +// Deprecated: Use GetReceiptCredentialsResponse_GetReceiptCredentialsResult.ProtoReflect.Descriptor instead. +func (*GetReceiptCredentialsResponse_GetReceiptCredentialsResult) Descriptor() ([]byte, []int) { return file_org_signal_chat_subscriptions_proto_rawDescGZIP(), []int{17, 0} } -func (x *GetReceiptCredentialResponse_GetReceiptCredentialResult) GetReceiptCredentialResponse() []byte { +func (x *GetReceiptCredentialsResponse_GetReceiptCredentialsResult) GetReceiptCredentialResponse() []byte { if x != nil { return x.ReceiptCredentialResponse } @@ -2677,7 +2814,7 @@ type GetSubscriptionInformationResponse_Subscription struct { CancelAtPeriodEnd bool `protobuf:"varint,5,opt,name=cancel_at_period_end,json=cancelAtPeriodEnd,proto3" json:"cancel_at_period_end,omitempty"` // A three-letter ISO 4217 currency code for currency used in the subscription Currency string `protobuf:"bytes,6,opt,name=currency,proto3" json:"currency,omitempty"` - // The amount paid for the subscription in the currency's minor unit + // The amount paid for the subscription in the currency's smallest unit Amount uint64 `protobuf:"varint,7,opt,name=amount,proto3" json:"amount,omitempty"` // The subscription's status, mapped to Stripe's statuses. trialing will never be returned Status SubscriptionStatus `protobuf:"varint,8,opt,name=status,proto3,enum=org.signal.chat.purchase.SubscriptionStatus" json:"status,omitempty"` @@ -2814,10 +2951,11 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "#org/signal/chat/subscriptions.proto\x12\x18org.signal.chat.purchase\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1corg/signal/chat/common.proto\x1a\x1dorg/signal/chat/require.proto\x1a\x1corg/signal/chat/errors.proto\x1a\x19org/signal/chat/tag.proto\"n\n" + "\x17UpdateSubscriberRequest\x12*\n" + "\rsubscriber_id\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\x12'\n" + - "\x0fdonation_permit\x18\x02 \x01(\fR\x0edonationPermit\"\xca\x01\n" + + "\x0fdonation_permit\x18\x02 \x01(\fR\x0edonationPermit\"\xd8\x02\n" + "\x18UpdateSubscriberResponse\x122\n" + - "\asuccess\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\asuccess\x12n\n" + - "\x0fpermit_rejected\x18\x02 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB\x13\xc2\xd5\"\x0fpermit_rejectedH\x00R\x0epermitRejectedB\n" + + "\asuccess\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\asuccess\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x02 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12n\n" + + "\x0fpermit_rejected\x18\x03 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB\x13\xc2\xd5\"\x0fpermit_rejectedH\x00R\x0epermitRejectedB\n" + "\n" + "\bresponse\"D\n" + "\x17DeleteSubscriberRequest\x12)\n" + @@ -2831,12 +2969,13 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\x1aCreatePaymentMethodRequest\x12*\n" + "\rsubscriber_id\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\x12T\n" + "\x0epayment_method\x18\x02 \x01(\x0e2'.org.signal.chat.purchase.PaymentMethodB\x04\x90\x97\"\x01R\rpaymentMethod\x12-\n" + - "\x0fdonation_permit\x18\x03 \x01(\fB\x04\x88\x97\"\x01R\x0edonationPermit\"\xa7\x05\n" + + "\x0fdonation_permit\x18\x03 \x01(\fB\x04\x88\x97\"\x01R\x0edonationPermit\"\xb5\x06\n" + "\x1bCreatePaymentMethodResponse\x12i\n" + "\x06result\x18\x01 \x01(\v2O.org.signal.chat.purchase.CreatePaymentMethodResponse.CreatePaymentMethodResultH\x00R\x06result\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x99\x01\n" + - "\x1fsubscription_processor_conflict\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12n\n" + - "\x0fpermit_rejected\x18\x04 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB\x13\xc2\xd5\"\x0fpermit_rejectedH\x00R\x0epermitRejected\x1a\x94\x01\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12\x99\x01\n" + + "\x1fsubscription_processor_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12n\n" + + "\x0fpermit_rejected\x18\x05 \x01(\v2..org.signal.chat.errors.FailedZkAuthenticationB\x13\xc2\xd5\"\x0fpermit_rejectedH\x00R\x0epermitRejected\x1a\x94\x01\n" + "\x19CreatePaymentMethodResult\x12\"\n" + "\fclientSecret\x18\x01 \x01(\tR\fclientSecret\x12S\n" + "\x0fpaymentProvider\x18\x02 \x01(\x0e2).org.signal.chat.purchase.PaymentProviderR\x0fpaymentProviderB\n" + @@ -2845,11 +2984,12 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + " CreatePayPalPaymentMethodRequest\x12)\n" + "\fsubscriberId\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\x12\x1c\n" + "\treturnUrl\x18\x02 \x01(\tR\treturnUrl\x12\x1c\n" + - "\tcancelUrl\x18\x03 \x01(\tR\tcancelUrl\"\x8d\x04\n" + + "\tcancelUrl\x18\x03 \x01(\tR\tcancelUrl\"\x9b\x05\n" + "!CreatePayPalPaymentMethodResponse\x12u\n" + "\x06result\x18\x01 \x01(\v2[.org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.CreatePayPalPaymentMethodResultH\x00R\x06result\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x99\x01\n" + - "\x1fsubscription_processor_conflict\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x1aY\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12\x99\x01\n" + + "\x1fsubscription_processor_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x1aY\n" + "\x1fCreatePayPalPaymentMethodResult\x12 \n" + "\vapprovalUrl\x18\x01 \x01(\tR\vapprovalUrl\x12\x14\n" + "\x05token\x18\x02 \x01(\tR\x05tokenB\n" + @@ -2866,11 +3006,13 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\x12paymentMethodToken\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\x12paymentMethodToken\x1a?\n" + "\x11SepaPaymentMethod\x12*\n" + "\rsetupIntentId\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\rsetupIntentIdB\t\n" + - "\arequest\"\xd9\x02\n" + + "\arequest\"\x83\x05\n" + "\x1fSetDefaultPaymentMethodResponse\x122\n" + "\asuccess\x18\x01 \x01(\v2\x16.google.protobuf.EmptyH\x00R\asuccess\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x85\x01\n" + - "\x19payment_method_not_set_up\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1d\xc2\xd5\"\x19payment_method_not_set_upH\x00R\x15paymentMethodNotSetUpB\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12\x85\x01\n" + + "\x19payment_method_not_set_up\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1d\xc2\xd5\"\x19payment_method_not_set_upH\x00R\x15paymentMethodNotSetUp\x12\x99\x01\n" + + "\x1fsubscription_processor_conflict\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflictB\n" + "\n" + "\bresponse\"\xa2\x01\n" + "\x1bSetSubscriptionLevelRequest\x12)\n" + @@ -2890,20 +3032,21 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\r_outcome_type\"y\n" + "\x0fPaymentRequired\x12S\n" + "\x0echarge_failure\x18\x01 \x01(\v2'.org.signal.chat.purchase.ChargeFailureH\x00R\rchargeFailure\x88\x01\x01B\x11\n" + - "\x0f_charge_failure\"\xc1\v\n" + + "\x0f_charge_failure\"\xcf\f\n" + "\x1cSetSubscriptionLevelResponse\x12m\n" + "\asuccess\x18\x01 \x01(\v2Q.org.signal.chat.purchase.SetSubscriptionLevelResponse.SetSubscriptionLevelResultH\x00R\asuccess\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x99\x01\n" + - "\x1fsubscription_processor_conflict\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12\x85\x01\n" + - "\x19payment_method_not_set_up\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1d\xc2\xd5\"\x19payment_method_not_set_upH\x00R\x15paymentMethodNotSetUp\x12|\n" + - "\x15unsupported_operation\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x19\xc2\xd5\"\x15unsupported_operationH\x00R\x14unsupportedOperation\x12p\n" + - "\x11unsupported_level\x18\x06 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11unsupported_levelH\x00R\x10unsupportedLevel\x12y\n" + - "\x14unsupported_currency\x18\a \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x18\xc2\xd5\"\x14unsupported_currencyH\x00R\x13unsupportedCurrency\x12\x81\x01\n" + - "\x17payment_requires_action\x18\b \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1b\xc2\xd5\"\x17payment_requires_actionH\x00R\x15paymentRequiresAction\x12\x84\x01\n" + - "\x18invalid_level_transition\x18\t \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1c\xc2\xd5\"\x18invalid_level_transitionH\x00R\x16invalidLevelTransition\x12\x81\x01\n" + - "\x17invalid_idempotency_key\x18\n" + - " \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1b\xc2\xd5\"\x17invalid_idempotency_keyH\x00R\x15invalidIdempotencyKey\x12d\n" + - "\x0echarge_failure\x18\v \x01(\v2'.org.signal.chat.purchase.ChargeFailureB\x12\xc2\xd5\"\x0echarge_failureH\x00R\rchargeFailure\x1a2\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12\x99\x01\n" + + "\x1fsubscription_processor_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12\x85\x01\n" + + "\x19payment_method_not_set_up\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1d\xc2\xd5\"\x19payment_method_not_set_upH\x00R\x15paymentMethodNotSetUp\x12|\n" + + "\x15unsupported_operation\x18\x06 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x19\xc2\xd5\"\x15unsupported_operationH\x00R\x14unsupportedOperation\x12p\n" + + "\x11unsupported_level\x18\a \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x15\xc2\xd5\"\x11unsupported_levelH\x00R\x10unsupportedLevel\x12y\n" + + "\x14unsupported_currency\x18\b \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x18\xc2\xd5\"\x14unsupported_currencyH\x00R\x13unsupportedCurrency\x12\x81\x01\n" + + "\x17payment_requires_action\x18\t \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1b\xc2\xd5\"\x17payment_requires_actionH\x00R\x15paymentRequiresAction\x12\x84\x01\n" + + "\x18invalid_level_transition\x18\n" + + " \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1c\xc2\xd5\"\x18invalid_level_transitionH\x00R\x16invalidLevelTransition\x12\x81\x01\n" + + "\x17invalid_idempotency_key\x18\v \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x1b\xc2\xd5\"\x17invalid_idempotency_keyH\x00R\x15invalidIdempotencyKey\x12d\n" + + "\x0echarge_failure\x18\f \x01(\v2'.org.signal.chat.purchase.ChargeFailureB\x12\xc2\xd5\"\x0echarge_failureH\x00R\rchargeFailure\x1a2\n" + "\x1aSetSubscriptionLevelResult\x12\x14\n" + "\x05level\x18\x01 \x01(\x04R\x05levelB\n" + "\n" + @@ -2916,36 +3059,39 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\x17original_transaction_id\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\x15originalTransactionId\x1aB\n" + "\x13PlayBillingPurchase\x12+\n" + "\x0epurchase_token\x18\x01 \x01(\tB\x04\x88\x97\"\x01R\rpurchaseTokenB\t\n" + - "\arequest\"\xb8\x05\n" + + "\arequest\"\xc6\x06\n" + "\x1aSetIapSubscriptionResponse\x12i\n" + "\asuccess\x18\x01 \x01(\v2M.org.signal.chat.purchase.SetIapSubscriptionResponse.SetIapSubscriptionResultH\x00R\asuccess\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x99\x01\n" + - "\x1fsubscription_processor_conflict\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12m\n" + - "\x10payment_required\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x14\xc2\xd5\"\x10payment_requiredH\x00R\x0fpaymentRequired\x12v\n" + - "\x13invalid_transaction\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x17\xc2\xd5\"\x13invalid_transactionH\x00R\x12invalidTransaction\x1a0\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12\x99\x01\n" + + "\x1fsubscription_processor_conflict\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB#\xc2\xd5\"\x1fsubscription_processor_conflictH\x00R\x1dsubscriptionProcessorConflict\x12m\n" + + "\x10payment_required\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x14\xc2\xd5\"\x10payment_requiredH\x00R\x0fpaymentRequired\x12v\n" + + "\x13invalid_transaction\x18\x06 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x17\xc2\xd5\"\x13invalid_transactionH\x00R\x12invalidTransaction\x1a0\n" + "\x18SetIapSubscriptionResult\x12\x14\n" + "\x05level\x18\x01 \x01(\x04R\x05levelB\n" + "\n" + - "\bresponse\"\x8b\x01\n" + - "\x1bGetReceiptCredentialRequest\x12)\n" + + "\bresponse\"\x8c\x01\n" + + "\x1cGetReceiptCredentialsRequest\x12)\n" + "\fsubscriberId\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\x12A\n" + - "\x18receiptCredentialRequest\x18\x02 \x01(\fB\x05\xa2\x97\"\x01aR\x18receiptCredentialRequest\"\xad\x05\n" + - "\x1cGetReceiptCredentialResponse\x12m\n" + - "\asuccess\x18\x01 \x01(\v2Q.org.signal.chat.purchase.GetReceiptCredentialResponse.GetReceiptCredentialResultH\x00R\asuccess\x12n\n" + - "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12i\n" + - "\x0fno_paid_invoice\x18\x03 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x13\xc2\xd5\"\x0fno_paid_invoiceH\x00R\rnoPaidInvoice\x12l\n" + - "\x10payment_required\x18\x04 \x01(\v2).org.signal.chat.purchase.PaymentRequiredB\x14\xc2\xd5\"\x10payment_requiredH\x00R\x0fpaymentRequired\x12m\n" + - "\x10already_redeemed\x18\x05 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x14\xc2\xd5\"\x10already_redeemedH\x00R\x0falreadyRedeemed\x1aZ\n" + - "\x1aGetReceiptCredentialResult\x12<\n" + + "\x18receiptCredentialRequest\x18\x02 \x01(\fB\x05\xa2\x97\"\x01aR\x18receiptCredentialRequest\"\xbf\x06\n" + + "\x1dGetReceiptCredentialsResponse\x12o\n" + + "\asuccess\x18\x01 \x01(\v2S.org.signal.chat.purchase.GetReceiptCredentialsResponse.GetReceiptCredentialsResultH\x00R\asuccess\x12n\n" + + "\x14subscriber_not_found\x18\x02 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x03 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x12i\n" + + "\x0fno_paid_invoice\x18\x04 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x13\xc2\xd5\"\x0fno_paid_invoiceH\x00R\rnoPaidInvoice\x12l\n" + + "\x10payment_required\x18\x05 \x01(\v2).org.signal.chat.purchase.PaymentRequiredB\x14\xc2\xd5\"\x10payment_requiredH\x00R\x0fpaymentRequired\x12m\n" + + "\x10already_redeemed\x18\x06 \x01(\v2*.org.signal.chat.errors.FailedPreconditionB\x14\xc2\xd5\"\x10already_redeemedH\x00R\x0falreadyRedeemed\x1a[\n" + + "\x1bGetReceiptCredentialsResult\x12<\n" + "\x19receiptCredentialResponse\x18\x01 \x01(\fR\x19receiptCredentialResponseB\n" + "\n" + "\bresponse\"N\n" + "!GetSubscriptionInformationRequest\x12)\n" + - "\fsubscriberId\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\"\xe7\a\n" + + "\fsubscriberId\x18\x01 \x01(\fB\x05\xa2\x97\"\x01 R\fsubscriberId\"\xf5\b\n" + "\"GetSubscriptionInformationResponse\x12e\n" + "\asuccess\x18\x01 \x01(\v2I.org.signal.chat.purchase.GetSubscriptionInformationResponse.SubscriptionH\x00R\asuccess\x12A\n" + "\x0fno_subscription\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\x0enoSubscription\x12n\n" + - "\x14subscriber_not_found\x18\x03 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x1a\x9a\x05\n" + + "\x14subscriber_not_found\x18\x03 \x01(\v2 .org.signal.chat.errors.NotFoundB\x18\xc2\xd5\"\x14subscriber_not_foundH\x00R\x12subscriberNotFound\x12\x8b\x01\n" + + "\x16subscriber_id_mismatch\x18\x04 \x01(\v27.org.signal.chat.errors.FailedUnidentifiedAuthorizationB\x1a\xc2\xd5\"\x16subscriber_id_mismatchH\x00R\x14subscriberIdMismatch\x1a\x9a\x05\n" + "\fSubscription\x12\x14\n" + "\x05level\x18\x01 \x01(\x04R\x05level\x125\n" + "\x14billing_cycle_anchor\x18\x02 \x01(\x04H\x00R\x12billingCycleAnchor\x88\x01\x01\x121\n" + @@ -2991,7 +3137,7 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\x1aSUBSCRIPTION_STATUS_UNPAID\x10\x05*U\n" + "\x10BankTransferType\x12\x1e\n" + "\x1aBANK_TRANSFER_TYPE_UNKNOWN\x10\x00\x12!\n" + - "\x1dBANK_TRANSFER_TYPE_SEPA_DEBIT\x10\x012\xed\n" + + "\x1dBANK_TRANSFER_TYPE_SEPA_DEBIT\x10\x012\xf0\n" + "\n" + "\rSubscriptions\x12{\n" + "\x10UpdateSubscriber\x121.org.signal.chat.purchase.UpdateSubscriberRequest\x1a2.org.signal.chat.purchase.UpdateSubscriberResponse\"\x00\x12{\n" + @@ -3000,8 +3146,8 @@ const file_org_signal_chat_subscriptions_proto_rawDesc = "" + "\x19CreatePayPalPaymentMethod\x12:.org.signal.chat.purchase.CreatePayPalPaymentMethodRequest\x1a;.org.signal.chat.purchase.CreatePayPalPaymentMethodResponse\"\x00\x12\x90\x01\n" + "\x17SetDefaultPaymentMethod\x128.org.signal.chat.purchase.SetDefaultPaymentMethodRequest\x1a9.org.signal.chat.purchase.SetDefaultPaymentMethodResponse\"\x00\x12\x87\x01\n" + "\x14SetSubscriptionLevel\x125.org.signal.chat.purchase.SetSubscriptionLevelRequest\x1a6.org.signal.chat.purchase.SetSubscriptionLevelResponse\"\x00\x12\x99\x01\n" + - "\x1aGetSubscriptionInformation\x12;.org.signal.chat.purchase.GetSubscriptionInformationRequest\x1a<.org.signal.chat.purchase.GetSubscriptionInformationResponse\"\x00\x12\x87\x01\n" + - "\x14GetReceiptCredential\x125.org.signal.chat.purchase.GetReceiptCredentialRequest\x1a6.org.signal.chat.purchase.GetReceiptCredentialResponse\"\x00\x12\x81\x01\n" + + "\x1aGetSubscriptionInformation\x12;.org.signal.chat.purchase.GetSubscriptionInformationRequest\x1a<.org.signal.chat.purchase.GetSubscriptionInformationResponse\"\x00\x12\x8a\x01\n" + + "\x15GetReceiptCredentials\x126.org.signal.chat.purchase.GetReceiptCredentialsRequest\x1a7.org.signal.chat.purchase.GetReceiptCredentialsResponse\"\x00\x12\x81\x01\n" + "\x12SetIapSubscription\x123.org.signal.chat.purchase.SetIapSubscriptionRequest\x1a4.org.signal.chat.purchase.SetIapSubscriptionResponse\"\x00\x12u\n" + "\x0eGetBankMandate\x12/.org.signal.chat.purchase.GetBankMandateRequest\x1a0.org.signal.chat.purchase.GetBankMandateResponse\"\x00\x1a\x04\xc8\xd5\"\x02B\x02P\x01b\x06proto3" @@ -3040,8 +3186,8 @@ var file_org_signal_chat_subscriptions_proto_goTypes = []any{ (*SetSubscriptionLevelResponse)(nil), // 17: org.signal.chat.purchase.SetSubscriptionLevelResponse (*SetIapSubscriptionRequest)(nil), // 18: org.signal.chat.purchase.SetIapSubscriptionRequest (*SetIapSubscriptionResponse)(nil), // 19: org.signal.chat.purchase.SetIapSubscriptionResponse - (*GetReceiptCredentialRequest)(nil), // 20: org.signal.chat.purchase.GetReceiptCredentialRequest - (*GetReceiptCredentialResponse)(nil), // 21: org.signal.chat.purchase.GetReceiptCredentialResponse + (*GetReceiptCredentialsRequest)(nil), // 20: org.signal.chat.purchase.GetReceiptCredentialsRequest + (*GetReceiptCredentialsResponse)(nil), // 21: org.signal.chat.purchase.GetReceiptCredentialsResponse (*GetSubscriptionInformationRequest)(nil), // 22: org.signal.chat.purchase.GetSubscriptionInformationRequest (*GetSubscriptionInformationResponse)(nil), // 23: org.signal.chat.purchase.GetSubscriptionInformationResponse (*GetBankMandateRequest)(nil), // 24: org.signal.chat.purchase.GetBankMandateRequest @@ -3055,92 +3201,102 @@ var file_org_signal_chat_subscriptions_proto_goTypes = []any{ (*SetIapSubscriptionRequest_AppStorePurchase)(nil), // 32: org.signal.chat.purchase.SetIapSubscriptionRequest.AppStorePurchase (*SetIapSubscriptionRequest_PlayBillingPurchase)(nil), // 33: org.signal.chat.purchase.SetIapSubscriptionRequest.PlayBillingPurchase (*SetIapSubscriptionResponse_SetIapSubscriptionResult)(nil), // 34: org.signal.chat.purchase.SetIapSubscriptionResponse.SetIapSubscriptionResult - (*GetReceiptCredentialResponse_GetReceiptCredentialResult)(nil), // 35: org.signal.chat.purchase.GetReceiptCredentialResponse.GetReceiptCredentialResult + (*GetReceiptCredentialsResponse_GetReceiptCredentialsResult)(nil), // 35: org.signal.chat.purchase.GetReceiptCredentialsResponse.GetReceiptCredentialsResult (*GetSubscriptionInformationResponse_Subscription)(nil), // 36: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription (*emptypb.Empty)(nil), // 37: google.protobuf.Empty - (*errors.FailedZkAuthentication)(nil), // 38: org.signal.chat.errors.FailedZkAuthentication - (*errors.NotFound)(nil), // 39: org.signal.chat.errors.NotFound - (*errors.FailedPrecondition)(nil), // 40: org.signal.chat.errors.FailedPrecondition + (*errors.FailedUnidentifiedAuthorization)(nil), // 38: org.signal.chat.errors.FailedUnidentifiedAuthorization + (*errors.FailedZkAuthentication)(nil), // 39: org.signal.chat.errors.FailedZkAuthentication + (*errors.NotFound)(nil), // 40: org.signal.chat.errors.NotFound + (*errors.FailedPrecondition)(nil), // 41: org.signal.chat.errors.FailedPrecondition } var file_org_signal_chat_subscriptions_proto_depIdxs = []int32{ 37, // 0: org.signal.chat.purchase.UpdateSubscriberResponse.success:type_name -> google.protobuf.Empty - 38, // 1: org.signal.chat.purchase.UpdateSubscriberResponse.permit_rejected:type_name -> org.signal.chat.errors.FailedZkAuthentication - 37, // 2: org.signal.chat.purchase.DeleteSubscriberResponse.success:type_name -> google.protobuf.Empty - 39, // 3: org.signal.chat.purchase.DeleteSubscriberResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 4: org.signal.chat.purchase.DeleteSubscriberResponse.cannot_cancel_subscription:type_name -> org.signal.chat.errors.FailedPrecondition - 1, // 5: org.signal.chat.purchase.CreatePaymentMethodRequest.payment_method:type_name -> org.signal.chat.purchase.PaymentMethod - 26, // 6: org.signal.chat.purchase.CreatePaymentMethodResponse.result:type_name -> org.signal.chat.purchase.CreatePaymentMethodResponse.CreatePaymentMethodResult - 39, // 7: org.signal.chat.purchase.CreatePaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 8: org.signal.chat.purchase.CreatePaymentMethodResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 38, // 9: org.signal.chat.purchase.CreatePaymentMethodResponse.permit_rejected:type_name -> org.signal.chat.errors.FailedZkAuthentication - 27, // 10: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.result:type_name -> org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.CreatePayPalPaymentMethodResult - 39, // 11: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 12: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 28, // 13: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.stripe:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.StripePaymentMethod - 29, // 14: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.braintree:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.BraintreePaymentMethod - 30, // 15: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.sepa:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.SepaPaymentMethod - 37, // 16: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.success:type_name -> google.protobuf.Empty - 39, // 17: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 18: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.payment_method_not_set_up:type_name -> org.signal.chat.errors.FailedPrecondition - 0, // 19: org.signal.chat.purchase.ChargeFailure.processor:type_name -> org.signal.chat.purchase.PaymentProvider - 15, // 20: org.signal.chat.purchase.PaymentRequired.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure - 31, // 21: org.signal.chat.purchase.SetSubscriptionLevelResponse.success:type_name -> org.signal.chat.purchase.SetSubscriptionLevelResponse.SetSubscriptionLevelResult - 39, // 22: org.signal.chat.purchase.SetSubscriptionLevelResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 23: org.signal.chat.purchase.SetSubscriptionLevelResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 24: org.signal.chat.purchase.SetSubscriptionLevelResponse.payment_method_not_set_up:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 25: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_operation:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 26: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_level:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 27: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_currency:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 28: org.signal.chat.purchase.SetSubscriptionLevelResponse.payment_requires_action:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 29: org.signal.chat.purchase.SetSubscriptionLevelResponse.invalid_level_transition:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 30: org.signal.chat.purchase.SetSubscriptionLevelResponse.invalid_idempotency_key:type_name -> org.signal.chat.errors.FailedPrecondition - 15, // 31: org.signal.chat.purchase.SetSubscriptionLevelResponse.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure - 32, // 32: org.signal.chat.purchase.SetIapSubscriptionRequest.app_store:type_name -> org.signal.chat.purchase.SetIapSubscriptionRequest.AppStorePurchase - 33, // 33: org.signal.chat.purchase.SetIapSubscriptionRequest.play_billing:type_name -> org.signal.chat.purchase.SetIapSubscriptionRequest.PlayBillingPurchase - 34, // 34: org.signal.chat.purchase.SetIapSubscriptionResponse.success:type_name -> org.signal.chat.purchase.SetIapSubscriptionResponse.SetIapSubscriptionResult - 39, // 35: org.signal.chat.purchase.SetIapSubscriptionResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 36: org.signal.chat.purchase.SetIapSubscriptionResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 37: org.signal.chat.purchase.SetIapSubscriptionResponse.payment_required:type_name -> org.signal.chat.errors.FailedPrecondition - 40, // 38: org.signal.chat.purchase.SetIapSubscriptionResponse.invalid_transaction:type_name -> org.signal.chat.errors.FailedPrecondition - 35, // 39: org.signal.chat.purchase.GetReceiptCredentialResponse.success:type_name -> org.signal.chat.purchase.GetReceiptCredentialResponse.GetReceiptCredentialResult - 39, // 40: org.signal.chat.purchase.GetReceiptCredentialResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 40, // 41: org.signal.chat.purchase.GetReceiptCredentialResponse.no_paid_invoice:type_name -> org.signal.chat.errors.FailedPrecondition - 16, // 42: org.signal.chat.purchase.GetReceiptCredentialResponse.payment_required:type_name -> org.signal.chat.purchase.PaymentRequired - 40, // 43: org.signal.chat.purchase.GetReceiptCredentialResponse.already_redeemed:type_name -> org.signal.chat.errors.FailedPrecondition - 36, // 44: org.signal.chat.purchase.GetSubscriptionInformationResponse.success:type_name -> org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription - 37, // 45: org.signal.chat.purchase.GetSubscriptionInformationResponse.no_subscription:type_name -> google.protobuf.Empty - 39, // 46: org.signal.chat.purchase.GetSubscriptionInformationResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound - 3, // 47: org.signal.chat.purchase.GetBankMandateRequest.bank_transfer_type:type_name -> org.signal.chat.purchase.BankTransferType - 0, // 48: org.signal.chat.purchase.CreatePaymentMethodResponse.CreatePaymentMethodResult.paymentProvider:type_name -> org.signal.chat.purchase.PaymentProvider - 2, // 49: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.status:type_name -> org.signal.chat.purchase.SubscriptionStatus - 0, // 50: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.processor:type_name -> org.signal.chat.purchase.PaymentProvider - 1, // 51: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.payment_method:type_name -> org.signal.chat.purchase.PaymentMethod - 15, // 52: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure - 4, // 53: org.signal.chat.purchase.Subscriptions.UpdateSubscriber:input_type -> org.signal.chat.purchase.UpdateSubscriberRequest - 6, // 54: org.signal.chat.purchase.Subscriptions.DeleteSubscriber:input_type -> org.signal.chat.purchase.DeleteSubscriberRequest - 8, // 55: org.signal.chat.purchase.Subscriptions.CreatePaymentMethod:input_type -> org.signal.chat.purchase.CreatePaymentMethodRequest - 10, // 56: org.signal.chat.purchase.Subscriptions.CreatePayPalPaymentMethod:input_type -> org.signal.chat.purchase.CreatePayPalPaymentMethodRequest - 12, // 57: org.signal.chat.purchase.Subscriptions.SetDefaultPaymentMethod:input_type -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest - 14, // 58: org.signal.chat.purchase.Subscriptions.SetSubscriptionLevel:input_type -> org.signal.chat.purchase.SetSubscriptionLevelRequest - 22, // 59: org.signal.chat.purchase.Subscriptions.GetSubscriptionInformation:input_type -> org.signal.chat.purchase.GetSubscriptionInformationRequest - 20, // 60: org.signal.chat.purchase.Subscriptions.GetReceiptCredential:input_type -> org.signal.chat.purchase.GetReceiptCredentialRequest - 18, // 61: org.signal.chat.purchase.Subscriptions.SetIapSubscription:input_type -> org.signal.chat.purchase.SetIapSubscriptionRequest - 24, // 62: org.signal.chat.purchase.Subscriptions.GetBankMandate:input_type -> org.signal.chat.purchase.GetBankMandateRequest - 5, // 63: org.signal.chat.purchase.Subscriptions.UpdateSubscriber:output_type -> org.signal.chat.purchase.UpdateSubscriberResponse - 7, // 64: org.signal.chat.purchase.Subscriptions.DeleteSubscriber:output_type -> org.signal.chat.purchase.DeleteSubscriberResponse - 9, // 65: org.signal.chat.purchase.Subscriptions.CreatePaymentMethod:output_type -> org.signal.chat.purchase.CreatePaymentMethodResponse - 11, // 66: org.signal.chat.purchase.Subscriptions.CreatePayPalPaymentMethod:output_type -> org.signal.chat.purchase.CreatePayPalPaymentMethodResponse - 13, // 67: org.signal.chat.purchase.Subscriptions.SetDefaultPaymentMethod:output_type -> org.signal.chat.purchase.SetDefaultPaymentMethodResponse - 17, // 68: org.signal.chat.purchase.Subscriptions.SetSubscriptionLevel:output_type -> org.signal.chat.purchase.SetSubscriptionLevelResponse - 23, // 69: org.signal.chat.purchase.Subscriptions.GetSubscriptionInformation:output_type -> org.signal.chat.purchase.GetSubscriptionInformationResponse - 21, // 70: org.signal.chat.purchase.Subscriptions.GetReceiptCredential:output_type -> org.signal.chat.purchase.GetReceiptCredentialResponse - 19, // 71: org.signal.chat.purchase.Subscriptions.SetIapSubscription:output_type -> org.signal.chat.purchase.SetIapSubscriptionResponse - 25, // 72: org.signal.chat.purchase.Subscriptions.GetBankMandate:output_type -> org.signal.chat.purchase.GetBankMandateResponse - 63, // [63:73] is the sub-list for method output_type - 53, // [53:63] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 38, // 1: org.signal.chat.purchase.UpdateSubscriberResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 39, // 2: org.signal.chat.purchase.UpdateSubscriberResponse.permit_rejected:type_name -> org.signal.chat.errors.FailedZkAuthentication + 37, // 3: org.signal.chat.purchase.DeleteSubscriberResponse.success:type_name -> google.protobuf.Empty + 40, // 4: org.signal.chat.purchase.DeleteSubscriberResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 41, // 5: org.signal.chat.purchase.DeleteSubscriberResponse.cannot_cancel_subscription:type_name -> org.signal.chat.errors.FailedPrecondition + 1, // 6: org.signal.chat.purchase.CreatePaymentMethodRequest.payment_method:type_name -> org.signal.chat.purchase.PaymentMethod + 26, // 7: org.signal.chat.purchase.CreatePaymentMethodResponse.result:type_name -> org.signal.chat.purchase.CreatePaymentMethodResponse.CreatePaymentMethodResult + 40, // 8: org.signal.chat.purchase.CreatePaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 9: org.signal.chat.purchase.CreatePaymentMethodResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 10: org.signal.chat.purchase.CreatePaymentMethodResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 39, // 11: org.signal.chat.purchase.CreatePaymentMethodResponse.permit_rejected:type_name -> org.signal.chat.errors.FailedZkAuthentication + 27, // 12: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.result:type_name -> org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.CreatePayPalPaymentMethodResult + 40, // 13: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 14: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 15: org.signal.chat.purchase.CreatePayPalPaymentMethodResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 28, // 16: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.stripe:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.StripePaymentMethod + 29, // 17: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.braintree:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.BraintreePaymentMethod + 30, // 18: org.signal.chat.purchase.SetDefaultPaymentMethodRequest.sepa:type_name -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest.SepaPaymentMethod + 37, // 19: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.success:type_name -> google.protobuf.Empty + 40, // 20: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 21: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 22: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.payment_method_not_set_up:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 23: org.signal.chat.purchase.SetDefaultPaymentMethodResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 0, // 24: org.signal.chat.purchase.ChargeFailure.processor:type_name -> org.signal.chat.purchase.PaymentProvider + 15, // 25: org.signal.chat.purchase.PaymentRequired.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure + 31, // 26: org.signal.chat.purchase.SetSubscriptionLevelResponse.success:type_name -> org.signal.chat.purchase.SetSubscriptionLevelResponse.SetSubscriptionLevelResult + 40, // 27: org.signal.chat.purchase.SetSubscriptionLevelResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 28: org.signal.chat.purchase.SetSubscriptionLevelResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 29: org.signal.chat.purchase.SetSubscriptionLevelResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 30: org.signal.chat.purchase.SetSubscriptionLevelResponse.payment_method_not_set_up:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 31: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_operation:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 32: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_level:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 33: org.signal.chat.purchase.SetSubscriptionLevelResponse.unsupported_currency:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 34: org.signal.chat.purchase.SetSubscriptionLevelResponse.payment_requires_action:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 35: org.signal.chat.purchase.SetSubscriptionLevelResponse.invalid_level_transition:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 36: org.signal.chat.purchase.SetSubscriptionLevelResponse.invalid_idempotency_key:type_name -> org.signal.chat.errors.FailedPrecondition + 15, // 37: org.signal.chat.purchase.SetSubscriptionLevelResponse.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure + 32, // 38: org.signal.chat.purchase.SetIapSubscriptionRequest.app_store:type_name -> org.signal.chat.purchase.SetIapSubscriptionRequest.AppStorePurchase + 33, // 39: org.signal.chat.purchase.SetIapSubscriptionRequest.play_billing:type_name -> org.signal.chat.purchase.SetIapSubscriptionRequest.PlayBillingPurchase + 34, // 40: org.signal.chat.purchase.SetIapSubscriptionResponse.success:type_name -> org.signal.chat.purchase.SetIapSubscriptionResponse.SetIapSubscriptionResult + 40, // 41: org.signal.chat.purchase.SetIapSubscriptionResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 42: org.signal.chat.purchase.SetIapSubscriptionResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 43: org.signal.chat.purchase.SetIapSubscriptionResponse.subscription_processor_conflict:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 44: org.signal.chat.purchase.SetIapSubscriptionResponse.payment_required:type_name -> org.signal.chat.errors.FailedPrecondition + 41, // 45: org.signal.chat.purchase.SetIapSubscriptionResponse.invalid_transaction:type_name -> org.signal.chat.errors.FailedPrecondition + 35, // 46: org.signal.chat.purchase.GetReceiptCredentialsResponse.success:type_name -> org.signal.chat.purchase.GetReceiptCredentialsResponse.GetReceiptCredentialsResult + 40, // 47: org.signal.chat.purchase.GetReceiptCredentialsResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 48: org.signal.chat.purchase.GetReceiptCredentialsResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 41, // 49: org.signal.chat.purchase.GetReceiptCredentialsResponse.no_paid_invoice:type_name -> org.signal.chat.errors.FailedPrecondition + 16, // 50: org.signal.chat.purchase.GetReceiptCredentialsResponse.payment_required:type_name -> org.signal.chat.purchase.PaymentRequired + 41, // 51: org.signal.chat.purchase.GetReceiptCredentialsResponse.already_redeemed:type_name -> org.signal.chat.errors.FailedPrecondition + 36, // 52: org.signal.chat.purchase.GetSubscriptionInformationResponse.success:type_name -> org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription + 37, // 53: org.signal.chat.purchase.GetSubscriptionInformationResponse.no_subscription:type_name -> google.protobuf.Empty + 40, // 54: org.signal.chat.purchase.GetSubscriptionInformationResponse.subscriber_not_found:type_name -> org.signal.chat.errors.NotFound + 38, // 55: org.signal.chat.purchase.GetSubscriptionInformationResponse.subscriber_id_mismatch:type_name -> org.signal.chat.errors.FailedUnidentifiedAuthorization + 3, // 56: org.signal.chat.purchase.GetBankMandateRequest.bank_transfer_type:type_name -> org.signal.chat.purchase.BankTransferType + 0, // 57: org.signal.chat.purchase.CreatePaymentMethodResponse.CreatePaymentMethodResult.paymentProvider:type_name -> org.signal.chat.purchase.PaymentProvider + 2, // 58: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.status:type_name -> org.signal.chat.purchase.SubscriptionStatus + 0, // 59: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.processor:type_name -> org.signal.chat.purchase.PaymentProvider + 1, // 60: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.payment_method:type_name -> org.signal.chat.purchase.PaymentMethod + 15, // 61: org.signal.chat.purchase.GetSubscriptionInformationResponse.Subscription.charge_failure:type_name -> org.signal.chat.purchase.ChargeFailure + 4, // 62: org.signal.chat.purchase.Subscriptions.UpdateSubscriber:input_type -> org.signal.chat.purchase.UpdateSubscriberRequest + 6, // 63: org.signal.chat.purchase.Subscriptions.DeleteSubscriber:input_type -> org.signal.chat.purchase.DeleteSubscriberRequest + 8, // 64: org.signal.chat.purchase.Subscriptions.CreatePaymentMethod:input_type -> org.signal.chat.purchase.CreatePaymentMethodRequest + 10, // 65: org.signal.chat.purchase.Subscriptions.CreatePayPalPaymentMethod:input_type -> org.signal.chat.purchase.CreatePayPalPaymentMethodRequest + 12, // 66: org.signal.chat.purchase.Subscriptions.SetDefaultPaymentMethod:input_type -> org.signal.chat.purchase.SetDefaultPaymentMethodRequest + 14, // 67: org.signal.chat.purchase.Subscriptions.SetSubscriptionLevel:input_type -> org.signal.chat.purchase.SetSubscriptionLevelRequest + 22, // 68: org.signal.chat.purchase.Subscriptions.GetSubscriptionInformation:input_type -> org.signal.chat.purchase.GetSubscriptionInformationRequest + 20, // 69: org.signal.chat.purchase.Subscriptions.GetReceiptCredentials:input_type -> org.signal.chat.purchase.GetReceiptCredentialsRequest + 18, // 70: org.signal.chat.purchase.Subscriptions.SetIapSubscription:input_type -> org.signal.chat.purchase.SetIapSubscriptionRequest + 24, // 71: org.signal.chat.purchase.Subscriptions.GetBankMandate:input_type -> org.signal.chat.purchase.GetBankMandateRequest + 5, // 72: org.signal.chat.purchase.Subscriptions.UpdateSubscriber:output_type -> org.signal.chat.purchase.UpdateSubscriberResponse + 7, // 73: org.signal.chat.purchase.Subscriptions.DeleteSubscriber:output_type -> org.signal.chat.purchase.DeleteSubscriberResponse + 9, // 74: org.signal.chat.purchase.Subscriptions.CreatePaymentMethod:output_type -> org.signal.chat.purchase.CreatePaymentMethodResponse + 11, // 75: org.signal.chat.purchase.Subscriptions.CreatePayPalPaymentMethod:output_type -> org.signal.chat.purchase.CreatePayPalPaymentMethodResponse + 13, // 76: org.signal.chat.purchase.Subscriptions.SetDefaultPaymentMethod:output_type -> org.signal.chat.purchase.SetDefaultPaymentMethodResponse + 17, // 77: org.signal.chat.purchase.Subscriptions.SetSubscriptionLevel:output_type -> org.signal.chat.purchase.SetSubscriptionLevelResponse + 23, // 78: org.signal.chat.purchase.Subscriptions.GetSubscriptionInformation:output_type -> org.signal.chat.purchase.GetSubscriptionInformationResponse + 21, // 79: org.signal.chat.purchase.Subscriptions.GetReceiptCredentials:output_type -> org.signal.chat.purchase.GetReceiptCredentialsResponse + 19, // 80: org.signal.chat.purchase.Subscriptions.SetIapSubscription:output_type -> org.signal.chat.purchase.SetIapSubscriptionResponse + 25, // 81: org.signal.chat.purchase.Subscriptions.GetBankMandate:output_type -> org.signal.chat.purchase.GetBankMandateResponse + 72, // [72:82] is the sub-list for method output_type + 62, // [62:72] is the sub-list for method input_type + 62, // [62:62] is the sub-list for extension type_name + 62, // [62:62] is the sub-list for extension extendee + 0, // [0:62] is the sub-list for field type_name } func init() { file_org_signal_chat_subscriptions_proto_init() } @@ -3150,6 +3306,7 @@ func file_org_signal_chat_subscriptions_proto_init() { } file_org_signal_chat_subscriptions_proto_msgTypes[1].OneofWrappers = []any{ (*UpdateSubscriberResponse_Success)(nil), + (*UpdateSubscriberResponse_SubscriberIdMismatch)(nil), (*UpdateSubscriberResponse_PermitRejected)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[3].OneofWrappers = []any{ @@ -3160,12 +3317,14 @@ func file_org_signal_chat_subscriptions_proto_init() { file_org_signal_chat_subscriptions_proto_msgTypes[5].OneofWrappers = []any{ (*CreatePaymentMethodResponse_Result)(nil), (*CreatePaymentMethodResponse_SubscriberNotFound)(nil), + (*CreatePaymentMethodResponse_SubscriberIdMismatch)(nil), (*CreatePaymentMethodResponse_SubscriptionProcessorConflict)(nil), (*CreatePaymentMethodResponse_PermitRejected)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[7].OneofWrappers = []any{ (*CreatePayPalPaymentMethodResponse_Result)(nil), (*CreatePayPalPaymentMethodResponse_SubscriberNotFound)(nil), + (*CreatePayPalPaymentMethodResponse_SubscriberIdMismatch)(nil), (*CreatePayPalPaymentMethodResponse_SubscriptionProcessorConflict)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[8].OneofWrappers = []any{ @@ -3176,13 +3335,16 @@ func file_org_signal_chat_subscriptions_proto_init() { file_org_signal_chat_subscriptions_proto_msgTypes[9].OneofWrappers = []any{ (*SetDefaultPaymentMethodResponse_Success)(nil), (*SetDefaultPaymentMethodResponse_SubscriberNotFound)(nil), + (*SetDefaultPaymentMethodResponse_SubscriberIdMismatch)(nil), (*SetDefaultPaymentMethodResponse_PaymentMethodNotSetUp)(nil), + (*SetDefaultPaymentMethodResponse_SubscriptionProcessorConflict)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[11].OneofWrappers = []any{} file_org_signal_chat_subscriptions_proto_msgTypes[12].OneofWrappers = []any{} file_org_signal_chat_subscriptions_proto_msgTypes[13].OneofWrappers = []any{ (*SetSubscriptionLevelResponse_Success)(nil), (*SetSubscriptionLevelResponse_SubscriberNotFound)(nil), + (*SetSubscriptionLevelResponse_SubscriberIdMismatch)(nil), (*SetSubscriptionLevelResponse_SubscriptionProcessorConflict)(nil), (*SetSubscriptionLevelResponse_PaymentMethodNotSetUp)(nil), (*SetSubscriptionLevelResponse_UnsupportedOperation)(nil), @@ -3200,21 +3362,24 @@ func file_org_signal_chat_subscriptions_proto_init() { file_org_signal_chat_subscriptions_proto_msgTypes[15].OneofWrappers = []any{ (*SetIapSubscriptionResponse_Success)(nil), (*SetIapSubscriptionResponse_SubscriberNotFound)(nil), + (*SetIapSubscriptionResponse_SubscriberIdMismatch)(nil), (*SetIapSubscriptionResponse_SubscriptionProcessorConflict)(nil), (*SetIapSubscriptionResponse_PaymentRequired)(nil), (*SetIapSubscriptionResponse_InvalidTransaction)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[17].OneofWrappers = []any{ - (*GetReceiptCredentialResponse_Success)(nil), - (*GetReceiptCredentialResponse_SubscriberNotFound)(nil), - (*GetReceiptCredentialResponse_NoPaidInvoice)(nil), - (*GetReceiptCredentialResponse_PaymentRequired)(nil), - (*GetReceiptCredentialResponse_AlreadyRedeemed)(nil), + (*GetReceiptCredentialsResponse_Success)(nil), + (*GetReceiptCredentialsResponse_SubscriberNotFound)(nil), + (*GetReceiptCredentialsResponse_SubscriberIdMismatch)(nil), + (*GetReceiptCredentialsResponse_NoPaidInvoice)(nil), + (*GetReceiptCredentialsResponse_PaymentRequired)(nil), + (*GetReceiptCredentialsResponse_AlreadyRedeemed)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[19].OneofWrappers = []any{ (*GetSubscriptionInformationResponse_Success)(nil), (*GetSubscriptionInformationResponse_NoSubscription)(nil), (*GetSubscriptionInformationResponse_SubscriberNotFound)(nil), + (*GetSubscriptionInformationResponse_SubscriberIdMismatch)(nil), } file_org_signal_chat_subscriptions_proto_msgTypes[32].OneofWrappers = []any{} type x struct{} diff --git a/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions_grpc.pb.go b/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions_grpc.pb.go index 8e7bf69..5153be8 100644 --- a/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions_grpc.pb.go +++ b/pkg/signalmeow/protobuf/rpc/subscriptions/subscriptions_grpc.pb.go @@ -30,7 +30,7 @@ const ( Subscriptions_SetDefaultPaymentMethod_FullMethodName = "/org.signal.chat.purchase.Subscriptions/SetDefaultPaymentMethod" Subscriptions_SetSubscriptionLevel_FullMethodName = "/org.signal.chat.purchase.Subscriptions/SetSubscriptionLevel" Subscriptions_GetSubscriptionInformation_FullMethodName = "/org.signal.chat.purchase.Subscriptions/GetSubscriptionInformation" - Subscriptions_GetReceiptCredential_FullMethodName = "/org.signal.chat.purchase.Subscriptions/GetReceiptCredential" + Subscriptions_GetReceiptCredentials_FullMethodName = "/org.signal.chat.purchase.Subscriptions/GetReceiptCredentials" Subscriptions_SetIapSubscription_FullMethodName = "/org.signal.chat.purchase.Subscriptions/SetIapSubscription" Subscriptions_GetBankMandate_FullMethodName = "/org.signal.chat.purchase.Subscriptions/GetBankMandate" ) @@ -43,8 +43,6 @@ const ( // // Configuration for subscription levels can be found in ProductConfiguration. type SubscriptionsClient interface { - // Creates a subscriber record if it does not exist, otherwise refreshes its last access time. - // // Subscribers MUST periodically hit this endpoint to update the access time on the subscription record. Subscribers // SHOULD attempt to make an update call approximately every 3 days. Not accessing this endpoint for an extended // period of time will result in the subscription being canceled. @@ -57,10 +55,6 @@ type SubscriptionsClient interface { // Returns a client secret that can be used to set up a new payment method with the payment processor. CreatePaymentMethod(ctx context.Context, in *CreatePaymentMethodRequest, opts ...grpc.CallOption) (*CreatePaymentMethodResponse, error) // Returns a PayPal billing agreement approval URL and token that can be used to set up PayPal as a payment method. - // - // The presented billing agreement may be localized. Callers should set their - // language preferences via an "Accept-Language" header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 CreatePayPalPaymentMethod(ctx context.Context, in *CreatePayPalPaymentMethodRequest, opts ...grpc.CallOption) (*CreatePayPalPaymentMethodResponse, error) // Sets the default payment method for a subscriber. SetDefaultPaymentMethod(ctx context.Context, in *SetDefaultPaymentMethodRequest, opts ...grpc.CallOption) (*SetDefaultPaymentMethodResponse, error) @@ -81,7 +75,7 @@ type SubscriptionsClient interface { // invoice. Clients SHOULD retry requests at this endpoint with the same ReceiptCredentialRequest value until // receiving a response. After receiving a response, clients should then compute the ReceiptCredentialPresentation // and redeem it at the receipt redemption endpoint. Once the first attempt is made there, the same - // ReceiptCredentialRequest MUST NOT be used again to request a receipt credential. + // ReceiptCredentialRequest MUST NOT be used again to request receipt credentials. // // Note that you may in fact redeem TWO or more invoices for the same ReceiptCredentialRequest while retrying this // operation if a later invoice gets paid while you are retrying. However, the returned receipt is always for the @@ -91,7 +85,7 @@ type SubscriptionsClient interface { // cannot be redeemed. // // Clients MUST validate that the generated receipt credential's level and expiration matches their expectations. - GetReceiptCredential(ctx context.Context, in *GetReceiptCredentialRequest, opts ...grpc.CallOption) (*GetReceiptCredentialResponse, error) + GetReceiptCredentials(ctx context.Context, in *GetReceiptCredentialsRequest, opts ...grpc.CallOption) (*GetReceiptCredentialsResponse, error) // Set a token that represents an IAP subscription made with App Store/Google Play Billing. // // To set up an App Store subscription: @@ -99,7 +93,7 @@ type SubscriptionsClient interface { // 2. [Create a subscription](https://developer.apple.com/documentation/storekit/in-app_purchase/) with the App Store // directly via StoreKit and obtain a originalTransactionId. // 3. Call this RPC with the originalTransactionId - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // Play Billing: Set a purchaseToken that represents an IAP subscription made with Google Play Billing. @@ -110,7 +104,7 @@ type SubscriptionsClient interface { // directly and obtain a purchaseToken. Do not [acknowledge](https://developer.android.com/google/play/billing/integrate#subscriptions) // the purchaseToken. // 3. Call this RPC with the purchaseToken - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // After calling this method, the payment is confirmed. Callers must durably store their subscriberId before calling @@ -120,11 +114,7 @@ type SubscriptionsClient interface { // method. A different playbilling purchaseToken can be posted to the same subscriberId, in this case the subscription // associated with the old purchaseToken will be cancelled. SetIapSubscription(ctx context.Context, in *SetIapSubscriptionRequest, opts ...grpc.CallOption) (*SetIapSubscriptionResponse, error) - // Returns a localized bank mandate for the specified bank transfer type. - // - // Callers should set their language preferences via an "Accept-Language" - // header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Returns a localized bank mandate for the specified bank transfer type GetBankMandate(ctx context.Context, in *GetBankMandateRequest, opts ...grpc.CallOption) (*GetBankMandateResponse, error) } @@ -206,10 +196,10 @@ func (c *subscriptionsClient) GetSubscriptionInformation(ctx context.Context, in return out, nil } -func (c *subscriptionsClient) GetReceiptCredential(ctx context.Context, in *GetReceiptCredentialRequest, opts ...grpc.CallOption) (*GetReceiptCredentialResponse, error) { +func (c *subscriptionsClient) GetReceiptCredentials(ctx context.Context, in *GetReceiptCredentialsRequest, opts ...grpc.CallOption) (*GetReceiptCredentialsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetReceiptCredentialResponse) - err := c.cc.Invoke(ctx, Subscriptions_GetReceiptCredential_FullMethodName, in, out, cOpts...) + out := new(GetReceiptCredentialsResponse) + err := c.cc.Invoke(ctx, Subscriptions_GetReceiptCredentials_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -244,8 +234,6 @@ func (c *subscriptionsClient) GetBankMandate(ctx context.Context, in *GetBankMan // // Configuration for subscription levels can be found in ProductConfiguration. type SubscriptionsServer interface { - // Creates a subscriber record if it does not exist, otherwise refreshes its last access time. - // // Subscribers MUST periodically hit this endpoint to update the access time on the subscription record. Subscribers // SHOULD attempt to make an update call approximately every 3 days. Not accessing this endpoint for an extended // period of time will result in the subscription being canceled. @@ -258,10 +246,6 @@ type SubscriptionsServer interface { // Returns a client secret that can be used to set up a new payment method with the payment processor. CreatePaymentMethod(context.Context, *CreatePaymentMethodRequest) (*CreatePaymentMethodResponse, error) // Returns a PayPal billing agreement approval URL and token that can be used to set up PayPal as a payment method. - // - // The presented billing agreement may be localized. Callers should set their - // language preferences via an "Accept-Language" header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 CreatePayPalPaymentMethod(context.Context, *CreatePayPalPaymentMethodRequest) (*CreatePayPalPaymentMethodResponse, error) // Sets the default payment method for a subscriber. SetDefaultPaymentMethod(context.Context, *SetDefaultPaymentMethodRequest) (*SetDefaultPaymentMethodResponse, error) @@ -282,7 +266,7 @@ type SubscriptionsServer interface { // invoice. Clients SHOULD retry requests at this endpoint with the same ReceiptCredentialRequest value until // receiving a response. After receiving a response, clients should then compute the ReceiptCredentialPresentation // and redeem it at the receipt redemption endpoint. Once the first attempt is made there, the same - // ReceiptCredentialRequest MUST NOT be used again to request a receipt credential. + // ReceiptCredentialRequest MUST NOT be used again to request receipt credentials. // // Note that you may in fact redeem TWO or more invoices for the same ReceiptCredentialRequest while retrying this // operation if a later invoice gets paid while you are retrying. However, the returned receipt is always for the @@ -292,7 +276,7 @@ type SubscriptionsServer interface { // cannot be redeemed. // // Clients MUST validate that the generated receipt credential's level and expiration matches their expectations. - GetReceiptCredential(context.Context, *GetReceiptCredentialRequest) (*GetReceiptCredentialResponse, error) + GetReceiptCredentials(context.Context, *GetReceiptCredentialsRequest) (*GetReceiptCredentialsResponse, error) // Set a token that represents an IAP subscription made with App Store/Google Play Billing. // // To set up an App Store subscription: @@ -300,7 +284,7 @@ type SubscriptionsServer interface { // 2. [Create a subscription](https://developer.apple.com/documentation/storekit/in-app_purchase/) with the App Store // directly via StoreKit and obtain a originalTransactionId. // 3. Call this RPC with the originalTransactionId - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // Play Billing: Set a purchaseToken that represents an IAP subscription made with Google Play Billing. @@ -311,7 +295,7 @@ type SubscriptionsServer interface { // directly and obtain a purchaseToken. Do not [acknowledge](https://developer.android.com/google/play/billing/integrate#subscriptions) // the purchaseToken. // 3. Call this RPC with the purchaseToken - // 4. Obtain a receipt via GetReceiptCredential which can then be used to obtain the + // 4. Obtain a receipt via GetReceiptCredentials which can then be used to obtain the // entitlement // // After calling this method, the payment is confirmed. Callers must durably store their subscriberId before calling @@ -321,11 +305,7 @@ type SubscriptionsServer interface { // method. A different playbilling purchaseToken can be posted to the same subscriberId, in this case the subscription // associated with the old purchaseToken will be cancelled. SetIapSubscription(context.Context, *SetIapSubscriptionRequest) (*SetIapSubscriptionResponse, error) - // Returns a localized bank mandate for the specified bank transfer type. - // - // Callers should set their language preferences via an "Accept-Language" - // header on the request: - // https://datatracker.ietf.org/doc/html/rfc3282#section-3 + // Returns a localized bank mandate for the specified bank transfer type GetBankMandate(context.Context, *GetBankMandateRequest) (*GetBankMandateResponse, error) mustEmbedUnimplementedSubscriptionsServer() } @@ -358,8 +338,8 @@ func (UnimplementedSubscriptionsServer) SetSubscriptionLevel(context.Context, *S func (UnimplementedSubscriptionsServer) GetSubscriptionInformation(context.Context, *GetSubscriptionInformationRequest) (*GetSubscriptionInformationResponse, error) { return nil, status.Error(codes.Unimplemented, "method GetSubscriptionInformation not implemented") } -func (UnimplementedSubscriptionsServer) GetReceiptCredential(context.Context, *GetReceiptCredentialRequest) (*GetReceiptCredentialResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetReceiptCredential not implemented") +func (UnimplementedSubscriptionsServer) GetReceiptCredentials(context.Context, *GetReceiptCredentialsRequest) (*GetReceiptCredentialsResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetReceiptCredentials not implemented") } func (UnimplementedSubscriptionsServer) SetIapSubscription(context.Context, *SetIapSubscriptionRequest) (*SetIapSubscriptionResponse, error) { return nil, status.Error(codes.Unimplemented, "method SetIapSubscription not implemented") @@ -514,20 +494,20 @@ func _Subscriptions_GetSubscriptionInformation_Handler(srv interface{}, ctx cont return interceptor(ctx, in, info, handler) } -func _Subscriptions_GetReceiptCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetReceiptCredentialRequest) +func _Subscriptions_GetReceiptCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetReceiptCredentialsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(SubscriptionsServer).GetReceiptCredential(ctx, in) + return srv.(SubscriptionsServer).GetReceiptCredentials(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Subscriptions_GetReceiptCredential_FullMethodName, + FullMethod: Subscriptions_GetReceiptCredentials_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SubscriptionsServer).GetReceiptCredential(ctx, req.(*GetReceiptCredentialRequest)) + return srv.(SubscriptionsServer).GetReceiptCredentials(ctx, req.(*GetReceiptCredentialsRequest)) } return interceptor(ctx, in, info, handler) } @@ -604,8 +584,8 @@ var Subscriptions_ServiceDesc = grpc.ServiceDesc{ Handler: _Subscriptions_GetSubscriptionInformation_Handler, }, { - MethodName: "GetReceiptCredential", - Handler: _Subscriptions_GetReceiptCredential_Handler, + MethodName: "GetReceiptCredentials", + Handler: _Subscriptions_GetReceiptCredentials_Handler, }, { MethodName: "SetIapSubscription", diff --git a/pkg/signalmeow/protobuf/signalpb/SignalService.pb.go b/pkg/signalmeow/protobuf/signalpb/SignalService.pb.go index 1acd9fb..b8ee02f 100644 --- a/pkg/signalmeow/protobuf/signalpb/SignalService.pb.go +++ b/pkg/signalmeow/protobuf/signalpb/SignalService.pb.go @@ -3488,14 +3488,9 @@ type AttachmentPointer struct { Caption *string `protobuf:"bytes,11,opt,name=caption" json:"caption,omitempty"` BlurHash *string `protobuf:"bytes,12,opt,name=blurHash" json:"blurHash,omitempty"` UploadTimestamp *uint64 `protobuf:"varint,13,opt,name=uploadTimestamp" json:"uploadTimestamp,omitempty"` - CdnNumber *uint32 `protobuf:"varint,14,opt,name=cdnNumber" json:"cdnNumber,omitempty"` - // Waveform for audio attachments. Each byte represents a "bar" in the - // waveform, with 0 as silence 255 as loudest. At most 100 bytes/bars. - AudioWaveform []byte `protobuf:"bytes,21,opt,name=audioWaveform" json:"audioWaveform,omitempty"` - // Duration of an audio attachment, in seconds. - AudioDurationSeconds *float32 `protobuf:"fixed32,22,opt,name=audioDurationSeconds" json:"audioDurationSeconds,omitempty"` // Next ID: 23 - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + CdnNumber *uint32 `protobuf:"varint,14,opt,name=cdnNumber" json:"cdnNumber,omitempty"` // Next ID: 21 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AttachmentPointer) Reset() { @@ -3665,20 +3660,6 @@ func (x *AttachmentPointer) GetCdnNumber() uint32 { return 0 } -func (x *AttachmentPointer) GetAudioWaveform() []byte { - if x != nil { - return x.AudioWaveform - } - return nil -} - -func (x *AttachmentPointer) GetAudioDurationSeconds() float32 { - if x != nil && x.AudioDurationSeconds != nil { - return *x.AudioDurationSeconds - } - return 0 -} - type isAttachmentPointer_AttachmentIdentifier interface { isAttachmentPointer_AttachmentIdentifier() } @@ -4922,9 +4903,6 @@ type DataMessage_Contact struct { Address []*DataMessage_Contact_PostalAddress `protobuf:"bytes,5,rep,name=address" json:"address,omitempty"` Avatar *DataMessage_Contact_Avatar `protobuf:"bytes,6,opt,name=avatar" json:"avatar,omitempty"` Organization *string `protobuf:"bytes,7,opt,name=organization" json:"organization,omitempty"` - AciBinary []byte `protobuf:"bytes,8,opt,name=aciBinary" json:"aciBinary,omitempty"` // 16-byte UUID - Nickname *DataMessage_Contact_SignalNickname `protobuf:"bytes,9,opt,name=nickname" json:"nickname,omitempty"` - Note *string `protobuf:"bytes,10,opt,name=note" json:"note,omitempty"` // Next ID: 11 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5001,27 +4979,6 @@ func (x *DataMessage_Contact) GetOrganization() string { return "" } -func (x *DataMessage_Contact) GetAciBinary() []byte { - if x != nil { - return x.AciBinary - } - return nil -} - -func (x *DataMessage_Contact) GetNickname() *DataMessage_Contact_SignalNickname { - if x != nil { - return x.Nickname - } - return nil -} - -func (x *DataMessage_Contact) GetNote() string { - if x != nil && x.Note != nil { - return *x.Note - } - return "" -} - type DataMessage_Sticker struct { state protoimpl.MessageState `protogen:"open.v1"` PackId []byte `protobuf:"bytes,1,opt,name=packId" json:"packId,omitempty"` @@ -6438,58 +6395,6 @@ func (x *DataMessage_Contact_Avatar) GetIsProfile() bool { return false } -type DataMessage_Contact_SignalNickname struct { - state protoimpl.MessageState `protogen:"open.v1"` - Given *string `protobuf:"bytes,1,opt,name=given" json:"given,omitempty"` - Family *string `protobuf:"bytes,2,opt,name=family" json:"family,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DataMessage_Contact_SignalNickname) Reset() { - *x = DataMessage_Contact_SignalNickname{} - mi := &file_signalpb_SignalService_proto_msgTypes[54] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DataMessage_Contact_SignalNickname) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DataMessage_Contact_SignalNickname) ProtoMessage() {} - -func (x *DataMessage_Contact_SignalNickname) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[54] - 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 DataMessage_Contact_SignalNickname.ProtoReflect.Descriptor instead. -func (*DataMessage_Contact_SignalNickname) Descriptor() ([]byte, []int) { - return file_signalpb_SignalService_proto_rawDescGZIP(), []int{3, 2, 5} -} - -func (x *DataMessage_Contact_SignalNickname) GetGiven() string { - if x != nil && x.Given != nil { - return *x.Given - } - return "" -} - -func (x *DataMessage_Contact_SignalNickname) GetFamily() string { - if x != nil && x.Family != nil { - return *x.Family - } - return "" -} - type TextAttachment_Gradient struct { state protoimpl.MessageState `protogen:"open.v1"` StartColor *uint32 `protobuf:"varint,1,opt,name=startColor" json:"startColor,omitempty"` // deprecated: this field will be removed in a future release. @@ -6503,7 +6408,7 @@ type TextAttachment_Gradient struct { func (x *TextAttachment_Gradient) Reset() { *x = TextAttachment_Gradient{} - mi := &file_signalpb_SignalService_proto_msgTypes[55] + mi := &file_signalpb_SignalService_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6515,7 +6420,7 @@ func (x *TextAttachment_Gradient) String() string { func (*TextAttachment_Gradient) ProtoMessage() {} func (x *TextAttachment_Gradient) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[55] + mi := &file_signalpb_SignalService_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6590,7 +6495,7 @@ const ( func (x *SyncMessage_Sent) Reset() { *x = SyncMessage_Sent{} - mi := &file_signalpb_SignalService_proto_msgTypes[56] + mi := &file_signalpb_SignalService_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6602,7 +6507,7 @@ func (x *SyncMessage_Sent) String() string { func (*SyncMessage_Sent) ProtoMessage() {} func (x *SyncMessage_Sent) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[56] + mi := &file_signalpb_SignalService_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6710,7 +6615,7 @@ const ( func (x *SyncMessage_Contacts) Reset() { *x = SyncMessage_Contacts{} - mi := &file_signalpb_SignalService_proto_msgTypes[57] + mi := &file_signalpb_SignalService_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6722,7 +6627,7 @@ func (x *SyncMessage_Contacts) String() string { func (*SyncMessage_Contacts) ProtoMessage() {} func (x *SyncMessage_Contacts) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[57] + mi := &file_signalpb_SignalService_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6767,7 +6672,7 @@ type SyncMessage_Blocked struct { func (x *SyncMessage_Blocked) Reset() { *x = SyncMessage_Blocked{} - mi := &file_signalpb_SignalService_proto_msgTypes[58] + mi := &file_signalpb_SignalService_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6779,7 +6684,7 @@ func (x *SyncMessage_Blocked) String() string { func (*SyncMessage_Blocked) ProtoMessage() {} func (x *SyncMessage_Blocked) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[58] + mi := &file_signalpb_SignalService_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6853,7 +6758,7 @@ type SyncMessage_Request struct { func (x *SyncMessage_Request) Reset() { *x = SyncMessage_Request{} - mi := &file_signalpb_SignalService_proto_msgTypes[59] + mi := &file_signalpb_SignalService_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6865,7 +6770,7 @@ func (x *SyncMessage_Request) String() string { func (*SyncMessage_Request) ProtoMessage() {} func (x *SyncMessage_Request) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[59] + mi := &file_signalpb_SignalService_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6899,7 +6804,7 @@ type SyncMessage_Read struct { func (x *SyncMessage_Read) Reset() { *x = SyncMessage_Read{} - mi := &file_signalpb_SignalService_proto_msgTypes[60] + mi := &file_signalpb_SignalService_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6911,7 +6816,7 @@ func (x *SyncMessage_Read) String() string { func (*SyncMessage_Read) ProtoMessage() {} func (x *SyncMessage_Read) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[60] + mi := &file_signalpb_SignalService_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6959,7 +6864,7 @@ type SyncMessage_Viewed struct { func (x *SyncMessage_Viewed) Reset() { *x = SyncMessage_Viewed{} - mi := &file_signalpb_SignalService_proto_msgTypes[61] + mi := &file_signalpb_SignalService_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6971,7 +6876,7 @@ func (x *SyncMessage_Viewed) String() string { func (*SyncMessage_Viewed) ProtoMessage() {} func (x *SyncMessage_Viewed) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[61] + mi := &file_signalpb_SignalService_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7020,7 +6925,7 @@ type SyncMessage_Configuration struct { func (x *SyncMessage_Configuration) Reset() { *x = SyncMessage_Configuration{} - mi := &file_signalpb_SignalService_proto_msgTypes[62] + mi := &file_signalpb_SignalService_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7032,7 +6937,7 @@ func (x *SyncMessage_Configuration) String() string { func (*SyncMessage_Configuration) ProtoMessage() {} func (x *SyncMessage_Configuration) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[62] + mi := &file_signalpb_SignalService_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7087,7 +6992,7 @@ type SyncMessage_StickerPackOperation struct { func (x *SyncMessage_StickerPackOperation) Reset() { *x = SyncMessage_StickerPackOperation{} - mi := &file_signalpb_SignalService_proto_msgTypes[63] + mi := &file_signalpb_SignalService_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7099,7 +7004,7 @@ func (x *SyncMessage_StickerPackOperation) String() string { func (*SyncMessage_StickerPackOperation) ProtoMessage() {} func (x *SyncMessage_StickerPackOperation) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[63] + mi := &file_signalpb_SignalService_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7147,7 +7052,7 @@ type SyncMessage_ViewOnceOpen struct { func (x *SyncMessage_ViewOnceOpen) Reset() { *x = SyncMessage_ViewOnceOpen{} - mi := &file_signalpb_SignalService_proto_msgTypes[64] + mi := &file_signalpb_SignalService_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7159,7 +7064,7 @@ func (x *SyncMessage_ViewOnceOpen) String() string { func (*SyncMessage_ViewOnceOpen) ProtoMessage() {} func (x *SyncMessage_ViewOnceOpen) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[64] + mi := &file_signalpb_SignalService_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7205,7 +7110,7 @@ type SyncMessage_FetchLatest struct { func (x *SyncMessage_FetchLatest) Reset() { *x = SyncMessage_FetchLatest{} - mi := &file_signalpb_SignalService_proto_msgTypes[65] + mi := &file_signalpb_SignalService_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7217,7 +7122,7 @@ func (x *SyncMessage_FetchLatest) String() string { func (*SyncMessage_FetchLatest) ProtoMessage() {} func (x *SyncMessage_FetchLatest) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[65] + mi := &file_signalpb_SignalService_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7250,7 +7155,7 @@ type SyncMessage_Keys struct { func (x *SyncMessage_Keys) Reset() { *x = SyncMessage_Keys{} - mi := &file_signalpb_SignalService_proto_msgTypes[66] + mi := &file_signalpb_SignalService_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7262,7 +7167,7 @@ func (x *SyncMessage_Keys) String() string { func (*SyncMessage_Keys) ProtoMessage() {} func (x *SyncMessage_Keys) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[66] + mi := &file_signalpb_SignalService_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7302,7 +7207,7 @@ type SyncMessage_PniIdentity struct { func (x *SyncMessage_PniIdentity) Reset() { *x = SyncMessage_PniIdentity{} - mi := &file_signalpb_SignalService_proto_msgTypes[67] + mi := &file_signalpb_SignalService_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7314,7 +7219,7 @@ func (x *SyncMessage_PniIdentity) String() string { func (*SyncMessage_PniIdentity) ProtoMessage() {} func (x *SyncMessage_PniIdentity) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[67] + mi := &file_signalpb_SignalService_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7356,7 +7261,7 @@ type SyncMessage_MessageRequestResponse struct { func (x *SyncMessage_MessageRequestResponse) Reset() { *x = SyncMessage_MessageRequestResponse{} - mi := &file_signalpb_SignalService_proto_msgTypes[68] + mi := &file_signalpb_SignalService_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7368,7 +7273,7 @@ func (x *SyncMessage_MessageRequestResponse) String() string { func (*SyncMessage_MessageRequestResponse) ProtoMessage() {} func (x *SyncMessage_MessageRequestResponse) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[68] + mi := &file_signalpb_SignalService_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7426,7 +7331,7 @@ type SyncMessage_OutgoingPayment struct { func (x *SyncMessage_OutgoingPayment) Reset() { *x = SyncMessage_OutgoingPayment{} - mi := &file_signalpb_SignalService_proto_msgTypes[69] + mi := &file_signalpb_SignalService_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7438,7 +7343,7 @@ func (x *SyncMessage_OutgoingPayment) String() string { func (*SyncMessage_OutgoingPayment) ProtoMessage() {} func (x *SyncMessage_OutgoingPayment) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[69] + mi := &file_signalpb_SignalService_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7508,7 +7413,7 @@ type SyncMessage_PniChangeNumber struct { func (x *SyncMessage_PniChangeNumber) Reset() { *x = SyncMessage_PniChangeNumber{} - mi := &file_signalpb_SignalService_proto_msgTypes[70] + mi := &file_signalpb_SignalService_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7520,7 +7425,7 @@ func (x *SyncMessage_PniChangeNumber) String() string { func (*SyncMessage_PniChangeNumber) ProtoMessage() {} func (x *SyncMessage_PniChangeNumber) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[70] + mi := &file_signalpb_SignalService_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7590,7 +7495,7 @@ type SyncMessage_CallEvent struct { func (x *SyncMessage_CallEvent) Reset() { *x = SyncMessage_CallEvent{} - mi := &file_signalpb_SignalService_proto_msgTypes[71] + mi := &file_signalpb_SignalService_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7602,7 +7507,7 @@ func (x *SyncMessage_CallEvent) String() string { func (*SyncMessage_CallEvent) ProtoMessage() {} func (x *SyncMessage_CallEvent) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[71] + mi := &file_signalpb_SignalService_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7671,7 +7576,7 @@ type SyncMessage_CallLinkUpdate struct { func (x *SyncMessage_CallLinkUpdate) Reset() { *x = SyncMessage_CallLinkUpdate{} - mi := &file_signalpb_SignalService_proto_msgTypes[72] + mi := &file_signalpb_SignalService_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7683,7 +7588,7 @@ func (x *SyncMessage_CallLinkUpdate) String() string { func (*SyncMessage_CallLinkUpdate) ProtoMessage() {} func (x *SyncMessage_CallLinkUpdate) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[72] + mi := &file_signalpb_SignalService_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7737,7 +7642,7 @@ type SyncMessage_CallLogEvent struct { func (x *SyncMessage_CallLogEvent) Reset() { *x = SyncMessage_CallLogEvent{} - mi := &file_signalpb_SignalService_proto_msgTypes[73] + mi := &file_signalpb_SignalService_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7749,7 +7654,7 @@ func (x *SyncMessage_CallLogEvent) String() string { func (*SyncMessage_CallLogEvent) ProtoMessage() {} func (x *SyncMessage_CallLogEvent) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[73] + mi := &file_signalpb_SignalService_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7805,7 +7710,7 @@ type SyncMessage_DeleteForMe struct { func (x *SyncMessage_DeleteForMe) Reset() { *x = SyncMessage_DeleteForMe{} - mi := &file_signalpb_SignalService_proto_msgTypes[74] + mi := &file_signalpb_SignalService_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7817,7 +7722,7 @@ func (x *SyncMessage_DeleteForMe) String() string { func (*SyncMessage_DeleteForMe) ProtoMessage() {} func (x *SyncMessage_DeleteForMe) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[74] + mi := &file_signalpb_SignalService_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7870,7 +7775,7 @@ type SyncMessage_DeviceNameChange struct { func (x *SyncMessage_DeviceNameChange) Reset() { *x = SyncMessage_DeviceNameChange{} - mi := &file_signalpb_SignalService_proto_msgTypes[75] + mi := &file_signalpb_SignalService_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7882,7 +7787,7 @@ func (x *SyncMessage_DeviceNameChange) String() string { func (*SyncMessage_DeviceNameChange) ProtoMessage() {} func (x *SyncMessage_DeviceNameChange) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[75] + mi := &file_signalpb_SignalService_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7915,7 +7820,7 @@ type SyncMessage_AttachmentBackfillRequest struct { func (x *SyncMessage_AttachmentBackfillRequest) Reset() { *x = SyncMessage_AttachmentBackfillRequest{} - mi := &file_signalpb_SignalService_proto_msgTypes[76] + mi := &file_signalpb_SignalService_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7927,7 +7832,7 @@ func (x *SyncMessage_AttachmentBackfillRequest) String() string { func (*SyncMessage_AttachmentBackfillRequest) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillRequest) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[76] + mi := &file_signalpb_SignalService_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7972,7 +7877,7 @@ type SyncMessage_AttachmentBackfillResponse struct { func (x *SyncMessage_AttachmentBackfillResponse) Reset() { *x = SyncMessage_AttachmentBackfillResponse{} - mi := &file_signalpb_SignalService_proto_msgTypes[77] + mi := &file_signalpb_SignalService_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7984,7 +7889,7 @@ func (x *SyncMessage_AttachmentBackfillResponse) String() string { func (*SyncMessage_AttachmentBackfillResponse) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[77] + mi := &file_signalpb_SignalService_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8065,7 +7970,7 @@ type SyncMessage_UsernameChange struct { func (x *SyncMessage_UsernameChange) Reset() { *x = SyncMessage_UsernameChange{} - mi := &file_signalpb_SignalService_proto_msgTypes[78] + mi := &file_signalpb_SignalService_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8077,7 +7982,7 @@ func (x *SyncMessage_UsernameChange) String() string { func (*SyncMessage_UsernameChange) ProtoMessage() {} func (x *SyncMessage_UsernameChange) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[78] + mi := &file_signalpb_SignalService_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8105,7 +8010,7 @@ type SyncMessage_Sent_UnidentifiedDeliveryStatus struct { func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) Reset() { *x = SyncMessage_Sent_UnidentifiedDeliveryStatus{} - mi := &file_signalpb_SignalService_proto_msgTypes[79] + mi := &file_signalpb_SignalService_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8117,7 +8022,7 @@ func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) String() string { func (*SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoMessage() {} func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[79] + mi := &file_signalpb_SignalService_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8173,7 +8078,7 @@ type SyncMessage_Sent_StoryMessageRecipient struct { func (x *SyncMessage_Sent_StoryMessageRecipient) Reset() { *x = SyncMessage_Sent_StoryMessageRecipient{} - mi := &file_signalpb_SignalService_proto_msgTypes[80] + mi := &file_signalpb_SignalService_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8185,7 +8090,7 @@ func (x *SyncMessage_Sent_StoryMessageRecipient) String() string { func (*SyncMessage_Sent_StoryMessageRecipient) ProtoMessage() {} func (x *SyncMessage_Sent_StoryMessageRecipient) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[80] + mi := &file_signalpb_SignalService_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8239,7 +8144,7 @@ type SyncMessage_Blocked_BlockedE164 struct { func (x *SyncMessage_Blocked_BlockedE164) Reset() { *x = SyncMessage_Blocked_BlockedE164{} - mi := &file_signalpb_SignalService_proto_msgTypes[81] + mi := &file_signalpb_SignalService_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8251,7 +8156,7 @@ func (x *SyncMessage_Blocked_BlockedE164) String() string { func (*SyncMessage_Blocked_BlockedE164) ProtoMessage() {} func (x *SyncMessage_Blocked_BlockedE164) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[81] + mi := &file_signalpb_SignalService_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8291,7 +8196,7 @@ type SyncMessage_Blocked_BlockedAci struct { func (x *SyncMessage_Blocked_BlockedAci) Reset() { *x = SyncMessage_Blocked_BlockedAci{} - mi := &file_signalpb_SignalService_proto_msgTypes[82] + mi := &file_signalpb_SignalService_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8303,7 +8208,7 @@ func (x *SyncMessage_Blocked_BlockedAci) String() string { func (*SyncMessage_Blocked_BlockedAci) ProtoMessage() {} func (x *SyncMessage_Blocked_BlockedAci) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[82] + mi := &file_signalpb_SignalService_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8343,7 +8248,7 @@ type SyncMessage_Blocked_BlockedGroup struct { func (x *SyncMessage_Blocked_BlockedGroup) Reset() { *x = SyncMessage_Blocked_BlockedGroup{} - mi := &file_signalpb_SignalService_proto_msgTypes[83] + mi := &file_signalpb_SignalService_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8355,7 +8260,7 @@ func (x *SyncMessage_Blocked_BlockedGroup) String() string { func (*SyncMessage_Blocked_BlockedGroup) ProtoMessage() {} func (x *SyncMessage_Blocked_BlockedGroup) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[83] + mi := &file_signalpb_SignalService_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8401,7 +8306,7 @@ type SyncMessage_OutgoingPayment_MobileCoin struct { func (x *SyncMessage_OutgoingPayment_MobileCoin) Reset() { *x = SyncMessage_OutgoingPayment_MobileCoin{} - mi := &file_signalpb_SignalService_proto_msgTypes[84] + mi := &file_signalpb_SignalService_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8413,7 +8318,7 @@ func (x *SyncMessage_OutgoingPayment_MobileCoin) String() string { func (*SyncMessage_OutgoingPayment_MobileCoin) ProtoMessage() {} func (x *SyncMessage_OutgoingPayment_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[84] + mi := &file_signalpb_SignalService_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8495,7 +8400,7 @@ type SyncMessage_DeleteForMe_MessageDeletes struct { func (x *SyncMessage_DeleteForMe_MessageDeletes) Reset() { *x = SyncMessage_DeleteForMe_MessageDeletes{} - mi := &file_signalpb_SignalService_proto_msgTypes[85] + mi := &file_signalpb_SignalService_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8507,7 +8412,7 @@ func (x *SyncMessage_DeleteForMe_MessageDeletes) String() string { func (*SyncMessage_DeleteForMe_MessageDeletes) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_MessageDeletes) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[85] + mi := &file_signalpb_SignalService_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8553,7 +8458,7 @@ type SyncMessage_DeleteForMe_AttachmentDelete struct { func (x *SyncMessage_DeleteForMe_AttachmentDelete) Reset() { *x = SyncMessage_DeleteForMe_AttachmentDelete{} - mi := &file_signalpb_SignalService_proto_msgTypes[86] + mi := &file_signalpb_SignalService_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8565,7 +8470,7 @@ func (x *SyncMessage_DeleteForMe_AttachmentDelete) String() string { func (*SyncMessage_DeleteForMe_AttachmentDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_AttachmentDelete) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[86] + mi := &file_signalpb_SignalService_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8628,7 +8533,7 @@ type SyncMessage_DeleteForMe_ConversationDelete struct { func (x *SyncMessage_DeleteForMe_ConversationDelete) Reset() { *x = SyncMessage_DeleteForMe_ConversationDelete{} - mi := &file_signalpb_SignalService_proto_msgTypes[87] + mi := &file_signalpb_SignalService_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8640,7 +8545,7 @@ func (x *SyncMessage_DeleteForMe_ConversationDelete) String() string { func (*SyncMessage_DeleteForMe_ConversationDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_ConversationDelete) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[87] + mi := &file_signalpb_SignalService_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8693,7 +8598,7 @@ type SyncMessage_DeleteForMe_LocalOnlyConversationDelete struct { func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) Reset() { *x = SyncMessage_DeleteForMe_LocalOnlyConversationDelete{} - mi := &file_signalpb_SignalService_proto_msgTypes[88] + mi := &file_signalpb_SignalService_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8705,7 +8610,7 @@ func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) String() string { func (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[88] + mi := &file_signalpb_SignalService_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8741,7 +8646,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentData struct { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) Reset() { *x = SyncMessage_AttachmentBackfillResponse_AttachmentData{} - mi := &file_signalpb_SignalService_proto_msgTypes[89] + mi := &file_signalpb_SignalService_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8753,7 +8658,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) String() string func (*SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[89] + mi := &file_signalpb_SignalService_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8822,7 +8727,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentDataList struct { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) Reset() { *x = SyncMessage_AttachmentBackfillResponse_AttachmentDataList{} - mi := &file_signalpb_SignalService_proto_msgTypes[90] + mi := &file_signalpb_SignalService_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8834,7 +8739,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) String() str func (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[90] + mi := &file_signalpb_SignalService_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8874,7 +8779,7 @@ type ContactDetails_Avatar struct { func (x *ContactDetails_Avatar) Reset() { *x = ContactDetails_Avatar{} - mi := &file_signalpb_SignalService_proto_msgTypes[91] + mi := &file_signalpb_SignalService_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8886,7 +8791,7 @@ func (x *ContactDetails_Avatar) String() string { func (*ContactDetails_Avatar) ProtoMessage() {} func (x *ContactDetails_Avatar) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[91] + mi := &file_signalpb_SignalService_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8926,7 +8831,7 @@ type PaymentAddress_MobileCoin struct { func (x *PaymentAddress_MobileCoin) Reset() { *x = PaymentAddress_MobileCoin{} - mi := &file_signalpb_SignalService_proto_msgTypes[92] + mi := &file_signalpb_SignalService_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8938,7 +8843,7 @@ func (x *PaymentAddress_MobileCoin) String() string { func (*PaymentAddress_MobileCoin) ProtoMessage() {} func (x *PaymentAddress_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_SignalService_proto_msgTypes[92] + mi := &file_signalpb_SignalService_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9056,7 +8961,7 @@ const file_signalpb_SignalService_proto_rawDesc = "" + "\aurgency\x18\x02 \x01(\x0e2).signalservice.CallMessage.Opaque.UrgencyR\aurgency\"0\n" + "\aUrgency\x12\r\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\"\xc7/\n" + + "\x12HANDLE_IMMEDIATELY\x10\x01J\x04\b\x04\x10\x05J\x04\b\x06\x10\aJ\x04\b\b\x10\t\"\x80.\n" + "\vDataMessage\x12\x12\n" + "\x04body\x18\x01 \x01(\tR\x04body\x12B\n" + "\vattachments\x18\x02 \x03(\v2 .signalservice.AttachmentPointerR\vattachments\x127\n" + @@ -9144,18 +9049,15 @@ const file_signalpb_SignalService_proto_rawDesc = "" + "\x06NORMAL\x10\x00\x12\x0e\n" + "\n" + "GIFT_BADGE\x10\x01\x12\b\n" + - "\x04POLL\x10\x02J\x04\b\x02\x10\x03\x1a\x86\f\n" + + "\x04POLL\x10\x02J\x04\b\x02\x10\x03\x1a\xbf\n" + + "\n" + "\aContact\x12;\n" + "\x04name\x18\x01 \x01(\v2'.signalservice.DataMessage.Contact.NameR\x04name\x12@\n" + "\x06number\x18\x03 \x03(\v2(.signalservice.DataMessage.Contact.PhoneR\x06number\x12>\n" + "\x05email\x18\x04 \x03(\v2(.signalservice.DataMessage.Contact.EmailR\x05email\x12J\n" + "\aaddress\x18\x05 \x03(\v20.signalservice.DataMessage.Contact.PostalAddressR\aaddress\x12A\n" + "\x06avatar\x18\x06 \x01(\v2).signalservice.DataMessage.Contact.AvatarR\x06avatar\x12\"\n" + - "\forganization\x18\a \x01(\tR\forganization\x12\x1c\n" + - "\taciBinary\x18\b \x01(\fR\taciBinary\x12M\n" + - "\bnickname\x18\t \x01(\v21.signalservice.DataMessage.Contact.SignalNicknameR\bnickname\x12\x12\n" + - "\x04note\x18\n" + - " \x01(\tR\x04note\x1a\xb6\x01\n" + + "\forganization\x18\a \x01(\tR\forganization\x1a\xb6\x01\n" + "\x04Name\x12\x1c\n" + "\tgivenName\x18\x01 \x01(\tR\tgivenName\x12\x1e\n" + "\n" + @@ -9206,10 +9108,7 @@ const file_signalpb_SignalService_proto_rawDesc = "" + "\x06CUSTOM\x10\x03\x1a`\n" + "\x06Avatar\x128\n" + "\x06avatar\x18\x01 \x01(\v2 .signalservice.AttachmentPointerR\x06avatar\x12\x1c\n" + - "\tisProfile\x18\x02 \x01(\bR\tisProfile\x1a>\n" + - "\x0eSignalNickname\x12\x14\n" + - "\x05given\x18\x01 \x01(\tR\x05given\x12\x16\n" + - "\x06family\x18\x02 \x01(\tR\x06familyJ\x04\b\x02\x10\x03\x1a\xa5\x01\n" + + "\tisProfile\x18\x02 \x01(\bR\tisProfile\x1a\xa5\x01\n" + "\aSticker\x12\x16\n" + "\x06packId\x18\x01 \x01(\fR\x06packId\x12\x18\n" + "\apackKey\x18\x02 \x01(\fR\apackKey\x12\x1c\n" + @@ -9599,7 +9498,7 @@ const file_signalpb_SignalService_proto_rawDesc = "" + "\x11MESSAGE_NOT_FOUND\x10\x00B\x06\n" + "\x04data\x1a\x10\n" + "\x0eUsernameChangeB\t\n" + - "\acontentJ\x04\b\x03\x10\x04J\x04\b\x11\x10\x12\"\xc1\x05\n" + + "\acontentJ\x04\b\x03\x10\x04J\x04\b\x11\x10\x12\"\xe7\x04\n" + "\x11AttachmentPointer\x12\x16\n" + "\x05cdnId\x18\x01 \x01(\x06H\x00R\x05cdnId\x12\x18\n" + "\x06cdnKey\x18\x0f \x01(\tH\x00R\x06cdnKey\x12\x1e\n" + @@ -9621,9 +9520,7 @@ const file_signalpb_SignalService_proto_rawDesc = "" + "\acaption\x18\v \x01(\tR\acaption\x12\x1a\n" + "\bblurHash\x18\f \x01(\tR\bblurHash\x12(\n" + "\x0fuploadTimestamp\x18\r \x01(\x04R\x0fuploadTimestamp\x12\x1c\n" + - "\tcdnNumber\x18\x0e \x01(\rR\tcdnNumber\x12$\n" + - "\raudioWaveform\x18\x15 \x01(\fR\raudioWaveform\x122\n" + - "\x14audioDurationSeconds\x18\x16 \x01(\x02R\x14audioDurationSeconds\"9\n" + + "\tcdnNumber\x18\x0e \x01(\rR\tcdnNumber\"9\n" + "\x05Flags\x12\x11\n" + "\rVOICE_MESSAGE\x10\x01\x12\x0e\n" + "\n" + @@ -9717,7 +9614,7 @@ func file_signalpb_SignalService_proto_rawDescGZIP() []byte { } var file_signalpb_SignalService_proto_enumTypes = make([]protoimpl.EnumInfo, 28) -var file_signalpb_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 93) +var file_signalpb_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 92) var file_signalpb_SignalService_proto_goTypes = []any{ (Envelope_Type)(0), // 0: signalservice.Envelope.Type (CallMessage_Offer_Type)(0), // 1: signalservice.CallMessage.Offer.Type @@ -9801,45 +9698,44 @@ var file_signalpb_SignalService_proto_goTypes = []any{ (*DataMessage_Contact_Email)(nil), // 79: signalservice.DataMessage.Contact.Email (*DataMessage_Contact_PostalAddress)(nil), // 80: signalservice.DataMessage.Contact.PostalAddress (*DataMessage_Contact_Avatar)(nil), // 81: signalservice.DataMessage.Contact.Avatar - (*DataMessage_Contact_SignalNickname)(nil), // 82: signalservice.DataMessage.Contact.SignalNickname - (*TextAttachment_Gradient)(nil), // 83: signalservice.TextAttachment.Gradient - (*SyncMessage_Sent)(nil), // 84: signalservice.SyncMessage.Sent - (*SyncMessage_Contacts)(nil), // 85: signalservice.SyncMessage.Contacts - (*SyncMessage_Blocked)(nil), // 86: signalservice.SyncMessage.Blocked - (*SyncMessage_Request)(nil), // 87: signalservice.SyncMessage.Request - (*SyncMessage_Read)(nil), // 88: signalservice.SyncMessage.Read - (*SyncMessage_Viewed)(nil), // 89: signalservice.SyncMessage.Viewed - (*SyncMessage_Configuration)(nil), // 90: signalservice.SyncMessage.Configuration - (*SyncMessage_StickerPackOperation)(nil), // 91: signalservice.SyncMessage.StickerPackOperation - (*SyncMessage_ViewOnceOpen)(nil), // 92: signalservice.SyncMessage.ViewOnceOpen - (*SyncMessage_FetchLatest)(nil), // 93: signalservice.SyncMessage.FetchLatest - (*SyncMessage_Keys)(nil), // 94: signalservice.SyncMessage.Keys - (*SyncMessage_PniIdentity)(nil), // 95: signalservice.SyncMessage.PniIdentity - (*SyncMessage_MessageRequestResponse)(nil), // 96: signalservice.SyncMessage.MessageRequestResponse - (*SyncMessage_OutgoingPayment)(nil), // 97: signalservice.SyncMessage.OutgoingPayment - (*SyncMessage_PniChangeNumber)(nil), // 98: signalservice.SyncMessage.PniChangeNumber - (*SyncMessage_CallEvent)(nil), // 99: signalservice.SyncMessage.CallEvent - (*SyncMessage_CallLinkUpdate)(nil), // 100: signalservice.SyncMessage.CallLinkUpdate - (*SyncMessage_CallLogEvent)(nil), // 101: signalservice.SyncMessage.CallLogEvent - (*SyncMessage_DeleteForMe)(nil), // 102: signalservice.SyncMessage.DeleteForMe - (*SyncMessage_DeviceNameChange)(nil), // 103: signalservice.SyncMessage.DeviceNameChange - (*SyncMessage_AttachmentBackfillRequest)(nil), // 104: signalservice.SyncMessage.AttachmentBackfillRequest - (*SyncMessage_AttachmentBackfillResponse)(nil), // 105: signalservice.SyncMessage.AttachmentBackfillResponse - (*SyncMessage_UsernameChange)(nil), // 106: signalservice.SyncMessage.UsernameChange - (*SyncMessage_Sent_UnidentifiedDeliveryStatus)(nil), // 107: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus - (*SyncMessage_Sent_StoryMessageRecipient)(nil), // 108: signalservice.SyncMessage.Sent.StoryMessageRecipient - (*SyncMessage_Blocked_BlockedE164)(nil), // 109: signalservice.SyncMessage.Blocked.BlockedE164 - (*SyncMessage_Blocked_BlockedAci)(nil), // 110: signalservice.SyncMessage.Blocked.BlockedAci - (*SyncMessage_Blocked_BlockedGroup)(nil), // 111: signalservice.SyncMessage.Blocked.BlockedGroup - (*SyncMessage_OutgoingPayment_MobileCoin)(nil), // 112: signalservice.SyncMessage.OutgoingPayment.MobileCoin - (*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 113: signalservice.SyncMessage.DeleteForMe.MessageDeletes - (*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 114: signalservice.SyncMessage.DeleteForMe.AttachmentDelete - (*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 115: signalservice.SyncMessage.DeleteForMe.ConversationDelete - (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 116: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete - (*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 117: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 118: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList - (*ContactDetails_Avatar)(nil), // 119: signalservice.ContactDetails.Avatar - (*PaymentAddress_MobileCoin)(nil), // 120: signalservice.PaymentAddress.MobileCoin + (*TextAttachment_Gradient)(nil), // 82: signalservice.TextAttachment.Gradient + (*SyncMessage_Sent)(nil), // 83: signalservice.SyncMessage.Sent + (*SyncMessage_Contacts)(nil), // 84: signalservice.SyncMessage.Contacts + (*SyncMessage_Blocked)(nil), // 85: signalservice.SyncMessage.Blocked + (*SyncMessage_Request)(nil), // 86: signalservice.SyncMessage.Request + (*SyncMessage_Read)(nil), // 87: signalservice.SyncMessage.Read + (*SyncMessage_Viewed)(nil), // 88: signalservice.SyncMessage.Viewed + (*SyncMessage_Configuration)(nil), // 89: signalservice.SyncMessage.Configuration + (*SyncMessage_StickerPackOperation)(nil), // 90: signalservice.SyncMessage.StickerPackOperation + (*SyncMessage_ViewOnceOpen)(nil), // 91: signalservice.SyncMessage.ViewOnceOpen + (*SyncMessage_FetchLatest)(nil), // 92: signalservice.SyncMessage.FetchLatest + (*SyncMessage_Keys)(nil), // 93: signalservice.SyncMessage.Keys + (*SyncMessage_PniIdentity)(nil), // 94: signalservice.SyncMessage.PniIdentity + (*SyncMessage_MessageRequestResponse)(nil), // 95: signalservice.SyncMessage.MessageRequestResponse + (*SyncMessage_OutgoingPayment)(nil), // 96: signalservice.SyncMessage.OutgoingPayment + (*SyncMessage_PniChangeNumber)(nil), // 97: signalservice.SyncMessage.PniChangeNumber + (*SyncMessage_CallEvent)(nil), // 98: signalservice.SyncMessage.CallEvent + (*SyncMessage_CallLinkUpdate)(nil), // 99: signalservice.SyncMessage.CallLinkUpdate + (*SyncMessage_CallLogEvent)(nil), // 100: signalservice.SyncMessage.CallLogEvent + (*SyncMessage_DeleteForMe)(nil), // 101: signalservice.SyncMessage.DeleteForMe + (*SyncMessage_DeviceNameChange)(nil), // 102: signalservice.SyncMessage.DeviceNameChange + (*SyncMessage_AttachmentBackfillRequest)(nil), // 103: signalservice.SyncMessage.AttachmentBackfillRequest + (*SyncMessage_AttachmentBackfillResponse)(nil), // 104: signalservice.SyncMessage.AttachmentBackfillResponse + (*SyncMessage_UsernameChange)(nil), // 105: signalservice.SyncMessage.UsernameChange + (*SyncMessage_Sent_UnidentifiedDeliveryStatus)(nil), // 106: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus + (*SyncMessage_Sent_StoryMessageRecipient)(nil), // 107: signalservice.SyncMessage.Sent.StoryMessageRecipient + (*SyncMessage_Blocked_BlockedE164)(nil), // 108: signalservice.SyncMessage.Blocked.BlockedE164 + (*SyncMessage_Blocked_BlockedAci)(nil), // 109: signalservice.SyncMessage.Blocked.BlockedAci + (*SyncMessage_Blocked_BlockedGroup)(nil), // 110: signalservice.SyncMessage.Blocked.BlockedGroup + (*SyncMessage_OutgoingPayment_MobileCoin)(nil), // 111: signalservice.SyncMessage.OutgoingPayment.MobileCoin + (*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 112: signalservice.SyncMessage.DeleteForMe.MessageDeletes + (*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 113: signalservice.SyncMessage.DeleteForMe.AttachmentDelete + (*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 114: signalservice.SyncMessage.DeleteForMe.ConversationDelete + (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 115: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete + (*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 116: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 117: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList + (*ContactDetails_Avatar)(nil), // 118: signalservice.ContactDetails.Avatar + (*PaymentAddress_MobileCoin)(nil), // 119: signalservice.PaymentAddress.MobileCoin } var file_signalpb_SignalService_proto_depIdxs = []int32{ 0, // 0: signalservice.Envelope.type:type_name -> signalservice.Envelope.Type @@ -9886,33 +9782,33 @@ var file_signalpb_SignalService_proto_depIdxs = []int32{ 40, // 41: signalservice.Preview.image:type_name -> signalservice.AttachmentPointer 13, // 42: signalservice.TextAttachment.textStyle:type_name -> signalservice.TextAttachment.Style 36, // 43: signalservice.TextAttachment.preview:type_name -> signalservice.Preview - 83, // 44: signalservice.TextAttachment.gradient:type_name -> signalservice.TextAttachment.Gradient + 82, // 44: signalservice.TextAttachment.gradient:type_name -> signalservice.TextAttachment.Gradient 14, // 45: signalservice.Verified.state:type_name -> signalservice.Verified.State - 84, // 46: signalservice.SyncMessage.sent:type_name -> signalservice.SyncMessage.Sent - 85, // 47: signalservice.SyncMessage.contacts:type_name -> signalservice.SyncMessage.Contacts - 87, // 48: signalservice.SyncMessage.request:type_name -> signalservice.SyncMessage.Request - 86, // 49: signalservice.SyncMessage.blocked:type_name -> signalservice.SyncMessage.Blocked + 83, // 46: signalservice.SyncMessage.sent:type_name -> signalservice.SyncMessage.Sent + 84, // 47: signalservice.SyncMessage.contacts:type_name -> signalservice.SyncMessage.Contacts + 86, // 48: signalservice.SyncMessage.request:type_name -> signalservice.SyncMessage.Request + 85, // 49: signalservice.SyncMessage.blocked:type_name -> signalservice.SyncMessage.Blocked 38, // 50: signalservice.SyncMessage.verified:type_name -> signalservice.Verified - 90, // 51: signalservice.SyncMessage.configuration:type_name -> signalservice.SyncMessage.Configuration - 92, // 52: signalservice.SyncMessage.viewOnceOpen:type_name -> signalservice.SyncMessage.ViewOnceOpen - 93, // 53: signalservice.SyncMessage.fetchLatest:type_name -> signalservice.SyncMessage.FetchLatest - 94, // 54: signalservice.SyncMessage.keys:type_name -> signalservice.SyncMessage.Keys - 96, // 55: signalservice.SyncMessage.messageRequestResponse:type_name -> signalservice.SyncMessage.MessageRequestResponse - 97, // 56: signalservice.SyncMessage.outgoingPayment:type_name -> signalservice.SyncMessage.OutgoingPayment - 98, // 57: signalservice.SyncMessage.pniChangeNumber:type_name -> signalservice.SyncMessage.PniChangeNumber - 99, // 58: signalservice.SyncMessage.callEvent:type_name -> signalservice.SyncMessage.CallEvent - 100, // 59: signalservice.SyncMessage.callLinkUpdate:type_name -> signalservice.SyncMessage.CallLinkUpdate - 101, // 60: signalservice.SyncMessage.callLogEvent:type_name -> signalservice.SyncMessage.CallLogEvent - 102, // 61: signalservice.SyncMessage.deleteForMe:type_name -> signalservice.SyncMessage.DeleteForMe - 103, // 62: signalservice.SyncMessage.deviceNameChange:type_name -> signalservice.SyncMessage.DeviceNameChange - 104, // 63: signalservice.SyncMessage.attachmentBackfillRequest:type_name -> signalservice.SyncMessage.AttachmentBackfillRequest - 105, // 64: signalservice.SyncMessage.attachmentBackfillResponse:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse - 106, // 65: signalservice.SyncMessage.usernameChange:type_name -> signalservice.SyncMessage.UsernameChange - 88, // 66: signalservice.SyncMessage.read:type_name -> signalservice.SyncMessage.Read - 91, // 67: signalservice.SyncMessage.stickerPackOperation:type_name -> signalservice.SyncMessage.StickerPackOperation - 89, // 68: signalservice.SyncMessage.viewed:type_name -> signalservice.SyncMessage.Viewed - 119, // 69: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar - 120, // 70: signalservice.PaymentAddress.mobileCoin:type_name -> signalservice.PaymentAddress.MobileCoin + 89, // 51: signalservice.SyncMessage.configuration:type_name -> signalservice.SyncMessage.Configuration + 91, // 52: signalservice.SyncMessage.viewOnceOpen:type_name -> signalservice.SyncMessage.ViewOnceOpen + 92, // 53: signalservice.SyncMessage.fetchLatest:type_name -> signalservice.SyncMessage.FetchLatest + 93, // 54: signalservice.SyncMessage.keys:type_name -> signalservice.SyncMessage.Keys + 95, // 55: signalservice.SyncMessage.messageRequestResponse:type_name -> signalservice.SyncMessage.MessageRequestResponse + 96, // 56: signalservice.SyncMessage.outgoingPayment:type_name -> signalservice.SyncMessage.OutgoingPayment + 97, // 57: signalservice.SyncMessage.pniChangeNumber:type_name -> signalservice.SyncMessage.PniChangeNumber + 98, // 58: signalservice.SyncMessage.callEvent:type_name -> signalservice.SyncMessage.CallEvent + 99, // 59: signalservice.SyncMessage.callLinkUpdate:type_name -> signalservice.SyncMessage.CallLinkUpdate + 100, // 60: signalservice.SyncMessage.callLogEvent:type_name -> signalservice.SyncMessage.CallLogEvent + 101, // 61: signalservice.SyncMessage.deleteForMe:type_name -> signalservice.SyncMessage.DeleteForMe + 102, // 62: signalservice.SyncMessage.deviceNameChange:type_name -> signalservice.SyncMessage.DeviceNameChange + 103, // 63: signalservice.SyncMessage.attachmentBackfillRequest:type_name -> signalservice.SyncMessage.AttachmentBackfillRequest + 104, // 64: signalservice.SyncMessage.attachmentBackfillResponse:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse + 105, // 65: signalservice.SyncMessage.usernameChange:type_name -> signalservice.SyncMessage.UsernameChange + 87, // 66: signalservice.SyncMessage.read:type_name -> signalservice.SyncMessage.Read + 90, // 67: signalservice.SyncMessage.stickerPackOperation:type_name -> signalservice.SyncMessage.StickerPackOperation + 88, // 68: signalservice.SyncMessage.viewed:type_name -> signalservice.SyncMessage.Viewed + 118, // 69: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar + 119, // 70: signalservice.PaymentAddress.mobileCoin:type_name -> signalservice.PaymentAddress.MobileCoin 31, // 71: signalservice.EditMessage.dataMessage:type_name -> signalservice.DataMessage 27, // 72: signalservice.BodyRange.style:type_name -> signalservice.BodyRange.Style 1, // 73: signalservice.CallMessage.Offer.type:type_name -> signalservice.CallMessage.Offer.Type @@ -9928,62 +9824,61 @@ var file_signalpb_SignalService_proto_depIdxs = []int32{ 79, // 83: signalservice.DataMessage.Contact.email:type_name -> signalservice.DataMessage.Contact.Email 80, // 84: signalservice.DataMessage.Contact.address:type_name -> signalservice.DataMessage.Contact.PostalAddress 81, // 85: signalservice.DataMessage.Contact.avatar:type_name -> signalservice.DataMessage.Contact.Avatar - 82, // 86: signalservice.DataMessage.Contact.nickname:type_name -> signalservice.DataMessage.Contact.SignalNickname - 40, // 87: signalservice.DataMessage.Sticker.data:type_name -> signalservice.AttachmentPointer - 74, // 88: signalservice.DataMessage.Payment.Amount.mobileCoin:type_name -> signalservice.DataMessage.Payment.Amount.MobileCoin - 75, // 89: signalservice.DataMessage.Payment.Notification.mobileCoin:type_name -> signalservice.DataMessage.Payment.Notification.MobileCoin - 6, // 90: signalservice.DataMessage.Payment.Activation.type:type_name -> signalservice.DataMessage.Payment.Activation.Type - 40, // 91: signalservice.DataMessage.Quote.QuotedAttachment.thumbnail:type_name -> signalservice.AttachmentPointer - 8, // 92: signalservice.DataMessage.Contact.Phone.type:type_name -> signalservice.DataMessage.Contact.Phone.Type - 9, // 93: signalservice.DataMessage.Contact.Email.type:type_name -> signalservice.DataMessage.Contact.Email.Type - 10, // 94: signalservice.DataMessage.Contact.PostalAddress.type:type_name -> signalservice.DataMessage.Contact.PostalAddress.Type - 40, // 95: signalservice.DataMessage.Contact.Avatar.avatar:type_name -> signalservice.AttachmentPointer - 31, // 96: signalservice.SyncMessage.Sent.message:type_name -> signalservice.DataMessage - 107, // 97: signalservice.SyncMessage.Sent.unidentifiedStatus:type_name -> signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus - 35, // 98: signalservice.SyncMessage.Sent.storyMessage:type_name -> signalservice.StoryMessage - 108, // 99: signalservice.SyncMessage.Sent.storyMessageRecipients:type_name -> signalservice.SyncMessage.Sent.StoryMessageRecipient - 46, // 100: signalservice.SyncMessage.Sent.editMessage:type_name -> signalservice.EditMessage - 40, // 101: signalservice.SyncMessage.Contacts.blob:type_name -> signalservice.AttachmentPointer - 109, // 102: signalservice.SyncMessage.Blocked.blockedE164s:type_name -> signalservice.SyncMessage.Blocked.BlockedE164 - 110, // 103: signalservice.SyncMessage.Blocked.blockedAcis:type_name -> signalservice.SyncMessage.Blocked.BlockedAci - 111, // 104: signalservice.SyncMessage.Blocked.blockedGroups:type_name -> signalservice.SyncMessage.Blocked.BlockedGroup - 15, // 105: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type - 16, // 106: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type - 17, // 107: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type - 18, // 108: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type - 112, // 109: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin - 19, // 110: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type - 20, // 111: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction - 21, // 112: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event - 22, // 113: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type - 23, // 114: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type - 113, // 115: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes - 115, // 116: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete - 116, // 117: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete - 114, // 118: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete - 48, // 119: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 120: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier - 48, // 121: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 122: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier - 118, // 123: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList - 24, // 124: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error - 49, // 125: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 126: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage - 49, // 127: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 128: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 129: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 130: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage - 48, // 131: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage - 49, // 132: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier - 40, // 133: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer - 25, // 134: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status - 117, // 135: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - 117, // 136: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - 137, // [137:137] is the sub-list for method output_type - 137, // [137:137] is the sub-list for method input_type - 137, // [137:137] is the sub-list for extension type_name - 137, // [137:137] is the sub-list for extension extendee - 0, // [0:137] is the sub-list for field type_name + 40, // 86: signalservice.DataMessage.Sticker.data:type_name -> signalservice.AttachmentPointer + 74, // 87: signalservice.DataMessage.Payment.Amount.mobileCoin:type_name -> signalservice.DataMessage.Payment.Amount.MobileCoin + 75, // 88: signalservice.DataMessage.Payment.Notification.mobileCoin:type_name -> signalservice.DataMessage.Payment.Notification.MobileCoin + 6, // 89: signalservice.DataMessage.Payment.Activation.type:type_name -> signalservice.DataMessage.Payment.Activation.Type + 40, // 90: signalservice.DataMessage.Quote.QuotedAttachment.thumbnail:type_name -> signalservice.AttachmentPointer + 8, // 91: signalservice.DataMessage.Contact.Phone.type:type_name -> signalservice.DataMessage.Contact.Phone.Type + 9, // 92: signalservice.DataMessage.Contact.Email.type:type_name -> signalservice.DataMessage.Contact.Email.Type + 10, // 93: signalservice.DataMessage.Contact.PostalAddress.type:type_name -> signalservice.DataMessage.Contact.PostalAddress.Type + 40, // 94: signalservice.DataMessage.Contact.Avatar.avatar:type_name -> signalservice.AttachmentPointer + 31, // 95: signalservice.SyncMessage.Sent.message:type_name -> signalservice.DataMessage + 106, // 96: signalservice.SyncMessage.Sent.unidentifiedStatus:type_name -> signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus + 35, // 97: signalservice.SyncMessage.Sent.storyMessage:type_name -> signalservice.StoryMessage + 107, // 98: signalservice.SyncMessage.Sent.storyMessageRecipients:type_name -> signalservice.SyncMessage.Sent.StoryMessageRecipient + 46, // 99: signalservice.SyncMessage.Sent.editMessage:type_name -> signalservice.EditMessage + 40, // 100: signalservice.SyncMessage.Contacts.blob:type_name -> signalservice.AttachmentPointer + 108, // 101: signalservice.SyncMessage.Blocked.blockedE164s:type_name -> signalservice.SyncMessage.Blocked.BlockedE164 + 109, // 102: signalservice.SyncMessage.Blocked.blockedAcis:type_name -> signalservice.SyncMessage.Blocked.BlockedAci + 110, // 103: signalservice.SyncMessage.Blocked.blockedGroups:type_name -> signalservice.SyncMessage.Blocked.BlockedGroup + 15, // 104: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type + 16, // 105: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type + 17, // 106: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type + 18, // 107: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type + 111, // 108: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin + 19, // 109: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type + 20, // 110: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction + 21, // 111: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event + 22, // 112: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type + 23, // 113: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type + 112, // 114: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes + 114, // 115: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete + 115, // 116: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete + 113, // 117: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete + 48, // 118: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 119: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier + 48, // 120: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 121: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier + 117, // 122: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList + 24, // 123: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error + 49, // 124: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 125: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage + 49, // 126: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 127: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 128: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 129: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage + 48, // 130: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage + 49, // 131: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier + 40, // 132: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer + 25, // 133: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status + 116, // 134: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + 116, // 135: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + 136, // [136:136] is the sub-list for method output_type + 136, // [136:136] is the sub-list for method input_type + 136, // [136:136] is the sub-list for extension type_name + 136, // [136:136] is the sub-list for extension extendee + 0, // [0:136] is the sub-list for field type_name } func init() { file_signalpb_SignalService_proto_init() } @@ -10069,14 +9964,14 @@ func file_signalpb_SignalService_proto_init() { file_signalpb_SignalService_proto_msgTypes[44].OneofWrappers = []any{ (*DataMessage_Payment_Notification_MobileCoin_)(nil), } - file_signalpb_SignalService_proto_msgTypes[69].OneofWrappers = []any{ + file_signalpb_SignalService_proto_msgTypes[68].OneofWrappers = []any{ (*SyncMessage_OutgoingPayment_MobileCoin_)(nil), } - file_signalpb_SignalService_proto_msgTypes[77].OneofWrappers = []any{ + file_signalpb_SignalService_proto_msgTypes[76].OneofWrappers = []any{ (*SyncMessage_AttachmentBackfillResponse_Attachments)(nil), (*SyncMessage_AttachmentBackfillResponse_Error_)(nil), } - file_signalpb_SignalService_proto_msgTypes[89].OneofWrappers = []any{ + file_signalpb_SignalService_proto_msgTypes[88].OneofWrappers = []any{ (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Attachment)(nil), (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Status_)(nil), } @@ -10086,7 +9981,7 @@ func file_signalpb_SignalService_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_signalpb_SignalService_proto_rawDesc), len(file_signalpb_SignalService_proto_rawDesc)), NumEnums: 28, - NumMessages: 93, + NumMessages: 92, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/signalpb/SignalService.proto b/pkg/signalmeow/protobuf/signalpb/SignalService.proto index 21a3fe5..562f47f 100644 --- a/pkg/signalmeow/protobuf/signalpb/SignalService.proto +++ b/pkg/signalmeow/protobuf/signalpb/SignalService.proto @@ -319,22 +319,12 @@ message DataMessage { optional bool isProfile = 2; } - message SignalNickname { - optional string given = 1; - optional string family = 2; - } - optional Name name = 1; - reserved 2; repeated Phone number = 3; repeated Email email = 4; repeated PostalAddress address = 5; optional Avatar avatar = 6; optional string organization = 7; - optional bytes aciBinary = 8; // 16-byte UUID - optional SignalNickname nickname = 9; - optional string note = 10; - // Next ID: 11 } message Sticker { @@ -950,12 +940,7 @@ message AttachmentPointer { optional string blurHash = 12; optional uint64 uploadTimestamp = 13; optional uint32 cdnNumber = 14; - // Waveform for audio attachments. Each byte represents a "bar" in the - // waveform, with 0 as silence 255 as loudest. At most 100 bytes/bars. - optional bytes audioWaveform = 21; - // Duration of an audio attachment, in seconds. - optional float audioDurationSeconds = 22; - // Next ID: 23 + // Next ID: 21 } message GroupContextV2 { diff --git a/pkg/signalmeow/protobuf/signalpb/StorageService.pb.go b/pkg/signalmeow/protobuf/signalpb/StorageService.pb.go index 131bd84..6c8e24b 100644 --- a/pkg/signalmeow/protobuf/signalpb/StorageService.pb.go +++ b/pkg/signalmeow/protobuf/signalpb/StorageService.pb.go @@ -172,23 +172,21 @@ const ( ManifestRecord_Identifier_CALL_LINK ManifestRecord_Identifier_Type = 7 ManifestRecord_Identifier_CHAT_FOLDER ManifestRecord_Identifier_Type = 8 ManifestRecord_Identifier_NOTIFICATION_PROFILE ManifestRecord_Identifier_Type = 9 - ManifestRecord_Identifier_FAVORITE_STICKER ManifestRecord_Identifier_Type = 11 ) // Enum value maps for ManifestRecord_Identifier_Type. var ( ManifestRecord_Identifier_Type_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CONTACT", - 2: "GROUPV1", - 3: "GROUPV2", - 4: "ACCOUNT", - 5: "STORY_DISTRIBUTION_LIST", - 6: "STICKER_PACK", - 7: "CALL_LINK", - 8: "CHAT_FOLDER", - 9: "NOTIFICATION_PROFILE", - 11: "FAVORITE_STICKER", + 0: "UNKNOWN", + 1: "CONTACT", + 2: "GROUPV1", + 3: "GROUPV2", + 4: "ACCOUNT", + 5: "STORY_DISTRIBUTION_LIST", + 6: "STICKER_PACK", + 7: "CALL_LINK", + 8: "CHAT_FOLDER", + 9: "NOTIFICATION_PROFILE", } ManifestRecord_Identifier_Type_value = map[string]int32{ "UNKNOWN": 0, @@ -201,7 +199,6 @@ var ( "CALL_LINK": 7, "CHAT_FOLDER": 8, "NOTIFICATION_PROFILE": 9, - "FAVORITE_STICKER": 11, } ) @@ -542,7 +539,7 @@ func (x ChatFolderRecord_FolderType) Number() protoreflect.EnumNumber { // Deprecated: Use ChatFolderRecord_FolderType.Descriptor instead. func (ChatFolderRecord_FolderType) EnumDescriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{17, 0} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{16, 0} } type NotificationProfile_DayOfWeek int32 @@ -606,7 +603,7 @@ func (x NotificationProfile_DayOfWeek) Number() protoreflect.EnumNumber { // Deprecated: Use NotificationProfile_DayOfWeek.Descriptor instead. func (NotificationProfile_DayOfWeek) EnumDescriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{18, 0} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{17, 0} } type StorageManifest struct { @@ -950,7 +947,6 @@ type StorageRecord struct { // *StorageRecord_CallLink // *StorageRecord_ChatFolder // *StorageRecord_NotificationProfile - // *StorageRecord_FavoriteSticker Record isStorageRecord_Record `protobuf_oneof:"record"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -1074,15 +1070,6 @@ func (x *StorageRecord) GetNotificationProfile() *NotificationProfile { return nil } -func (x *StorageRecord) GetFavoriteSticker() *FavoriteStickerRecord { - if x != nil { - if x, ok := x.Record.(*StorageRecord_FavoriteSticker); ok { - return x.FavoriteSticker - } - } - return nil -} - type isStorageRecord_Record interface { isStorageRecord_Record() } @@ -1123,10 +1110,6 @@ type StorageRecord_NotificationProfile struct { NotificationProfile *NotificationProfile `protobuf:"bytes,9,opt,name=notificationProfile,proto3,oneof"` } -type StorageRecord_FavoriteSticker struct { - FavoriteSticker *FavoriteStickerRecord `protobuf:"bytes,11,opt,name=favoriteSticker,proto3,oneof"` -} - func (*StorageRecord_Contact) isStorageRecord_Record() {} func (*StorageRecord_GroupV1) isStorageRecord_Record() {} @@ -1145,8 +1128,6 @@ func (*StorageRecord_ChatFolder) isStorageRecord_Record() {} func (*StorageRecord_NotificationProfile) isStorageRecord_Record() {} -func (*StorageRecord_FavoriteSticker) isStorageRecord_Record() {} - type ContactRecord struct { state protoimpl.MessageState `protogen:"open.v1"` Aci string `protobuf:"bytes,1,opt,name=aci,proto3" json:"aci,omitempty"` @@ -1178,7 +1159,6 @@ type ContactRecord struct { BlockedAtTimestamp uint64 `protobuf:"varint,27,opt,name=blockedAtTimestamp,proto3" json:"blockedAtTimestamp,omitempty"` // 0 means the blocked time is unknown NotifyForCallsIfMuted OptionalBool `protobuf:"varint,28,opt,name=notifyForCallsIfMuted,proto3,enum=signalservice.OptionalBool" json:"notifyForCallsIfMuted,omitempty"` // If unset, use the default settings ShowUnreadReminders OptionalBool `protobuf:"varint,29,opt,name=showUnreadReminders,proto3,enum=signalservice.OptionalBool" json:"showUnreadReminders,omitempty"` // If unset, use the default settings - SharedName *ContactRecord_Name `protobuf:"bytes,30,opt,name=sharedName,proto3" json:"sharedName,omitempty"` // Name shared from a third party unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1416,13 +1396,6 @@ func (x *ContactRecord) GetShowUnreadReminders() OptionalBool { return OptionalBool_UNSET } -func (x *ContactRecord) GetSharedName() *ContactRecord_Name { - if x != nil { - return x.SharedName - } - return nil -} - type GroupV1Record struct { state protoimpl.MessageState `protogen:"open.v1"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -2341,89 +2314,6 @@ func (x *StickerPackRecord) GetDeletedAtTimestamp() uint64 { return 0 } -type FavoriteStickerRecord struct { - state protoimpl.MessageState `protogen:"open.v1"` - PackId []byte `protobuf:"bytes,1,opt,name=packId,proto3" json:"packId,omitempty"` // 16 bytes - PackKey []byte `protobuf:"bytes,2,opt,name=packKey,proto3" json:"packKey,omitempty"` // 32 bytes, used to derive the AES-256 key - // aesKey = HKDF( - // - // input = packKey, - // salt = 32 zero bytes, - // info = "Sticker Pack" - // - // ) - StickerId uint32 `protobuf:"varint,3,opt,name=stickerId,proto3" json:"stickerId,omitempty"` - FavoritedAtTimestamp uint64 `protobuf:"varint,4,opt,name=favoritedAtTimestamp,proto3" json:"favoritedAtTimestamp,omitempty"` // Sorted by newest timestamp first. Can be mutated if sticker is reordered via 'Move to top' - DeletedAtTimestamp uint64 `protobuf:"varint,5,opt,name=deletedAtTimestamp,proto3" json:"deletedAtTimestamp,omitempty"` // Timestamp in milliseconds. When present and - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FavoriteStickerRecord) Reset() { - *x = FavoriteStickerRecord{} - mi := &file_signalpb_StorageService_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FavoriteStickerRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FavoriteStickerRecord) ProtoMessage() {} - -func (x *FavoriteStickerRecord) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[14] - 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 FavoriteStickerRecord.ProtoReflect.Descriptor instead. -func (*FavoriteStickerRecord) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{14} -} - -func (x *FavoriteStickerRecord) GetPackId() []byte { - if x != nil { - return x.PackId - } - return nil -} - -func (x *FavoriteStickerRecord) GetPackKey() []byte { - if x != nil { - return x.PackKey - } - return nil -} - -func (x *FavoriteStickerRecord) GetStickerId() uint32 { - if x != nil { - return x.StickerId - } - return 0 -} - -func (x *FavoriteStickerRecord) GetFavoritedAtTimestamp() uint64 { - if x != nil { - return x.FavoritedAtTimestamp - } - return 0 -} - -func (x *FavoriteStickerRecord) GetDeletedAtTimestamp() uint64 { - if x != nil { - return x.DeletedAtTimestamp - } - return 0 -} - type CallLinkRecord struct { state protoimpl.MessageState `protogen:"open.v1"` RootKey []byte `protobuf:"bytes,1,opt,name=rootKey,proto3" json:"rootKey,omitempty"` @@ -2435,7 +2325,7 @@ type CallLinkRecord struct { func (x *CallLinkRecord) Reset() { *x = CallLinkRecord{} - mi := &file_signalpb_StorageService_proto_msgTypes[15] + mi := &file_signalpb_StorageService_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2447,7 +2337,7 @@ func (x *CallLinkRecord) String() string { func (*CallLinkRecord) ProtoMessage() {} func (x *CallLinkRecord) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[15] + mi := &file_signalpb_StorageService_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2460,7 +2350,7 @@ func (x *CallLinkRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use CallLinkRecord.ProtoReflect.Descriptor instead. func (*CallLinkRecord) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{15} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{14} } func (x *CallLinkRecord) GetRootKey() []byte { @@ -2498,7 +2388,7 @@ type Recipient struct { func (x *Recipient) Reset() { *x = Recipient{} - mi := &file_signalpb_StorageService_proto_msgTypes[16] + mi := &file_signalpb_StorageService_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2510,7 +2400,7 @@ func (x *Recipient) String() string { func (*Recipient) ProtoMessage() {} func (x *Recipient) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[16] + mi := &file_signalpb_StorageService_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2523,7 +2413,7 @@ func (x *Recipient) ProtoReflect() protoreflect.Message { // Deprecated: Use Recipient.ProtoReflect.Descriptor instead. func (*Recipient) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{16} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{15} } func (x *Recipient) GetIdentifier() isRecipient_Identifier { @@ -2601,7 +2491,7 @@ type ChatFolderRecord struct { func (x *ChatFolderRecord) Reset() { *x = ChatFolderRecord{} - mi := &file_signalpb_StorageService_proto_msgTypes[17] + mi := &file_signalpb_StorageService_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2613,7 +2503,7 @@ func (x *ChatFolderRecord) String() string { func (*ChatFolderRecord) ProtoMessage() {} func (x *ChatFolderRecord) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[17] + mi := &file_signalpb_StorageService_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2626,7 +2516,7 @@ func (x *ChatFolderRecord) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatFolderRecord.ProtoReflect.Descriptor instead. func (*ChatFolderRecord) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{17} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{16} } func (x *ChatFolderRecord) GetIdentifier() []byte { @@ -2727,7 +2617,7 @@ type NotificationProfile struct { func (x *NotificationProfile) Reset() { *x = NotificationProfile{} - mi := &file_signalpb_StorageService_proto_msgTypes[18] + mi := &file_signalpb_StorageService_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2739,7 +2629,7 @@ func (x *NotificationProfile) String() string { func (*NotificationProfile) ProtoMessage() {} func (x *NotificationProfile) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[18] + mi := &file_signalpb_StorageService_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2752,7 +2642,7 @@ func (x *NotificationProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use NotificationProfile.ProtoReflect.Descriptor instead. func (*NotificationProfile) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{18} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{17} } func (x *NotificationProfile) GetId() []byte { @@ -2856,7 +2746,7 @@ type ManifestRecord_Identifier struct { func (x *ManifestRecord_Identifier) Reset() { *x = ManifestRecord_Identifier{} - mi := &file_signalpb_StorageService_proto_msgTypes[19] + mi := &file_signalpb_StorageService_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2868,7 +2758,7 @@ func (x *ManifestRecord_Identifier) String() string { func (*ManifestRecord_Identifier) ProtoMessage() {} func (x *ManifestRecord_Identifier) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[19] + mi := &file_signalpb_StorageService_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2908,7 +2798,7 @@ type ContactRecord_Name struct { func (x *ContactRecord_Name) Reset() { *x = ContactRecord_Name{} - mi := &file_signalpb_StorageService_proto_msgTypes[20] + mi := &file_signalpb_StorageService_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2920,7 +2810,7 @@ func (x *ContactRecord_Name) String() string { func (*ContactRecord_Name) ProtoMessage() {} func (x *ContactRecord_Name) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[20] + mi := &file_signalpb_StorageService_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2965,7 +2855,7 @@ type AccountRecord_PinnedConversation struct { func (x *AccountRecord_PinnedConversation) Reset() { *x = AccountRecord_PinnedConversation{} - mi := &file_signalpb_StorageService_proto_msgTypes[21] + mi := &file_signalpb_StorageService_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2977,7 +2867,7 @@ func (x *AccountRecord_PinnedConversation) String() string { func (*AccountRecord_PinnedConversation) ProtoMessage() {} func (x *AccountRecord_PinnedConversation) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[21] + mi := &file_signalpb_StorageService_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3078,7 +2968,7 @@ type AccountRecord_UsernameLink struct { func (x *AccountRecord_UsernameLink) Reset() { *x = AccountRecord_UsernameLink{} - mi := &file_signalpb_StorageService_proto_msgTypes[22] + mi := &file_signalpb_StorageService_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3090,7 +2980,7 @@ func (x *AccountRecord_UsernameLink) String() string { func (*AccountRecord_UsernameLink) ProtoMessage() {} func (x *AccountRecord_UsernameLink) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[22] + mi := &file_signalpb_StorageService_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3141,7 +3031,7 @@ type AccountRecord_IAPSubscriberData struct { func (x *AccountRecord_IAPSubscriberData) Reset() { *x = AccountRecord_IAPSubscriberData{} - mi := &file_signalpb_StorageService_proto_msgTypes[23] + mi := &file_signalpb_StorageService_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3153,7 +3043,7 @@ func (x *AccountRecord_IAPSubscriberData) String() string { func (*AccountRecord_IAPSubscriberData) ProtoMessage() {} func (x *AccountRecord_IAPSubscriberData) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[23] + mi := &file_signalpb_StorageService_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3234,7 +3124,7 @@ type AccountRecord_NotificationProfileManualOverride struct { func (x *AccountRecord_NotificationProfileManualOverride) Reset() { *x = AccountRecord_NotificationProfileManualOverride{} - mi := &file_signalpb_StorageService_proto_msgTypes[24] + mi := &file_signalpb_StorageService_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3246,7 +3136,7 @@ func (x *AccountRecord_NotificationProfileManualOverride) String() string { func (*AccountRecord_NotificationProfileManualOverride) ProtoMessage() {} func (x *AccountRecord_NotificationProfileManualOverride) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[24] + mi := &file_signalpb_StorageService_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3316,7 +3206,7 @@ type AccountRecord_PinnedConversation_Contact struct { func (x *AccountRecord_PinnedConversation_Contact) Reset() { *x = AccountRecord_PinnedConversation_Contact{} - mi := &file_signalpb_StorageService_proto_msgTypes[25] + mi := &file_signalpb_StorageService_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3328,7 +3218,7 @@ func (x *AccountRecord_PinnedConversation_Contact) String() string { func (*AccountRecord_PinnedConversation_Contact) ProtoMessage() {} func (x *AccountRecord_PinnedConversation_Contact) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[25] + mi := &file_signalpb_StorageService_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3373,7 +3263,7 @@ type AccountRecord_PinnedConversation_ReleaseNotes struct { func (x *AccountRecord_PinnedConversation_ReleaseNotes) Reset() { *x = AccountRecord_PinnedConversation_ReleaseNotes{} - mi := &file_signalpb_StorageService_proto_msgTypes[26] + mi := &file_signalpb_StorageService_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3385,7 +3275,7 @@ func (x *AccountRecord_PinnedConversation_ReleaseNotes) String() string { func (*AccountRecord_PinnedConversation_ReleaseNotes) ProtoMessage() {} func (x *AccountRecord_PinnedConversation_ReleaseNotes) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[26] + mi := &file_signalpb_StorageService_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3412,7 +3302,7 @@ type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct { func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) Reset() { *x = AccountRecord_NotificationProfileManualOverride_ManuallyEnabled{} - mi := &file_signalpb_StorageService_proto_msgTypes[27] + mi := &file_signalpb_StorageService_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3424,7 +3314,7 @@ func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) String func (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoMessage() {} func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[27] + mi := &file_signalpb_StorageService_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3465,7 +3355,7 @@ type Recipient_Contact struct { func (x *Recipient_Contact) Reset() { *x = Recipient_Contact{} - mi := &file_signalpb_StorageService_proto_msgTypes[28] + mi := &file_signalpb_StorageService_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3477,7 +3367,7 @@ func (x *Recipient_Contact) String() string { func (*Recipient_Contact) ProtoMessage() {} func (x *Recipient_Contact) ProtoReflect() protoreflect.Message { - mi := &file_signalpb_StorageService_proto_msgTypes[28] + mi := &file_signalpb_StorageService_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3490,7 +3380,7 @@ func (x *Recipient_Contact) ProtoReflect() protoreflect.Message { // Deprecated: Use Recipient_Contact.ProtoReflect.Descriptor instead. func (*Recipient_Contact) Descriptor() ([]byte, []int) { - return file_signalpb_StorageService_proto_rawDescGZIP(), []int{16, 0} + return file_signalpb_StorageService_proto_rawDescGZIP(), []int{15, 0} } func (x *Recipient_Contact) GetServiceId() string { @@ -3535,16 +3425,16 @@ const file_signalpb_StorageService_proto_rawDesc = "" + "insertItem\x18\x02 \x03(\v2\x1a.signalservice.StorageItemR\n" + "insertItem\x12\x1c\n" + "\tdeleteKey\x18\x03 \x03(\fR\tdeleteKey\x12\x1a\n" + - "\bclearAll\x18\x04 \x01(\bR\bclearAll\"\xe5\x03\n" + + "\bclearAll\x18\x04 \x01(\bR\bclearAll\"\xcf\x03\n" + "\x0eManifestRecord\x12\x18\n" + "\aversion\x18\x01 \x01(\x04R\aversion\x12\"\n" + "\fsourceDevice\x18\x03 \x01(\rR\fsourceDevice\x12J\n" + "\videntifiers\x18\x02 \x03(\v2(.signalservice.ManifestRecord.IdentifierR\videntifiers\x12\x1c\n" + - "\trecordIkm\x18\x04 \x01(\fR\trecordIkm\x1a\xaa\x02\n" + + "\trecordIkm\x18\x04 \x01(\fR\trecordIkm\x1a\x94\x02\n" + "\n" + "Identifier\x12\x10\n" + "\x03raw\x18\x01 \x01(\fR\x03raw\x12A\n" + - "\x04type\x18\x02 \x01(\x0e2-.signalservice.ManifestRecord.Identifier.TypeR\x04type\"\xc6\x01\n" + + "\x04type\x18\x02 \x01(\x0e2-.signalservice.ManifestRecord.Identifier.TypeR\x04type\"\xb0\x01\n" + "\x04Type\x12\v\n" + "\aUNKNOWN\x10\x00\x12\v\n" + "\aCONTACT\x10\x01\x12\v\n" + @@ -3555,8 +3445,7 @@ const file_signalpb_StorageService_proto_rawDesc = "" + "\fSTICKER_PACK\x10\x06\x12\r\n" + "\tCALL_LINK\x10\a\x12\x0f\n" + "\vCHAT_FOLDER\x10\b\x12\x18\n" + - "\x14NOTIFICATION_PROFILE\x10\t\x12\x14\n" + - "\x10FAVORITE_STICKER\x10\v\"\xd5\x05\n" + + "\x14NOTIFICATION_PROFILE\x10\t\"\x83\x05\n" + "\rStorageRecord\x128\n" + "\acontact\x18\x01 \x01(\v2\x1c.signalservice.ContactRecordH\x00R\acontact\x128\n" + "\agroupV1\x18\x02 \x01(\v2\x1c.signalservice.GroupV1RecordH\x00R\agroupV1\x128\n" + @@ -3568,9 +3457,8 @@ const file_signalpb_StorageService_proto_rawDesc = "" + "\n" + "chatFolder\x18\b \x01(\v2\x1f.signalservice.ChatFolderRecordH\x00R\n" + "chatFolder\x12V\n" + - "\x13notificationProfile\x18\t \x01(\v2\".signalservice.NotificationProfileH\x00R\x13notificationProfile\x12P\n" + - "\x0ffavoriteSticker\x18\v \x01(\v2$.signalservice.FavoriteStickerRecordH\x00R\x0ffavoriteStickerB\b\n" + - "\x06record\"\xee\n" + + "\x13notificationProfile\x18\t \x01(\v2\".signalservice.NotificationProfileH\x00R\x13notificationProfileB\b\n" + + "\x06record\"\xab\n" + "\n" + "\rContactRecord\x12\x10\n" + "\x03aci\x18\x01 \x01(\tR\x03aci\x12\x12\n" + @@ -3606,10 +3494,7 @@ const file_signalpb_StorageService_proto_rawDesc = "" + "\tpniBinary\x18\x1a \x01(\fR\tpniBinary\x12.\n" + "\x12blockedAtTimestamp\x18\x1b \x01(\x04R\x12blockedAtTimestamp\x12Q\n" + "\x15notifyForCallsIfMuted\x18\x1c \x01(\x0e2\x1b.signalservice.OptionalBoolR\x15notifyForCallsIfMuted\x12M\n" + - "\x13showUnreadReminders\x18\x1d \x01(\x0e2\x1b.signalservice.OptionalBoolR\x13showUnreadReminders\x12A\n" + - "\n" + - "sharedName\x18\x1e \x01(\v2!.signalservice.ContactRecord.NameR\n" + - "sharedName\x1a4\n" + + "\x13showUnreadReminders\x18\x1d \x01(\x0e2\x1b.signalservice.OptionalBoolR\x13showUnreadReminders\x1a4\n" + "\x04Name\x12\x14\n" + "\x05given\x18\x01 \x01(\tR\x05given\x12\x16\n" + "\x06family\x18\x02 \x01(\tR\x06family\":\n" + @@ -3784,13 +3669,7 @@ const file_signalpb_StorageService_proto_rawDesc = "" + "\x06packId\x18\x01 \x01(\fR\x06packId\x12\x18\n" + "\apackKey\x18\x02 \x01(\fR\apackKey\x12\x1a\n" + "\bposition\x18\x03 \x01(\rR\bposition\x12.\n" + - "\x12deletedAtTimestamp\x18\x04 \x01(\x04R\x12deletedAtTimestamp\"\xcb\x01\n" + - "\x15FavoriteStickerRecord\x12\x16\n" + - "\x06packId\x18\x01 \x01(\fR\x06packId\x12\x18\n" + - "\apackKey\x18\x02 \x01(\fR\apackKey\x12\x1c\n" + - "\tstickerId\x18\x03 \x01(\rR\tstickerId\x122\n" + - "\x14favoritedAtTimestamp\x18\x04 \x01(\x04R\x14favoritedAtTimestamp\x12.\n" + - "\x12deletedAtTimestamp\x18\x05 \x01(\x04R\x12deletedAtTimestamp\"\x88\x01\n" + + "\x12deletedAtTimestamp\x18\x04 \x01(\x04R\x12deletedAtTimestamp\"\x88\x01\n" + "\x0eCallLinkRecord\x12\x18\n" + "\arootKey\x18\x01 \x01(\fR\arootKey\x12\"\n" + "\fadminPasskey\x18\x02 \x01(\fR\fadminPasskey\x122\n" + @@ -3889,7 +3768,7 @@ func file_signalpb_StorageService_proto_rawDescGZIP() []byte { } var file_signalpb_StorageService_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_signalpb_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 29) +var file_signalpb_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_signalpb_StorageService_proto_goTypes = []any{ (OptionalBool)(0), // 0: signalservice.OptionalBool (AvatarColor)(0), // 1: signalservice.AvatarColor @@ -3915,81 +3794,78 @@ var file_signalpb_StorageService_proto_goTypes = []any{ (*AccountRecord)(nil), // 21: signalservice.AccountRecord (*StoryDistributionListRecord)(nil), // 22: signalservice.StoryDistributionListRecord (*StickerPackRecord)(nil), // 23: signalservice.StickerPackRecord - (*FavoriteStickerRecord)(nil), // 24: signalservice.FavoriteStickerRecord - (*CallLinkRecord)(nil), // 25: signalservice.CallLinkRecord - (*Recipient)(nil), // 26: signalservice.Recipient - (*ChatFolderRecord)(nil), // 27: signalservice.ChatFolderRecord - (*NotificationProfile)(nil), // 28: signalservice.NotificationProfile - (*ManifestRecord_Identifier)(nil), // 29: signalservice.ManifestRecord.Identifier - (*ContactRecord_Name)(nil), // 30: signalservice.ContactRecord.Name - (*AccountRecord_PinnedConversation)(nil), // 31: signalservice.AccountRecord.PinnedConversation - (*AccountRecord_UsernameLink)(nil), // 32: signalservice.AccountRecord.UsernameLink - (*AccountRecord_IAPSubscriberData)(nil), // 33: signalservice.AccountRecord.IAPSubscriberData - (*AccountRecord_NotificationProfileManualOverride)(nil), // 34: signalservice.AccountRecord.NotificationProfileManualOverride - (*AccountRecord_PinnedConversation_Contact)(nil), // 35: signalservice.AccountRecord.PinnedConversation.Contact - (*AccountRecord_PinnedConversation_ReleaseNotes)(nil), // 36: signalservice.AccountRecord.PinnedConversation.ReleaseNotes - (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 37: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled - (*Recipient_Contact)(nil), // 38: signalservice.Recipient.Contact + (*CallLinkRecord)(nil), // 24: signalservice.CallLinkRecord + (*Recipient)(nil), // 25: signalservice.Recipient + (*ChatFolderRecord)(nil), // 26: signalservice.ChatFolderRecord + (*NotificationProfile)(nil), // 27: signalservice.NotificationProfile + (*ManifestRecord_Identifier)(nil), // 28: signalservice.ManifestRecord.Identifier + (*ContactRecord_Name)(nil), // 29: signalservice.ContactRecord.Name + (*AccountRecord_PinnedConversation)(nil), // 30: signalservice.AccountRecord.PinnedConversation + (*AccountRecord_UsernameLink)(nil), // 31: signalservice.AccountRecord.UsernameLink + (*AccountRecord_IAPSubscriberData)(nil), // 32: signalservice.AccountRecord.IAPSubscriberData + (*AccountRecord_NotificationProfileManualOverride)(nil), // 33: signalservice.AccountRecord.NotificationProfileManualOverride + (*AccountRecord_PinnedConversation_Contact)(nil), // 34: signalservice.AccountRecord.PinnedConversation.Contact + (*AccountRecord_PinnedConversation_ReleaseNotes)(nil), // 35: signalservice.AccountRecord.PinnedConversation.ReleaseNotes + (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 36: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled + (*Recipient_Contact)(nil), // 37: signalservice.Recipient.Contact } var file_signalpb_StorageService_proto_depIdxs = []int32{ 11, // 0: signalservice.StorageItems.items:type_name -> signalservice.StorageItem 10, // 1: signalservice.WriteOperation.manifest:type_name -> signalservice.StorageManifest 11, // 2: signalservice.WriteOperation.insertItem:type_name -> signalservice.StorageItem - 29, // 3: signalservice.ManifestRecord.identifiers:type_name -> signalservice.ManifestRecord.Identifier + 28, // 3: signalservice.ManifestRecord.identifiers:type_name -> signalservice.ManifestRecord.Identifier 17, // 4: signalservice.StorageRecord.contact:type_name -> signalservice.ContactRecord 18, // 5: signalservice.StorageRecord.groupV1:type_name -> signalservice.GroupV1Record 19, // 6: signalservice.StorageRecord.groupV2:type_name -> signalservice.GroupV2Record 21, // 7: signalservice.StorageRecord.account:type_name -> signalservice.AccountRecord 22, // 8: signalservice.StorageRecord.storyDistributionList:type_name -> signalservice.StoryDistributionListRecord 23, // 9: signalservice.StorageRecord.stickerPack:type_name -> signalservice.StickerPackRecord - 25, // 10: signalservice.StorageRecord.callLink:type_name -> signalservice.CallLinkRecord - 27, // 11: signalservice.StorageRecord.chatFolder:type_name -> signalservice.ChatFolderRecord - 28, // 12: signalservice.StorageRecord.notificationProfile:type_name -> signalservice.NotificationProfile - 24, // 13: signalservice.StorageRecord.favoriteSticker:type_name -> signalservice.FavoriteStickerRecord - 3, // 14: signalservice.ContactRecord.identityState:type_name -> signalservice.ContactRecord.IdentityState - 30, // 15: signalservice.ContactRecord.nickname:type_name -> signalservice.ContactRecord.Name - 1, // 16: signalservice.ContactRecord.avatarColor:type_name -> signalservice.AvatarColor - 0, // 17: signalservice.ContactRecord.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool - 0, // 18: signalservice.ContactRecord.showUnreadReminders:type_name -> signalservice.OptionalBool - 30, // 19: signalservice.ContactRecord.sharedName:type_name -> signalservice.ContactRecord.Name - 4, // 20: signalservice.GroupV2Record.storySendMode:type_name -> signalservice.GroupV2Record.StorySendMode - 1, // 21: signalservice.GroupV2Record.avatarColor:type_name -> signalservice.AvatarColor - 0, // 22: signalservice.GroupV2Record.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool - 0, // 23: signalservice.GroupV2Record.notifyForMentionsIfMuted:type_name -> signalservice.OptionalBool - 0, // 24: signalservice.GroupV2Record.notifyForRepliesIfMuted:type_name -> signalservice.OptionalBool - 0, // 25: signalservice.GroupV2Record.showUnreadReminders:type_name -> signalservice.OptionalBool - 6, // 26: signalservice.AccountRecord.phoneNumberSharingMode:type_name -> signalservice.AccountRecord.PhoneNumberSharingMode - 31, // 27: signalservice.AccountRecord.pinnedConversations:type_name -> signalservice.AccountRecord.PinnedConversation - 20, // 28: signalservice.AccountRecord.payments:type_name -> signalservice.Payments - 0, // 29: signalservice.AccountRecord.storyViewReceiptsEnabled:type_name -> signalservice.OptionalBool - 32, // 30: signalservice.AccountRecord.usernameLink:type_name -> signalservice.AccountRecord.UsernameLink - 33, // 31: signalservice.AccountRecord.backupSubscriberData:type_name -> signalservice.AccountRecord.IAPSubscriberData - 1, // 32: signalservice.AccountRecord.avatarColor:type_name -> signalservice.AvatarColor - 34, // 33: signalservice.AccountRecord.notificationProfileManualOverride:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride - 5, // 34: signalservice.AccountRecord.unreadBadgeType:type_name -> signalservice.AccountRecord.UnreadBadgeType - 0, // 35: signalservice.AccountRecord.includeMutedChatsInBadge:type_name -> signalservice.OptionalBool - 0, // 36: signalservice.AccountRecord.reactionNotifications:type_name -> signalservice.OptionalBool - 0, // 37: signalservice.AccountRecord.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool - 0, // 38: signalservice.AccountRecord.notifyForMentionsIfMuted:type_name -> signalservice.OptionalBool - 0, // 39: signalservice.AccountRecord.notifyForRepliesIfMuted:type_name -> signalservice.OptionalBool - 0, // 40: signalservice.AccountRecord.showUnreadReminders:type_name -> signalservice.OptionalBool - 0, // 41: signalservice.AccountRecord.notifyWhenContactJoins:type_name -> signalservice.OptionalBool - 38, // 42: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact - 8, // 43: signalservice.ChatFolderRecord.folderType:type_name -> signalservice.ChatFolderRecord.FolderType - 26, // 44: signalservice.ChatFolderRecord.includedRecipients:type_name -> signalservice.Recipient - 26, // 45: signalservice.ChatFolderRecord.excludedRecipients:type_name -> signalservice.Recipient - 26, // 46: signalservice.NotificationProfile.allowedMembers:type_name -> signalservice.Recipient - 9, // 47: signalservice.NotificationProfile.scheduleDaysEnabled:type_name -> signalservice.NotificationProfile.DayOfWeek - 2, // 48: signalservice.ManifestRecord.Identifier.type:type_name -> signalservice.ManifestRecord.Identifier.Type - 35, // 49: signalservice.AccountRecord.PinnedConversation.contact:type_name -> signalservice.AccountRecord.PinnedConversation.Contact - 36, // 50: signalservice.AccountRecord.PinnedConversation.releaseNotes:type_name -> signalservice.AccountRecord.PinnedConversation.ReleaseNotes - 7, // 51: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color - 37, // 52: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled - 53, // [53:53] is the sub-list for method output_type - 53, // [53:53] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 24, // 10: signalservice.StorageRecord.callLink:type_name -> signalservice.CallLinkRecord + 26, // 11: signalservice.StorageRecord.chatFolder:type_name -> signalservice.ChatFolderRecord + 27, // 12: signalservice.StorageRecord.notificationProfile:type_name -> signalservice.NotificationProfile + 3, // 13: signalservice.ContactRecord.identityState:type_name -> signalservice.ContactRecord.IdentityState + 29, // 14: signalservice.ContactRecord.nickname:type_name -> signalservice.ContactRecord.Name + 1, // 15: signalservice.ContactRecord.avatarColor:type_name -> signalservice.AvatarColor + 0, // 16: signalservice.ContactRecord.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool + 0, // 17: signalservice.ContactRecord.showUnreadReminders:type_name -> signalservice.OptionalBool + 4, // 18: signalservice.GroupV2Record.storySendMode:type_name -> signalservice.GroupV2Record.StorySendMode + 1, // 19: signalservice.GroupV2Record.avatarColor:type_name -> signalservice.AvatarColor + 0, // 20: signalservice.GroupV2Record.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool + 0, // 21: signalservice.GroupV2Record.notifyForMentionsIfMuted:type_name -> signalservice.OptionalBool + 0, // 22: signalservice.GroupV2Record.notifyForRepliesIfMuted:type_name -> signalservice.OptionalBool + 0, // 23: signalservice.GroupV2Record.showUnreadReminders:type_name -> signalservice.OptionalBool + 6, // 24: signalservice.AccountRecord.phoneNumberSharingMode:type_name -> signalservice.AccountRecord.PhoneNumberSharingMode + 30, // 25: signalservice.AccountRecord.pinnedConversations:type_name -> signalservice.AccountRecord.PinnedConversation + 20, // 26: signalservice.AccountRecord.payments:type_name -> signalservice.Payments + 0, // 27: signalservice.AccountRecord.storyViewReceiptsEnabled:type_name -> signalservice.OptionalBool + 31, // 28: signalservice.AccountRecord.usernameLink:type_name -> signalservice.AccountRecord.UsernameLink + 32, // 29: signalservice.AccountRecord.backupSubscriberData:type_name -> signalservice.AccountRecord.IAPSubscriberData + 1, // 30: signalservice.AccountRecord.avatarColor:type_name -> signalservice.AvatarColor + 33, // 31: signalservice.AccountRecord.notificationProfileManualOverride:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride + 5, // 32: signalservice.AccountRecord.unreadBadgeType:type_name -> signalservice.AccountRecord.UnreadBadgeType + 0, // 33: signalservice.AccountRecord.includeMutedChatsInBadge:type_name -> signalservice.OptionalBool + 0, // 34: signalservice.AccountRecord.reactionNotifications:type_name -> signalservice.OptionalBool + 0, // 35: signalservice.AccountRecord.notifyForCallsIfMuted:type_name -> signalservice.OptionalBool + 0, // 36: signalservice.AccountRecord.notifyForMentionsIfMuted:type_name -> signalservice.OptionalBool + 0, // 37: signalservice.AccountRecord.notifyForRepliesIfMuted:type_name -> signalservice.OptionalBool + 0, // 38: signalservice.AccountRecord.showUnreadReminders:type_name -> signalservice.OptionalBool + 0, // 39: signalservice.AccountRecord.notifyWhenContactJoins:type_name -> signalservice.OptionalBool + 37, // 40: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact + 8, // 41: signalservice.ChatFolderRecord.folderType:type_name -> signalservice.ChatFolderRecord.FolderType + 25, // 42: signalservice.ChatFolderRecord.includedRecipients:type_name -> signalservice.Recipient + 25, // 43: signalservice.ChatFolderRecord.excludedRecipients:type_name -> signalservice.Recipient + 25, // 44: signalservice.NotificationProfile.allowedMembers:type_name -> signalservice.Recipient + 9, // 45: signalservice.NotificationProfile.scheduleDaysEnabled:type_name -> signalservice.NotificationProfile.DayOfWeek + 2, // 46: signalservice.ManifestRecord.Identifier.type:type_name -> signalservice.ManifestRecord.Identifier.Type + 34, // 47: signalservice.AccountRecord.PinnedConversation.contact:type_name -> signalservice.AccountRecord.PinnedConversation.Contact + 35, // 48: signalservice.AccountRecord.PinnedConversation.releaseNotes:type_name -> signalservice.AccountRecord.PinnedConversation.ReleaseNotes + 7, // 49: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color + 36, // 50: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled + 51, // [51:51] is the sub-list for method output_type + 51, // [51:51] is the sub-list for method input_type + 51, // [51:51] is the sub-list for extension type_name + 51, // [51:51] is the sub-list for extension extendee + 0, // [0:51] is the sub-list for field type_name } func init() { file_signalpb_StorageService_proto_init() } @@ -4007,28 +3883,27 @@ func file_signalpb_StorageService_proto_init() { (*StorageRecord_CallLink)(nil), (*StorageRecord_ChatFolder)(nil), (*StorageRecord_NotificationProfile)(nil), - (*StorageRecord_FavoriteSticker)(nil), } file_signalpb_StorageService_proto_msgTypes[7].OneofWrappers = []any{} file_signalpb_StorageService_proto_msgTypes[9].OneofWrappers = []any{} file_signalpb_StorageService_proto_msgTypes[11].OneofWrappers = []any{} - file_signalpb_StorageService_proto_msgTypes[16].OneofWrappers = []any{ + file_signalpb_StorageService_proto_msgTypes[15].OneofWrappers = []any{ (*Recipient_Contact_)(nil), (*Recipient_LegacyGroupId)(nil), (*Recipient_GroupMasterKey)(nil), } - file_signalpb_StorageService_proto_msgTypes[18].OneofWrappers = []any{} - file_signalpb_StorageService_proto_msgTypes[21].OneofWrappers = []any{ + file_signalpb_StorageService_proto_msgTypes[17].OneofWrappers = []any{} + file_signalpb_StorageService_proto_msgTypes[20].OneofWrappers = []any{ (*AccountRecord_PinnedConversation_Contact_)(nil), (*AccountRecord_PinnedConversation_LegacyGroupId)(nil), (*AccountRecord_PinnedConversation_GroupMasterKey)(nil), (*AccountRecord_PinnedConversation_ReleaseNotes_)(nil), } - file_signalpb_StorageService_proto_msgTypes[23].OneofWrappers = []any{ + file_signalpb_StorageService_proto_msgTypes[22].OneofWrappers = []any{ (*AccountRecord_IAPSubscriberData_PurchaseToken)(nil), (*AccountRecord_IAPSubscriberData_OriginalTransactionId)(nil), } - file_signalpb_StorageService_proto_msgTypes[24].OneofWrappers = []any{ + file_signalpb_StorageService_proto_msgTypes[23].OneofWrappers = []any{ (*AccountRecord_NotificationProfileManualOverride_DisabledAtTimestampMs)(nil), (*AccountRecord_NotificationProfileManualOverride_Enabled)(nil), } @@ -4038,7 +3913,7 @@ func file_signalpb_StorageService_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_signalpb_StorageService_proto_rawDesc), len(file_signalpb_StorageService_proto_rawDesc)), NumEnums: 10, - NumMessages: 29, + NumMessages: 28, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/signalpb/StorageService.proto b/pkg/signalmeow/protobuf/signalpb/StorageService.proto index 7e63a91..4109826 100644 --- a/pkg/signalmeow/protobuf/signalpb/StorageService.proto +++ b/pkg/signalmeow/protobuf/signalpb/StorageService.proto @@ -53,7 +53,6 @@ message ManifestRecord { CALL_LINK = 7; CHAT_FOLDER = 8; NOTIFICATION_PROFILE = 9; - FAVORITE_STICKER = 11; } bytes raw = 1; @@ -78,7 +77,6 @@ message StorageRecord { CallLinkRecord callLink = 7; ChatFolderRecord chatFolder = 8; NotificationProfile notificationProfile = 9; - FavoriteStickerRecord favoriteSticker = 11; } } @@ -148,8 +146,7 @@ message ContactRecord { uint64 blockedAtTimestamp = 27; // 0 means the blocked time is unknown OptionalBool notifyForCallsIfMuted = 28; // If unset, use the default settings OptionalBool showUnreadReminders = 29; // If unset, use the default settings - Name sharedName = 30; // Name shared from a third party - // Next ID: 31 + // Next ID: 30 } message GroupV1Record { @@ -359,21 +356,6 @@ message StickerPackRecord { // be unset } -message FavoriteStickerRecord { // Can come from uninstalled packs so we must store all relevant information ourselves. If limit is exceeded (500), reject newest one. - bytes packId = 1; // 16 bytes - bytes packKey = 2; // 32 bytes, used to derive the AES-256 key - // aesKey = HKDF( - // input = packKey, - // salt = 32 zero bytes, - // info = "Sticker Pack" - // ) - uint32 stickerId = 3; - uint64 favoritedAtTimestamp = 4; // Sorted by newest timestamp first. Can be mutated if sticker is reordered via 'Move to top' - uint64 deletedAtTimestamp = 5; // Timestamp in milliseconds. When present and - // non-zero - `packKey`, and `favoritedAtTimestamp` should - // be unset -} - message CallLinkRecord { bytes rootKey = 1; bytes adminPasskey = 2; diff --git a/pkg/signalmeow/protobuf/update-protos.sh b/pkg/signalmeow/protobuf/update-protos.sh index e06c318..c1e3c71 100755 --- a/pkg/signalmeow/protobuf/update-protos.sh +++ b/pkg/signalmeow/protobuf/update-protos.sh @@ -2,7 +2,7 @@ cd $(dirname "$0") set -euo pipefail -ANDROID_GIT_REVISION=${1:-ac1d5938947be53577de6052db55e2c35c41b85a} +ANDROID_GIT_REVISION=${1:-46d6eeb2f3d3e12e6938151a8dbd2a33b5604b1f} update_proto() { case "$1" in diff --git a/pkg/signalmeow/provisioning.go b/pkg/signalmeow/provisioning.go index dc37585..bba1411 100644 --- a/pkg/signalmeow/provisioning.go +++ b/pkg/signalmeow/provisioning.go @@ -87,7 +87,6 @@ func (dle DeviceLinkError) Error() string { func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, deviceName string, allowBackup bool) chan ProvisioningResponse { log := zerolog.Ctx(ctx).With().Str("action", "perform provisioning").Logger() - ctx = log.WithContext(ctx) c := make(chan ProvisioningResponse, 4) go func() { defer close(c) @@ -100,7 +99,7 @@ func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, dev Path: web.WebsocketProvisioningPath, }).String()) if err != nil { - log.Err(err).Any("resp", resp).Msg("Failed to open websocket for provisioning") + log.Err(err).Any("resp", resp).Msg("error opening provisioning websocket") c <- ProvisioningResponse{State: StateProvisioningError, Err: err} return } @@ -109,7 +108,7 @@ func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, dev provisioningURL, err := startProvisioning(timeoutCtx, ws, provisioningCipher, allowBackup) if err != nil { - log.Err(err).Msg("Failed to send provisioning start request") + log.Err(err).Msg("startProvisioning error") c <- ProvisioningResponse{State: StateProvisioningError, Err: err} return } @@ -117,192 +116,154 @@ func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, dev provisioningMessage, err := continueProvisioning(timeoutCtx, ws, provisioningCipher) if err != nil { - log.Err(err).Msg("Failed to send provisioning continue request") + log.Err(err).Msg("continueProvisioning error") c <- ProvisioningResponse{State: StateProvisioningError, Err: err} return } - _ = ws.Close(websocket.StatusNormalClosure, "") + ws.Close(websocket.StatusNormalClosure, "") - data, err := finishProvisioning(ctx, deviceStore, provisioningMessage, deviceName) + aciPublicKey := exerrors.Must(libsignalgo.DeserializePublicKey(provisioningMessage.GetAciIdentityKeyPublic())) + aciPrivateKey := exerrors.Must(libsignalgo.DeserializePrivateKey(provisioningMessage.GetAciIdentityKeyPrivate())) + aciIdentityKeyPair := exerrors.Must(libsignalgo.NewIdentityKeyPair(aciPublicKey, aciPrivateKey)) + pniPublicKey := exerrors.Must(libsignalgo.DeserializePublicKey(provisioningMessage.GetPniIdentityKeyPublic())) + pniPrivateKey := exerrors.Must(libsignalgo.DeserializePrivateKey(provisioningMessage.GetPniIdentityKeyPrivate())) + pniIdentityKeyPair := exerrors.Must(libsignalgo.NewIdentityKeyPair(pniPublicKey, pniPrivateKey)) + profileKey := libsignalgo.ProfileKey(provisioningMessage.GetProfileKey()) + + username := *provisioningMessage.Number + password := random.String(22) + code := provisioningMessage.ProvisioningCode + aciRegistrationID := mrand.IntN(16383) + 1 + pniRegistrationID := mrand.IntN(16383) + 1 + aciSignedPreKey := GenerateSignedPreKey(1, aciIdentityKeyPair) + pniSignedPreKey := GenerateSignedPreKey(1, pniIdentityKeyPair) + aciPQLastResortPreKey := GenerateKyberPreKeys(1, 1, aciIdentityKeyPair)[0] + pniPQLastResortPreKey := GenerateKyberPreKeys(1, 1, pniIdentityKeyPair)[0] + deviceResponse, err := confirmDevice( + ctx, + username, + password, + *code, + aciRegistrationID, + pniRegistrationID, + aciSignedPreKey, + pniSignedPreKey, + aciPQLastResortPreKey, + pniPQLastResortPreKey, + aciIdentityKeyPair, + deviceName, + ) if err != nil { - log.Err(err).Msg("Failed to finish provisioning") + log.Err(err).Msg("confirmDevice error") c <- ProvisioningResponse{State: StateProvisioningError, Err: err} - } else { - c <- ProvisioningResponse{State: StateProvisioningDataReceived, ProvisioningData: data} + return } + + deviceId := 1 + if deviceResponse.DeviceID != 0 { + deviceId = deviceResponse.DeviceID + } + + data := &store.DeviceData{ + ACIIdentityKeyPair: aciIdentityKeyPair, + PNIIdentityKeyPair: pniIdentityKeyPair, + ACIRegistrationID: aciRegistrationID, + PNIRegistrationID: pniRegistrationID, + ACI: deviceResponse.ACI, + PNI: deviceResponse.PNI, + DeviceID: deviceId, + Number: *provisioningMessage.Number, + Password: password, + AccountEntropyPool: libsignalgo.AccountEntropyPool(provisioningMessage.GetAccountEntropyPool()), + EphemeralBackupKey: libsignalgo.BytesToBackupKey(provisioningMessage.GetEphemeralBackupKey()), + MediaRootBackupKey: libsignalgo.BytesToBackupKey(provisioningMessage.GetMediaRootBackupKey()), + } + if provisioningMessage.GetAccountEntropyPool() != "" { + data.MasterKey, err = libsignalgo.AccountEntropyPool(provisioningMessage.GetAccountEntropyPool()).DeriveSVRKey() + if err != nil { + log.Err(err).Msg("Failed to derive master key from account entropy pool") + } else { + log.Debug().Msg("Derived master key from account entropy pool") + } + } else { + log.Warn().Msg("No account entropy pool in provisioning message") + } + + // Store the provisioning data + err = deviceStore.PutDevice(ctx, data) + if err != nil { + log.Err(err).Msg("error storing new device") + c <- ProvisioningResponse{State: StateProvisioningError, Err: err} + return + } + + device, err := deviceStore.DeviceByACI(ctx, data.ACI) + if err != nil { + log.Err(err).Msg("error retrieving new device") + c <- ProvisioningResponse{State: StateProvisioningError, Err: err} + return + } + + // In case this is an existing device, we gotta clear out keys + device.ClearDeviceKeys(ctx) + + // Store identity keys? + _, err = device.IdentityKeyStore.SaveIdentityKey(ctx, device.ACIServiceID(), device.ACIIdentityKeyPair.GetIdentityKey()) + if err != nil { + c <- ProvisioningResponse{ + State: StateProvisioningError, + Err: fmt.Errorf("error saving identity key: %w", err), + } + return + } + _, err = device.IdentityKeyStore.SaveIdentityKey(ctx, device.PNIServiceID(), device.PNIIdentityKeyPair.GetIdentityKey()) + if err != nil { + c <- ProvisioningResponse{ + State: StateProvisioningError, + Err: fmt.Errorf("error saving identity key: %w", err), + } + return + } + + // Store signed prekeys (now that we have a device) + device.ACIPreKeyStore.StoreSignedPreKey(ctx, 1, aciSignedPreKey) + device.PNIPreKeyStore.StoreSignedPreKey(ctx, 1, pniSignedPreKey) + device.ACIPreKeyStore.StoreLastResortKyberPreKey(ctx, 1, aciPQLastResortPreKey) + device.PNIPreKeyStore.StoreLastResortKyberPreKey(ctx, 1, pniPQLastResortPreKey) + + // Store our profile key + err = device.RecipientStore.StoreRecipient(ctx, &types.Recipient{ + ACI: data.ACI, + PNI: data.PNI, + E164: data.Number, + Profile: types.Profile{ + Key: profileKey, + }, + }) + if err != nil { + c <- ProvisioningResponse{ + State: StateProvisioningError, + Err: fmt.Errorf("error storing profile key: %w", err), + } + return + } + + // Return the provisioning data + c <- ProvisioningResponse{State: StateProvisioningDataReceived, ProvisioningData: data} }() return c } -func finishProvisioning( - ctx context.Context, - deviceStore store.DeviceStore, - provisioningMessage *signalpb.ProvisionMessage, - deviceName string, -) (*store.DeviceData, error) { - aciPublicKey, err := libsignalgo.DeserializePublicKey(provisioningMessage.GetAciIdentityKeyPublic()) - if err != nil { - return nil, fmt.Errorf("failed to deserialize aci public key: %w", err) - } - aciPrivateKey, err := libsignalgo.DeserializePrivateKey(provisioningMessage.GetAciIdentityKeyPrivate()) - if err != nil { - return nil, fmt.Errorf("failed to deserialize aci private key: %w", err) - } - aciIdentityKeyPair, err := libsignalgo.NewIdentityKeyPair(aciPublicKey, aciPrivateKey) - if err != nil { - return nil, fmt.Errorf("failed to create aci identity key pair: %w", err) - } - profileKey := libsignalgo.ProfileKey(provisioningMessage.GetProfileKey()) - - password := random.String(22) - code := provisioningMessage.ProvisioningCode - aciRegistrationID := mrand.IntN(16383) + 1 - aciSignedPreKey := GenerateSignedPreKey(1, aciIdentityKeyPair) - aciPQLastResortPreKey := GenerateKyberPreKeys(1, 1, aciIdentityKeyPair)[0] - var pniIdentityKeyPair *libsignalgo.IdentityKeyPair - var pniRegistrationID int - var pniSignedPreKey *libsignalgo.SignedPreKeyRecord - var pniPQLastResortPreKey *libsignalgo.KyberPreKeyRecord - var hasE164 bool - aci, err := ParseStringOrBinaryServiceID(provisioningMessage.GetAci(), provisioningMessage.GetAciBinary()) - if err != nil { - return nil, fmt.Errorf("failed to parse aci: %w", err) - } - pni, _ := ParseStringOrBinaryUUID(provisioningMessage.GetPni(), provisioningMessage.GetPniBinary()) - if pni != uuid.Nil { - hasE164 = true - - pniPublicKey, err := libsignalgo.DeserializePublicKey(provisioningMessage.GetPniIdentityKeyPublic()) - if err != nil { - return nil, fmt.Errorf("failed to deserialize pni public key: %w", err) - } - pniPrivateKey, err := libsignalgo.DeserializePrivateKey(provisioningMessage.GetPniIdentityKeyPrivate()) - if err != nil { - return nil, fmt.Errorf("failed to deserialize pni private key: %w", err) - } - pniIdentityKeyPair, err = libsignalgo.NewIdentityKeyPair(pniPublicKey, pniPrivateKey) - if err != nil { - return nil, fmt.Errorf("failed to create pni identity key pair: %w", err) - } - - pniRegistrationID = mrand.IntN(16383) + 1 - pniSignedPreKey = GenerateSignedPreKey(1, pniIdentityKeyPair) - pniPQLastResortPreKey = GenerateKyberPreKeys(1, 1, pniIdentityKeyPair)[0] - } - zerolog.Ctx(ctx).Trace().Any("msg", provisioningMessage).Msg("Provisioning message") - deviceResponse, err := confirmDevice( - ctx, - aci.String(), - password, - *code, - hasE164, - aciRegistrationID, - pniRegistrationID, - aciSignedPreKey, - pniSignedPreKey, - aciPQLastResortPreKey, - pniPQLastResortPreKey, - aciIdentityKeyPair, - deviceName, - ) - if err != nil { - return nil, fmt.Errorf("failed to confirm device: %w", err) - } - - deviceId := 1 - if deviceResponse.DeviceID != 0 { - deviceId = deviceResponse.DeviceID - } - - data := &store.DeviceData{ - ACIIdentityKeyPair: aciIdentityKeyPair, - PNIIdentityKeyPair: pniIdentityKeyPair, - ACIRegistrationID: aciRegistrationID, - PNIRegistrationID: pniRegistrationID, - ACI: deviceResponse.ACI, - PNI: deviceResponse.PNI, - DeviceID: deviceId, - Number: provisioningMessage.GetNumber(), - Password: password, - AccountEntropyPool: libsignalgo.AccountEntropyPool(provisioningMessage.GetAccountEntropyPool()), - EphemeralBackupKey: libsignalgo.BytesToBackupKey(provisioningMessage.GetEphemeralBackupKey()), - MediaRootBackupKey: libsignalgo.BytesToBackupKey(provisioningMessage.GetMediaRootBackupKey()), - AuthCredentialSalt: provisioningMessage.GetAuthCredentialSalt(), - } - if provisioningMessage.GetAccountEntropyPool() != "" { - data.MasterKey, err = libsignalgo.AccountEntropyPool(provisioningMessage.GetAccountEntropyPool()).DeriveSVRKey() - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to derive master key from account entropy pool") - } else { - zerolog.Ctx(ctx).Debug().Msg("Derived master key from account entropy pool") - } - } else { - zerolog.Ctx(ctx).Warn().Msg("No account entropy pool in provisioning message") - } - - // Store the provisioning data - err = deviceStore.PutDevice(ctx, data) - if err != nil { - return nil, fmt.Errorf("failed to store new device: %w", err) - } - - device, err := deviceStore.DeviceByACI(ctx, data.ACI) - if err != nil { - return nil, fmt.Errorf("failed to retrieve stored device: %w", err) - } - - err = device.ClearDeviceKeys(ctx) - if err != nil { - zerolog.Ctx(ctx).Warn().Err(err).Msg("Failed to clear device keys") - } - - _, err = device.IdentityKeyStore.SaveIdentityKey(ctx, device.ACIServiceID(), device.ACIIdentityKeyPair.GetIdentityKey()) - if err != nil { - return nil, fmt.Errorf("failed to save aci identity key: %w", err) - } - err = device.ACIPreKeyStore.StoreSignedPreKey(ctx, 1, aciSignedPreKey) - if err != nil { - return nil, fmt.Errorf("failed to save signed prekey for aci: %w", err) - } - err = device.ACIPreKeyStore.StoreLastResortKyberPreKey(ctx, 1, aciPQLastResortPreKey) - if err != nil { - return nil, fmt.Errorf("failed to save last resort kyber prekey for aci: %w", err) - } - if hasE164 { - _, err = device.IdentityKeyStore.SaveIdentityKey(ctx, device.PNIServiceID(), device.PNIIdentityKeyPair.GetIdentityKey()) - if err != nil { - return nil, fmt.Errorf("failed to save pni identity key: %w", err) - } - err = device.PNIPreKeyStore.StoreSignedPreKey(ctx, 1, pniSignedPreKey) - if err != nil { - return nil, fmt.Errorf("failed to save signed prekey for pni: %w", err) - } - err = device.PNIPreKeyStore.StoreLastResortKyberPreKey(ctx, 1, pniPQLastResortPreKey) - if err != nil { - return nil, fmt.Errorf("failed to save last resort kyber prekey for pni: %w", err) - } - } - - _, err = device.RecipientStore.LoadAndUpdateRecipient(ctx, data.ACI, data.PNI, func(recipient *types.Recipient) (bool, error) { - recipient.E164 = data.Number - recipient.Profile.Key = profileKey - return true, nil - }) - if err != nil { - return nil, fmt.Errorf("failed to save profile key: %w", err) - } - - return data, nil -} - // Returns the provisioningUrl and an error func startProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCipher *ProvisioningCipher, allowBackup bool) (string, error) { + log := zerolog.Ctx(ctx).With().Str("action", "start provisioning").Logger() pubKey := provisioningCipher.GetPublicKey() msg := &signalpb.WebSocketMessage{} err := wspb.Read(ctx, ws, msg) if err != nil { - return "", fmt.Errorf("failed to read websocket message: %w", err) + log.Err(err).Msg("error reading websocket message") + return "", err } // Ensure the message is a request and has a valid verb and path @@ -316,9 +277,9 @@ func startProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCiph return "", fmt.Errorf("failed to unmarshal provisioning UUID: %w", err) } - linkCapabilities := []string{"backup5,nopni2"} + linkCapabilities := []string{"backup5"} if !allowBackup { - linkCapabilities = []string{"nopni2"} + linkCapabilities = []string{} } provisioningURL := (&url.URL{ Scheme: "sgnl", @@ -334,17 +295,20 @@ func startProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCiph response := web.CreateWSResponse(ctx, msg.GetRequest().GetId(), 200) err = wspb.Write(ctx, ws, response) if err != nil { - return "", fmt.Errorf("failed to write websocket message: %w", err) + log.Err(err).Msg("error writing websocket message") + return "", err } return provisioningURL, nil } func continueProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCipher *ProvisioningCipher) (*signalpb.ProvisionMessage, error) { + log := zerolog.Ctx(ctx).With().Str("action", "continue provisioning").Logger() envelope := &signalpb.ProvisionEnvelope{} msg := &signalpb.WebSocketMessage{} err := wspb.Read(ctx, ws, msg) if err != nil { - return nil, fmt.Errorf("failed to read websocket message: %w", err) + log.Err(err).Msg("error reading websocket message") + return nil, err } // Wait for provisioning message in a request, then send a response @@ -354,36 +318,34 @@ func continueProvisioning(ctx context.Context, ws *websocket.Conn, provisioningC err = proto.Unmarshal(msg.Request.Body, envelope) if err != nil { - return nil, fmt.Errorf("failed to unmarshal provisioning message: %w", err) + return nil, err } response := web.CreateWSResponse(ctx, *msg.Request.Id, 200) err = wspb.Write(ctx, ws, response) if err != nil { - return nil, fmt.Errorf("failed to write websocket message: %w", err) + log.Err(err).Msg("error writing websocket message") + return nil, err } } else { - return nil, fmt.Errorf("invalid provisioning message, type: %v, verb: %v, path: %v", *msg.Type, *msg.Request.Verb, *msg.Request.Path) + err = fmt.Errorf("invalid provisioning message, type: %v, verb: %v, path: %v", *msg.Type, *msg.Request.Verb, *msg.Request.Path) + log.Err(err).Msg("problem reading websocket message") + return nil, err } provisioningMessage, err := provisioningCipher.Decrypt(envelope) - if err != nil { - return nil, fmt.Errorf("failed to decrypt provisioning message: %w", err) - } - return provisioningMessage, nil + return provisioningMessage, err } -func getSignalCapabilities(phonenumberless bool) map[string]any { - return map[string]any{ - "attachmentBackfill": true, - "spqr": true, - "usernameChangeSyncMessage": true, - "optionalPhoneNumber": phonenumberless, - } +var signalCapabilities = map[string]any{ + "attachmentBackfill": true, + "spqr": true, + "usernameChangeSyncMessage": true, } +var signalCapabilitiesBody = exerrors.Must(json.Marshal(signalCapabilities)) + func (cli *Client) RegisterCapabilities(ctx context.Context) error { - body := exerrors.Must(json.Marshal(getSignalCapabilities(cli.Store.PNI == uuid.Nil))) - resp, err := cli.AuthedWS.SendRequest(ctx, http.MethodPut, "/v1/devices/capabilities", body, nil) + resp, err := cli.AuthedWS.SendRequest(ctx, http.MethodPut, "/v1/devices/capabilities", signalCapabilitiesBody, nil) if err != nil { return err } @@ -403,7 +365,6 @@ func confirmDevice( username string, password string, code string, - hasE164 bool, aciRegistrationID int, pniRegistrationID int, aciSignedPreKey *libsignalgo.SignedPreKeyRecord, @@ -420,47 +381,48 @@ func confirmDevice( return nil, fmt.Errorf("failed to encrypt device name: %w", err) } - ws, _, err := web.OpenWebsocket(ctx, (&url.URL{ + ws, resp, err := web.OpenWebsocket(ctx, (&url.URL{ Scheme: "wss", Host: web.APIHostname, Path: web.WebsocketPath, }).String()) if err != nil { - return nil, fmt.Errorf("failed to open websocket: %w", err) + log.Err(err).Any("resp", resp).Msg("error opening websocket") + return nil, err } defer ws.Close(websocket.StatusInternalError, "Websocket StatusInternalError") - aciSignedPreKeyJSON, err := SignedPreKeyToJSON(aciSignedPreKey) + aciSignedPreKeyJson, err := SignedPreKeyToJSON(aciSignedPreKey) if err != nil { return nil, fmt.Errorf("failed to convert signed ACI prekey to JSON: %w", err) } - aciPQLastResortPreKeyJSON, err := KyberPreKeyToJSON(aciPQLastResortPreKey) + pniSignedPreKeyJson, err := SignedPreKeyToJSON(pniSignedPreKey) + if err != nil { + return nil, fmt.Errorf("failed to convert signed PNI prekey to JSON: %w", err) + } + + aciPQLastResortPreKeyJson, err := KyberPreKeyToJSON(aciPQLastResortPreKey) if err != nil { return nil, fmt.Errorf("failed to convert ACI kyber last resort prekey to JSON: %w", err) } + pniPQLastResortPreKeyJson, err := KyberPreKeyToJSON(pniPQLastResortPreKey) + if err != nil { + return nil, fmt.Errorf("failed to convert PNI kyber last resort prekey to JSON: %w", err) + } - accountAttributes := map[string]any{ - "fetchesMessages": true, - "name": encryptedDeviceName, - "registrationId": aciRegistrationID, - "capabilities": getSignalCapabilities(!hasE164), - } data := map[string]any{ - "verificationCode": code, - "accountAttributes": accountAttributes, - "aciSignedPreKey": aciSignedPreKeyJSON, - "aciPqLastResortPreKey": aciPQLastResortPreKeyJSON, - } - if hasE164 { - accountAttributes["pniRegistrationId"] = pniRegistrationID - data["pniSignedPreKey"], err = SignedPreKeyToJSON(pniSignedPreKey) - if err != nil { - return nil, fmt.Errorf("failed to convert signed PNI prekey to JSON: %w", err) - } - data["pniPqLastResortPreKey"], err = KyberPreKeyToJSON(pniPQLastResortPreKey) - if err != nil { - return nil, fmt.Errorf("failed to convert PNI kyber last resort prekey to JSON: %w", err) - } + "verificationCode": code, + "accountAttributes": map[string]any{ + "fetchesMessages": true, + "name": encryptedDeviceName, + "registrationId": aciRegistrationID, + "pniRegistrationId": pniRegistrationID, + "capabilities": signalCapabilities, + }, + "aciSignedPreKey": aciSignedPreKeyJson, + "pniSignedPreKey": pniSignedPreKeyJson, + "aciPqLastResortPreKey": aciPQLastResortPreKeyJson, + "pniPqLastResortPreKey": pniPQLastResortPreKeyJson, } jsonBytes, err := json.Marshal(data) @@ -487,13 +449,13 @@ func confirmDevice( if err != nil { return nil, fmt.Errorf("failed to read from websocket after devices call: %w", err) } - zerolog.Ctx(ctx).Trace().Any("response", receivedMsg).Msg("Raw confirm device response") status := int(receivedMsg.GetResponse().GetStatus()) if status < 200 || status >= 300 { return nil, DeviceLinkError{StatusCode: status, Message: receivedMsg.GetResponse().GetMessage()} } + // unmarshal JSON response into ConfirmDeviceResponse deviceResp := ConfirmDeviceResponse{} err = json.Unmarshal(receivedMsg.Response.Body, &deviceResp) if err != nil { diff --git a/pkg/signalmeow/provisioning_cipher.go b/pkg/signalmeow/provisioning_cipher.go index 6ffde84..b20beb0 100644 --- a/pkg/signalmeow/provisioning_cipher.go +++ b/pkg/signalmeow/provisioning_cipher.go @@ -25,7 +25,6 @@ import ( "fmt" "io" - "go.mau.fi/util/exerrors" "golang.org/x/crypto/hkdf" "google.golang.org/protobuf/proto" @@ -43,7 +42,11 @@ func NewProvisioningCipher() *ProvisioningCipher { func (c *ProvisioningCipher) GetPublicKey() *libsignalgo.PublicKey { if c.keyPair == nil { - c.keyPair = exerrors.Must(libsignalgo.GenerateIdentityKeyPair()) + keyPair, err := libsignalgo.GenerateIdentityKeyPair() + if err != nil { + panic(fmt.Errorf("unable to generate key pair: %w", err)) + } + c.keyPair = keyPair } return c.keyPair.GetPublicKey() } @@ -69,8 +72,6 @@ func (c *ProvisioningCipher) Decrypt(env *signalpb.ProvisionEnvelope) (*signalpb body := env.GetBody() if body == nil { return nil, fmt.Errorf("no body: %v", env) - } else if len(body) < int(CIPHERTEXT_OFFSET+CIPHER_KEY_SIZE+MAC_SIZE) { - return nil, fmt.Errorf("body too short: %d", len(body)) } if body[0] != 1 { return nil, fmt.Errorf("invalid ProvisionMessage version: %v", body[0]) diff --git a/pkg/signalmeow/receiving.go b/pkg/signalmeow/receiving.go index dcc748a..0254a21 100644 --- a/pkg/signalmeow/receiving.go +++ b/pkg/signalmeow/receiving.go @@ -133,7 +133,7 @@ func (cli *Client) StartReceiveLoops(ctx context.Context) (chan SignalConnection callbackCount = 0 case nextTS := <-cbc: if callbackCount >= 4 && time.Since(writeCallbackTimer) > 1*time.Minute { - err := cli.Store.EventBuffer.DeleteBufferedEventsOlderThan(loopCtx, writeCallbackTimer) + err := cli.Store.EventBuffer.DeleteBufferedEventsOlderThan(ctx, writeCallbackTimer) if err != nil { log.Err(err).Msg("Failed to delete old buffered event hashes") } @@ -154,10 +154,7 @@ func (cli *Client) StartReceiveLoops(ctx context.Context) (chan SignalConnection case <-loopCtx.Done(): log.Info().Msg("Context done, exiting websocket status loop") return - case status, ok := <-authChan: - if !ok { - return - } + case status := <-authChan: lastAuthStatus = status currentStatus = status @@ -185,11 +182,7 @@ func (cli *Client) StartReceiveLoops(ctx context.Context) (chan SignalConnection default: } } - case status, ok := <-unauthChan: - if !ok { - unauthChan = nil - continue - } + case status := <-unauthChan: lastUnauthStatus = status currentStatus = status @@ -251,12 +244,8 @@ func (cli *Client) StartReceiveLoops(ctx context.Context) (chan SignalConnection } if statusToSend.Event != 0 && statusToSend.Event != cli.lastConnectionStatus.Event { log.Info().Any("status_to_send", statusToSend).Msg("Sending connection status") - select { - case <-loopCtx.Done(): - return - case statusChan <- statusToSend: - cli.lastConnectionStatus = statusToSend - } + statusChan <- statusToSend + cli.lastConnectionStatus = statusToSend } } }() @@ -269,16 +258,19 @@ func (cli *Client) StartReceiveLoops(ctx context.Context) (chan SignalConnection case <-loopCtx.Done(): return case <-initialConnectChan: - log.Info().Msg("Both websockets connected") - err = cli.RegisterCapabilities(loopCtx) + log.Info().Msg("Both websockets connected, sending contacts sync request") + err = cli.RegisterCapabilities(ctx) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to register capabilities") } else { zerolog.Ctx(ctx).Debug().Msg("Successfully registered capabilities") } - // Start loop to check for and upload more prekeys. Not included in loopWg - // as it may call StopReceiveLoops which waits for the wait group. - go cli.keyCheckLoop(loopCtx) + // Start loop to check for and upload more prekeys + cli.loopWg.Add(1) + go func() { + defer cli.loopWg.Done() + cli.keyCheckLoop(loopCtx) + }() // TODO hacky if cli.SyncContactsOnConnect { cli.SendContactSyncRequest(loopCtx) @@ -378,19 +370,6 @@ func (cli *Client) incomingAPIMessageHandler(ctx context.Context, req *signalpb. Str("envelope_type", signalpb.Envelope_Type_name[int32(envelope.GetType())]). Msg("Received envelope") - if envelope.GetType() == signalpb.Envelope_SERVER_DELIVERY_RECEIPT { - if sourceServiceID.Type == libsignalgo.ServiceIDTypeACI && sourceServiceID.UUID != uuid.Nil && !cli.handleEvent(&events.Receipt{ - Sender: sourceServiceID.UUID, - Content: &signalpb.ReceiptMessage{ - Type: signalpb.ReceiptMessage_DELIVERY.Enum(), - Timestamp: []uint64{envelope.GetClientTimestamp()}, - }, - }) { - return nil, ErrHandlerFailed - } - return &web.SimpleResponse{Status: 200}, nil - } - result := cli.decryptEnvelope(ctx, envelope, sourceServiceID, destinationServiceID) err = cli.handleDecryptedResult(ctx, result, envelope, destinationServiceID) @@ -554,7 +533,12 @@ func (cli *Client) handleDecryptedResult( if err != nil { log.Warn().Err(err).Msg("Failed to unmarshal decryption error message") } else { - go cli.tryHandleRetryRequest(ctx, result, dem) + go func() { + err := cli.handleRetryRequest(ctx, result, dem) + if err != nil { + log.Err(err).Msg("Failed to handle decryption error message in background") + } + }() } return } else if result.Unencrypted { @@ -629,7 +613,7 @@ func (cli *Client) handleDecryptedResult( return nil case *signalpb.Content_DataMessage: handlerSuccess, sendDeliveryReceipt = cli.incomingDataMessage( - ctx, content.DataMessage, theirServiceID.UUID, theirServiceID, envelope.GetServerTimestamp(), isBlocked, envelope, + ctx, content.DataMessage, theirServiceID.UUID, theirServiceID, envelope.GetServerTimestamp(), isBlocked, ) deliveryReceiptTS = content.DataMessage.GetTimestamp() case *signalpb.Content_EditMessage: @@ -664,7 +648,7 @@ func (cli *Client) handleDecryptedResult( }) } case *signalpb.Content_CallMessage: - if !isBlocked && (content.CallMessage.Offer != nil || (content.CallMessage.Hangup != nil && content.CallMessage.Hangup.GetType() != signalpb.CallMessage_Hangup_HANGUP_ACCEPTED)) { + if !isBlocked && (content.CallMessage.Offer != nil || content.CallMessage.Hangup != nil) { handlerSuccess = cli.handleEvent(&events.Call{ Info: events.MessageInfo{ Sender: theirServiceID.UUID, @@ -733,13 +717,13 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess log.Err(err).Msg("Failed to save device after receiving master key") } else { log.Info().Msg("Received master key") - cli.QueueStorageSync(ctx) + go cli.SyncStorage(ctx) } case *signalpb.SyncMessage_FetchLatest_: switch content.FetchLatest.GetType() { case signalpb.SyncMessage_FetchLatest_STORAGE_MANIFEST: log.Debug().Msg("Received storage manifest fetch latest notice") - cli.QueueStorageSync(ctx) + go cli.SyncStorage(ctx) default: log.Debug(). Stringer("fetch_latest_type", content.FetchLatest.GetType()). @@ -784,7 +768,7 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess log.Warn().Msg("sync message sent destination is nil") } else if syncSent.Message != nil { // TODO handle expiration start ts, and maybe the sync message ts? - cli.incomingDataMessage(ctx, syncSent.Message, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false, nil) + cli.incomingDataMessage(ctx, syncSent.Message, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false) } else if syncSent.EditMessage != nil { cli.incomingEditMessage(ctx, syncSent.EditMessage, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false) } @@ -829,10 +813,6 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess }) } } - case *signalpb.SyncMessage_ViewOnceOpen_: - handlerSuccess = cli.handleEvent(&events.ViewOnceOpen{ - SyncMessage_ViewOnceOpen: content.ViewOnceOpen, - }) case *signalpb.SyncMessage_DeleteForMe_: handlerSuccess = cli.handleEvent(&events.DeleteForMe{ Timestamp: envelope.GetClientTimestamp(), @@ -851,22 +831,6 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess log.Err(err).Msg("Failed to clear needs_pni_signature flag after message request accept") } } - responseType := content.MessageRequestResponse.GetType() - if aciUUID != uuid.Nil && (responseType == signalpb.SyncMessage_MessageRequestResponse_ACCEPT || - responseType == signalpb.SyncMessage_MessageRequestResponse_BLOCK || - responseType == signalpb.SyncMessage_MessageRequestResponse_BLOCK_AND_SPAM || - responseType == signalpb.SyncMessage_MessageRequestResponse_BLOCK_AND_DELETE) { - blocked := responseType != signalpb.SyncMessage_MessageRequestResponse_ACCEPT - _, err := cli.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aciUUID, uuid.Nil, func(recipient *types.Recipient) (bool, error) { - changed := recipient.Blocked != blocked - recipient.Blocked = blocked - return changed, nil - }) - if err != nil { - log.Err(err).Msg("Failed to update blocked state from message request response") - return false - } - } var groupID *libsignalgo.GroupIdentifier if len(content.MessageRequestResponse.GroupId) == libsignalgo.GroupIdentifierLength { groupID = (*libsignalgo.GroupIdentifier)(content.MessageRequestResponse.GroupId) @@ -922,7 +886,7 @@ func (cli *Client) handlePNISignatureMessage(ctx context.Context, sender libsign Stringer("aci", sender.UUID). Stringer("pni", pni). Msg("Fetching PNI identity for signature verification as it wasn't found in store") - err = cli.FetchAndProcessPreKey(ctx, pniServiceID, 1) + err = cli.FetchAndProcessPreKey(ctx, pniServiceID, 0) if err != nil { return fmt.Errorf("failed to fetch prekey for PNI %s after identity wasn't found in store: %w", pni, err) } else if pniIdentity, err = cli.Store.IdentityKeyStore.GetIdentityKey(ctx, pniServiceID); err != nil { @@ -968,12 +932,6 @@ func (cli *Client) incomingEditMessage( if editMessage.GetDataMessage().GetGroupV2() != nil { // Pull out the master key then store it ASAP - we should pass around GroupIdentifier groupMasterKeyBytes := editMessage.GetDataMessage().GetGroupV2().GetMasterKey() - if len(groupMasterKeyBytes) != libsignalgo.GroupMasterKeyLength { - zerolog.Ctx(ctx).Warn(). - Int("group_master_key_length", len(groupMasterKeyBytes)). - Msg("Unexpected group master key length") - return true, false - } masterKey := masterKeyFromBytes(libsignalgo.GroupMasterKey(groupMasterKeyBytes)) var err error groupID, err = cli.StoreMasterKey(ctx, masterKey) @@ -1004,20 +962,15 @@ func (cli *Client) incomingDataMessage( chatRecipient libsignalgo.ServiceID, serverTimestamp uint64, isBlocked bool, - envelope *signalpb.Envelope, ) (handlerSuccess, sendDeliveryReceipt bool) { // If there's a profile key, save it - if len(dataMessage.ProfileKey) == libsignalgo.ProfileKeyLength { + if dataMessage.ProfileKey != nil { profileKey := libsignalgo.ProfileKey(dataMessage.ProfileKey) err := cli.Store.RecipientStore.StoreProfileKey(ctx, messageSenderACI, profileKey) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("StoreProfileKey error") return } - } else if dataMessage.ProfileKey != nil { - zerolog.Ctx(ctx).Warn(). - Int("profile_key_length", len(dataMessage.ProfileKey)). - Msg("Unexpected profile key length") } // If it's a group message, get the ID and invalidate cache if necessary @@ -1026,12 +979,6 @@ func (cli *Client) incomingDataMessage( if dataMessage.GetGroupV2() != nil { // Pull out the master key then store it ASAP - we should pass around GroupIdentifier groupMasterKeyBytes := dataMessage.GetGroupV2().GetMasterKey() - if len(groupMasterKeyBytes) != libsignalgo.GroupMasterKeyLength { - zerolog.Ctx(ctx).Warn(). - Int("group_master_key_length", len(groupMasterKeyBytes)). - Msg("Unexpected group master key length") - return true, false - } masterKey := masterKeyFromBytes(libsignalgo.GroupMasterKey(groupMasterKeyBytes)) var err error groupID, err = cli.StoreMasterKey(ctx, masterKey) @@ -1051,13 +998,6 @@ func (cli *Client) incomingDataMessage( GroupRevision: groupRevision, ServerTimestamp: serverTimestamp, } - if envelope != nil { - guid, _ := ParseStringOrBinaryUUID(envelope.GetServerGuid(), envelope.GetServerGuidBinary()) - if guid != uuid.Nil { - evtInfo.ServerGUID = guid.String() - } - evtInfo.ReportingToken = envelope.GetReportSpamToken() - } // Hacky special case for group calls to cache the state if dataMessage.GroupCallUpdate != nil { isRinging := cli.GroupCache.UpdateActiveCall(groupID, dataMessage.GroupCallUpdate.GetEraId()) diff --git a/pkg/signalmeow/receiving_decrypt.go b/pkg/signalmeow/receiving_decrypt.go index 8ad3e15..7d3c1a3 100644 --- a/pkg/signalmeow/receiving_decrypt.go +++ b/pkg/signalmeow/receiving_decrypt.go @@ -71,15 +71,12 @@ func (cli *Client) decryptEnvelope( } var result *DecryptionResult var bundleType string - var ciphertextType libsignalgo.CiphertextMessageType if *envelope.Type == signalpb.Envelope_PREKEY_MESSAGE { result, err = cli.prekeyDecrypt(ctx, destinationServiceID, sender, envelope.Content, envelope.GetServerTimestamp()) bundleType = "prekey bundle" - ciphertextType = libsignalgo.CiphertextMessageTypePreKey } else { result, err = cli.decryptCiphertextEnvelope(ctx, destinationServiceID, sender, envelope.Content, envelope.GetServerTimestamp()) bundleType = "ciphertext" - ciphertextType = libsignalgo.CiphertextMessageTypeWhisper } if err != nil { return DecryptionResult{ @@ -87,7 +84,7 @@ func (cli *Client) decryptEnvelope( Err: fmt.Errorf("failed to decrypt %s envelope: %w", bundleType, err), Retriable: true, // TODO should these ever be not retriable? Ciphertext: envelope.Content, - CiphertextType: ciphertextType, + CiphertextType: libsignalgo.CiphertextMessageType(envelope.GetType()), } } return *result @@ -107,6 +104,9 @@ func (cli *Client) decryptEnvelope( Unencrypted: true, } + case signalpb.Envelope_SERVER_DELIVERY_RECEIPT: + return DecryptionResult{Err: fmt.Errorf("server delivery receipt envelopes are not yet supported")} + case signalpb.Envelope_UNKNOWN: return DecryptionResult{Err: fmt.Errorf("unknown envelope type")} @@ -328,20 +328,14 @@ func (cli *Client) decryptUnidentifiedSenderEnvelope(ctx context.Context, destin return result, fmt.Errorf("decrypting to USMC returned nil") } - senderCertificate, err := usmc.GetSenderCertificate() - if err != nil { - return result, fmt.Errorf("failed to get sender certificate: %w", err) - } - valid, err := senderCertificate.Validate(libsignalgo.ProdTrustRoots, envelope.GetServerTimestamp()) - if err != nil { - return result, fmt.Errorf("failed to validate sender certificate: %w", err) - } else if !valid { - return result, fmt.Errorf("sender certificate is not valid") - } messageType, err := usmc.GetMessageType() if err != nil { return result, fmt.Errorf("failed to get message type: %w", err) } + senderCertificate, err := usmc.GetSenderCertificate() + if err != nil { + return result, fmt.Errorf("failed to get sender certificate: %w", err) + } contentHint, err := usmc.GetContentHint() if err != nil { return result, fmt.Errorf("failed to get content hint: %w", err) @@ -359,9 +353,6 @@ func (cli *Client) decryptUnidentifiedSenderEnvelope(ctx context.Context, destin if err != nil { return result, fmt.Errorf("failed to get sender device ID: %w", err) } - if senderUUID == cli.Store.ACI && senderDeviceID == uint32(cli.Store.DeviceID) { - return result, fmt.Errorf("received unidentified sender envelope from self") - } senderAddress, err := libsignalgo.NewACIServiceID(senderUUID).Address(uint(senderDeviceID)) if err != nil { return result, fmt.Errorf("failed to create sender address: %w", err) diff --git a/pkg/signalmeow/retry.go b/pkg/signalmeow/retry.go index ed4c36b..0faf04a 100644 --- a/pkg/signalmeow/retry.go +++ b/pkg/signalmeow/retry.go @@ -20,12 +20,10 @@ import ( "context" "fmt" "math/rand/v2" - "runtime/debug" "slices" "time" "github.com/rs/zerolog" - "go.mau.fi/util/exerrors" "go.mau.fi/util/random" "go.mau.fi/mautrix-signal/pkg/libsignalgo" @@ -82,24 +80,6 @@ func (cli *Client) sendRetryRequest(ctx context.Context, result DecryptionResult return nil } -func (cli *Client) tryHandleRetryRequest( - ctx context.Context, - result DecryptionResult, - dem *libsignalgo.DecryptionErrorMessage, -) { - defer func() { - if v := recover(); v != nil { - zerolog.Ctx(ctx).Err(exerrors.RecoverToError(v)). - Bytes(zerolog.ErrorStackFieldName, debug.Stack()). - Msg("Panic in retry request handler") - } - }() - err := cli.handleRetryRequest(ctx, result, dem) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to handle decryption error message in background") - } -} - func (cli *Client) handleRetryRequest( ctx context.Context, result DecryptionResult, @@ -161,13 +141,7 @@ func (cli *Client) handleRetryRequest( if err != nil { return fmt.Errorf("failed to get own address: %w", err) } - if ski == nil { - zerolog.Ctx(ctx).Debug(). - Stringer("group_id", result.GroupID). - Stringer("sender_service_id", serviceID). - Uint("sender_device_id", deviceID). - Msg("No sender key info for group for retry receipt") - } else if slices.Contains(ski.SharedWith[serviceID], int(deviceID)) { + if slices.Contains(ski.SharedWith[serviceID], int(deviceID)) { skdm, err := libsignalgo.NewSenderKeyDistributionMessage(ctx, myAddress, ski.DistributionID, cli.Store.SenderKeyStore) if err != nil { return fmt.Errorf("failed to create sender key distribution message: %w", err) diff --git a/pkg/signalmeow/senderkey.go b/pkg/signalmeow/senderkey.go index 322fcc8..6e2c2da 100644 --- a/pkg/signalmeow/senderkey.go +++ b/pkg/signalmeow/senderkey.go @@ -96,14 +96,8 @@ func (cli *Client) sendToGroupWithSenderKey( SuccessfullySentTo: make([]SuccessfulSendResult, 0), FailedToSendTo: make([]FailedSendResult, 0), } + groupIDStr := types.GroupIdentifier(groupID.String()) - - if retries == 0 { - for _, recipientID := range allRecipients { - cli.addSendCache(recipientID, groupIDStr, messageTimestamp, content) - } - } - deviceIDs, senderKeyRecipients, fallbackRecipients := cli.getDevicesIDs(ctx, allRecipients, sec, result) if len(senderKeyRecipients) == 0 { doUnlock() @@ -136,7 +130,6 @@ func (cli *Client) sendToGroupWithSenderKey( log.Debug(). Any("removed_devices", removedDevices). Msg("Resetting sender key due to recipient device changes") - ski.SharedWith = make(map[libsignalgo.ServiceID][]int) devicesAddedTo = slices.Collect(maps.Keys(deviceIDs)) err = cli.Store.SenderKeyStore.DeleteSenderKey(ctx, myAddress, ski.DistributionID) if err != nil { @@ -197,6 +190,9 @@ func (cli *Client) sendToGroupWithSenderKey( } return nil, err } + for recipientID := range ski.SharedWith { + cli.addSendCache(recipientID, groupIDStr, messageTimestamp, content) + } header := http.Header{} header.Set("Content-Type", string(web.ContentTypeMultiRecipientMessage)) if sec.SendEndorsement != nil { @@ -221,8 +217,8 @@ func (cli *Client) sendToGroupWithSenderKey( header.Set("Unidentified-Access-Key", xak.String()) } path := fmt.Sprintf( - "/v1/messages/multi_recipient?ts=%d&urgent=%t&online=%t", - messageTimestamp, isUrgent(content), content.GetTypingMessage() != nil, + "/v1/messages/multi_recipient?ts=%d&urgent=%t&online=false", + messageTimestamp, isUrgent(content), ) log.Debug(). Any("recipients", ski.SharedWith). @@ -249,7 +245,7 @@ func (cli *Client) sendToGroupWithSenderKey( cli.Store.RecipientStore.MarkUnregistered(ctx, serviceID, true) result.FailedToSendTo = append(result.FailedToSendTo, FailedSendResult{ Recipient: serviceID, - Error: fmt.Errorf("%w (multi-recipient send returned 404)", ErrUnregisteredUser), + Error: fmt.Errorf("multi-recipient send 404"), }) } else { result.SuccessfullySentTo = append(result.SuccessfullySentTo, SuccessfulSendResult{ @@ -277,13 +273,6 @@ func (cli *Client) sendToGroupWithSenderKey( doUnlock() // Retry recursively after fixing device lists return cli.sendToGroupWithSenderKey(ctx, groupID, allRecipients, sec, content, messageTimestamp, retries+1) - case 413, 428, 429: - return nil, fmt.Errorf("%w (multi-recipient send returned %d)", ErrRateLimited, resp.GetStatus()) - case 500, 503: - log.Warn().Uint32("status_code", resp.GetStatus()). - Msg("Multi-recipient send failed with server error, retrying") - doUnlock() - return cli.sendToGroupWithSenderKey(ctx, groupID, allRecipients, sec, content, messageTimestamp, retries+1) default: return nil, fmt.Errorf("unexpected status code %d in multi-recipient send", resp.GetStatus()) } diff --git a/pkg/signalmeow/sending.go b/pkg/signalmeow/sending.go index dce4eea..8852197 100644 --- a/pkg/signalmeow/sending.go +++ b/pkg/signalmeow/sending.go @@ -36,8 +36,6 @@ import ( "google.golang.org/protobuf/proto" "go.mau.fi/mautrix-signal/pkg/libsignalgo" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/common" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/messages" "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/signalpb" "go.mau.fi/mautrix-signal/pkg/signalmeow/types" "go.mau.fi/mautrix-signal/pkg/signalmeow/web" @@ -297,20 +295,6 @@ type GroupMessageSendResult struct { FailedToSendTo []FailedSendResult } -// FailureError returns an error from FailedToSendTo, preferring errors other than ErrUnregisteredUser, -// so that a permanent failure is only reported if every recipient failed permanently. -func (r *GroupMessageSendResult) FailureError() error { - if len(r.FailedToSendTo) == 0 { - return nil - } - for _, failure := range r.FailedToSendTo { - if !errors.Is(failure.Error, ErrUnregisteredUser) { - return failure.Error - } - } - return r.FailedToSendTo[len(r.FailedToSendTo)-1].Error -} - type SendResult interface { isSendResult() } @@ -326,10 +310,6 @@ func WrapSyncMessage(content *signalpb.SyncMessage) *signalpb.Content { } func syncSentMessage(sent *signalpb.SyncMessage_Sent) *signalpb.Content { - if sent.Message.GetIsViewOnce() { - sent.Message = proto.Clone(sent.Message).(*signalpb.DataMessage) - sent.Message.Attachments = nil - } return WrapSyncMessage(&signalpb.SyncMessage{ Content: &signalpb.SyncMessage_Sent_{ Sent: sent, @@ -404,19 +384,7 @@ func syncMessageFromSoloEditMessage(editMessage *signalpb.EditMessage, result Su } func syncMessageFromReadReceiptMessage(ctx context.Context, receiptMessage *signalpb.ReceiptMessage, messageSender libsignalgo.ServiceID) *signalpb.Content { - if messageSender.Type != libsignalgo.ServiceIDTypeACI { - return nil - } - if receiptMessage.GetType() == signalpb.ReceiptMessage_VIEWED && len(receiptMessage.Timestamp) == 1 { - return WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_ViewOnceOpen_{ - ViewOnceOpen: &signalpb.SyncMessage_ViewOnceOpen{ - SenderAciBinary: messageSender.UUID[:], - Timestamp: proto.Uint64(receiptMessage.Timestamp[0]), - }, - }, - }) - } else if receiptMessage.GetType() != signalpb.ReceiptMessage_READ { + if *receiptMessage.Type != signalpb.ReceiptMessage_READ || messageSender.Type != libsignalgo.ServiceIDTypeACI { return nil } read := []*signalpb.SyncMessage_Read{} @@ -444,7 +412,6 @@ func (cli *Client) SendContactSyncRequest(ctx context.Context) error { } cli.LastContactRequestTime = time.Now() - log.Info().Msg("Sending contact sync request") _, err := cli.sendContent(ctx, cli.Store.ACIServiceID(), uint64(time.Now().UnixMilli()), WrapSyncMessage(&signalpb.SyncMessage{ Content: &signalpb.SyncMessage_Request_{ Request: &signalpb.SyncMessage_Request{ @@ -672,7 +639,8 @@ func (cli *Client) sendToGroup( return result, nil // I only sent to myself } if len(result.SuccessfullySentTo) == 0 { - return nil, fmt.Errorf("failed to send to any group members: %w", result.FailureError()) + lastError := result.FailedToSendTo[len(result.FailedToSendTo)-1].Error + return nil, fmt.Errorf("failed to send to any group members: %w", lastError) } return result, nil @@ -757,8 +725,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv if content.GetDataMessage().GetFlags() == uint32(signalpb.DataMessage_PROFILE_KEY_UPDATE) { recipientData.Whitelisted = ptr.Ptr(true) } - needsPNISignature := recipientID.Type == libsignalgo.ServiceIDTypeACI && recipientData.NeedsPNISignature && - cli.Store.PNI != uuid.Nil + needsPNISignature := recipientID.Type == libsignalgo.ServiceIDTypeACI && recipientData.NeedsPNISignature if needsPNISignature && !isTypingOrReceipt && content.PniSignatureMessage == nil { zerolog.Ctx(ctx).Debug(). Stringer("recipient", recipientID). @@ -786,7 +753,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv if recipientData.ProbablyMessageRequest() && isTypingOrReceipt { zerolog.Ctx(ctx).Debug().Msg("Not sending typing/receipt message to recipient as needs PNI signature flag is set") res := SuccessfulSendResult{Recipient: recipientID} - if content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_READ || content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_VIEWED { + if content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_READ { // Still send sync messages for read receipts cli.sendSyncCopy(ctx, content, messageTimestamp, &res) } @@ -795,7 +762,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv zerolog.Ctx(ctx).Debug().Msg("Not sending typing message as typing indicators are disabled") res := SuccessfulSendResult{Recipient: recipientID} return SendMessageResult{WasSuccessful: true, SuccessfulSendResult: res} - } else if (content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_READ || content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_VIEWED) && cli.Store.DeviceData.AccountRecord != nil && !cli.Store.DeviceData.AccountRecord.GetReadReceipts() { + } else if content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_READ && cli.Store.DeviceData.AccountRecord != nil && !cli.Store.DeviceData.AccountRecord.GetReadReceipts() { zerolog.Ctx(ctx).Debug().Msg("Not sending receipt message as read receipts are disabled") res := SuccessfulSendResult{Recipient: recipientID} // Still send sync messages for read receipts @@ -964,7 +931,7 @@ func (cli *Client) sendContent( outgoingMessages := MyMessages{ Timestamp: messageTimestamp, - Online: content.GetTypingMessage() != nil, + Online: false, Urgent: isUrgent(content), Messages: messages, } @@ -1050,8 +1017,6 @@ func (cli *Client) sendContent( } cli.Store.RecipientStore.MarkUnregistered(ctx, recipient, true) return sentUnidentified, fmt.Errorf("%w (send returned 404)", ErrUnregisteredUser) - } else if *response.Status == 413 || *response.Status == 429 { - return sentUnidentified, fmt.Errorf("%w (send returned %d)", ErrRateLimited, *response.Status) } else if *response.Status != 200 { return sentUnidentified, fmt.Errorf("unexpected status code while sending: %d", *response.Status) } @@ -1204,21 +1169,5 @@ func (cli *Client) handle428(ctx context.Context, recipient libsignalgo.ServiceI // } // } //} - return fmt.Errorf("%w (send returned 428, retry after %ds)", ErrRateLimited, retryAfterSeconds) -} - -func (cli *Client) ReportSpam(ctx context.Context, aci uuid.UUID, serverGUID string, token []byte) error { - if cli.GRPC == nil { - return fmt.Errorf("gRPC client is not connected") - } - guid, err := uuid.Parse(serverGUID) - if err != nil { - return fmt.Errorf("invalid message server GUID: %w", err) - } - _, err = cli.GRPC.Messages.ReportMessage(ctx, &messages.ReportMessageRequest{ - SourceServiceIdentifier: &common.ServiceIdentifier{IdentityType: common.IdentityType_IDENTITY_TYPE_ACI, Uuid: aci[:]}, - MessageGuid: guid[:], - ReportSpamToken: token, - }) - return err + return fmt.Errorf("got 428 error") } diff --git a/pkg/signalmeow/sticker.go b/pkg/signalmeow/sticker.go index f50fafc..e1364b1 100644 --- a/pkg/signalmeow/sticker.go +++ b/pkg/signalmeow/sticker.go @@ -72,7 +72,7 @@ func downloadStickerData(ctx context.Context, path string, packKey []byte) ([]by if err != nil { return nil, fmt.Errorf("failed to make request: %w", err) } else if resp.StatusCode != http.StatusOK { - return nil, fmt.Errorf("unexpected status code: %w", web.HTTPStatusError{StatusCode: resp.StatusCode, Status: resp.Status}) + return nil, fmt.Errorf("unexpected status code %d", resp.StatusCode) } else if body, err = io.ReadAll(resp.Body); err != nil { return nil, fmt.Errorf("failed to read response: %w", err) } else if decrypted, err = decryptSticker(packKey, body); err != nil { diff --git a/pkg/signalmeow/storageservice.go b/pkg/signalmeow/storageservice.go index f3b9aac..df26a8d 100644 --- a/pkg/signalmeow/storageservice.go +++ b/pkg/signalmeow/storageservice.go @@ -42,43 +42,21 @@ import ( "go.mau.fi/mautrix-signal/pkg/signalmeow/web" ) -// A sync that is already waiting to start will see whatever change triggered this call. -func (cli *Client) QueueStorageSync(ctx context.Context) { - if cli.storageSyncQueued.CompareAndSwap(false, true) { - go cli.StorageSync(ctx) - } -} - -func (cli *Client) StorageSync(ctx context.Context) { - cli.storageSyncLock.Lock() - defer cli.storageSyncLock.Unlock() - cli.storageSyncQueued.Store(false) +func (cli *Client) SyncStorage(ctx context.Context) { log := cli.Log.With().Str("action", "sync storage").Logger() ctx = log.WithContext(ctx) - update, err := cli.FetchStorage(ctx, cli.Store.MasterKey, cli.storageVersion, cli.storageRecords) + // TODO only fetch changed entries + update, err := cli.FetchStorage(ctx, cli.Store.MasterKey, 0, nil) if err != nil { log.Err(err).Msg("Failed to fetch storage") return - } else if update == nil { - log.Debug().Uint64("version", cli.storageVersion).Msg("Storage manifest is already up to date") - return } err = cli.Store.DoContactTxn(ctx, func(ctx context.Context) error { return cli.processStorageInTxn(ctx, update) }) if err != nil { log.Err(err).Msg("Failed to process storage update") - return } - log.Debug(). - Uint64("previous_version", cli.storageVersion). - Uint64("version", update.Version). - Int("new_records", len(update.NewRecords)). - Int("removed_records", len(update.RemovedRecords)). - Int("missing_records", len(update.MissingRecords)). - Msg("Processed storage update") - cli.storageVersion = update.Version - cli.storageRecords = update.KnownRecords } func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdate) error { @@ -113,9 +91,8 @@ func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdat recipient.Profile.Name = strings.TrimSpace(fmt.Sprintf("%s %s", contact.GivenName, contact.FamilyName)) } if contact.SystemGivenName != "" || contact.SystemFamilyName != "" { - newContactName := strings.TrimSpace(fmt.Sprintf("%s %s", contact.SystemGivenName, contact.SystemFamilyName)) - changed = changed || recipient.ContactName != newContactName - recipient.ContactName = newContactName + changed = true + recipient.ContactName = strings.TrimSpace(fmt.Sprintf("%s %s", contact.SystemGivenName, contact.SystemFamilyName)) } newNickname := "" if contact.Nickname != nil { @@ -133,7 +110,7 @@ func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdat changed = true recipient.Blocked = contact.Blocked } - if !ptr.Val(recipient.Whitelisted) && (recipient.Whitelisted == nil || contact.Whitelisted) { + if !ptr.Val(recipient.Whitelisted) { changed = true recipient.Whitelisted = &contact.Whitelisted } @@ -171,9 +148,7 @@ func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdat return fmt.Errorf("failed to save device after receiving account record: %w", err) } log.Debug().Msg("Saved device after receiving account record") - case *signalpb.StorageRecord_GroupV1, *signalpb.StorageRecord_StoryDistributionList, *signalpb.StorageRecord_StickerPack, - *signalpb.StorageRecord_CallLink, *signalpb.StorageRecord_ChatFolder, *signalpb.StorageRecord_NotificationProfile, - *signalpb.StorageRecord_FavoriteSticker: + case *signalpb.StorageRecord_GroupV1, *signalpb.StorageRecord_StoryDistributionList: // irrelevant data default: log.Warn().Type("type", data).Str("item_id", record.StorageID).Msg("Unknown storage record type") @@ -193,7 +168,6 @@ type StorageUpdate struct { NewRecords []*DecryptedStorageRecord RemovedRecords []string MissingRecords []string - KnownRecords []string } func (cli *Client) FetchStorage(ctx context.Context, masterKey []byte, currentVersion uint64, existingKeys []string) (*StorageUpdate, error) { @@ -205,7 +179,6 @@ func (cli *Client) FetchStorage(ctx context.Context, masterKey []byte, currentVe return nil, nil } removedKeys := make([]string, 0) - knownKeys := make([]string, 0, len(manifest.GetIdentifiers())) newKeys := manifestRecordToMap(manifest.GetIdentifiers()) slices.Sort(existingKeys) existingKeys = slices.Compact(existingKeys) @@ -213,7 +186,6 @@ func (cli *Client) FetchStorage(ctx context.Context, masterKey []byte, currentVe _, isStillThere := newKeys[key] if isStillThere { delete(newKeys, key) - knownKeys = append(knownKeys, key) } else { removedKeys = append(removedKeys, key) } @@ -223,15 +195,11 @@ func (cli *Client) FetchStorage(ctx context.Context, masterKey []byte, currentVe if err != nil { return nil, err } - for _, record := range newRecords { - knownKeys = append(knownKeys, record.StorageID) - } return &StorageUpdate{ Version: manifest.GetVersion(), NewRecords: newRecords, RemovedRecords: removedKeys, MissingRecords: missingKeys, - KnownRecords: knownKeys, }, nil } diff --git a/pkg/signalmeow/store/container.go b/pkg/signalmeow/store/container.go index ed66300..d1c670a 100644 --- a/pkg/signalmeow/store/container.go +++ b/pkg/signalmeow/store/container.go @@ -38,7 +38,7 @@ SELECT aci_uuid, aci_identity_key_pair, registration_id, pni_uuid, pni_identity_key_pair, pni_registration_id, device_id, number, password, master_key, account_record, - account_entropy_pool, ephemeral_backup_key, media_root_backup_key, auth_credential_salt + account_entropy_pool, ephemeral_backup_key, media_root_backup_key FROM signalmeow_device ` @@ -58,7 +58,7 @@ func (c *Container) scanDevice(row dbutil.Scannable) (*Device, error) { &device.ACI, &aciIdentityKeyPair, &device.ACIRegistrationID, &device.PNI, &pniIdentityKeyPair, &device.PNIRegistrationID, &device.DeviceID, &device.Number, &device.Password, &device.MasterKey, &accountRecordBytes, - &accountEntropyPool, &ephemeralBackupKey, &mediaRootBackupKey, &device.AuthCredentialSalt, + &accountEntropyPool, &ephemeralBackupKey, &mediaRootBackupKey, ) if err != nil { return nil, fmt.Errorf("failed to scan session: %w", err) @@ -67,13 +67,14 @@ func (c *Container) scanDevice(row dbutil.Scannable) (*Device, error) { if err != nil { return nil, fmt.Errorf("failed to deserialize ACI identity key pair: %w", err) } + device.PNIIdentityKeyPair, err = libsignalgo.DeserializeIdentityKeyPair(pniIdentityKeyPair) + if err != nil { + return nil, fmt.Errorf("failed to deserialize PNI identity key pair: %w", err) + } if len(device.MasterKey) == 0 { device.MasterKey = nil } - if len(device.AuthCredentialSalt) == 0 { - device.AuthCredentialSalt = nil - } if len(accountRecordBytes) > 0 { device.AccountRecord = &signalpb.AccountRecord{} err = proto.Unmarshal(accountRecordBytes, device.AccountRecord) @@ -84,41 +85,22 @@ func (c *Container) scanDevice(row dbutil.Scannable) (*Device, error) { device.AccountEntropyPool = libsignalgo.AccountEntropyPool(accountEntropyPool.String) device.EphemeralBackupKey = libsignalgo.BytesToBackupKey(ephemeralBackupKey) device.MediaRootBackupKey = libsignalgo.BytesToBackupKey(mediaRootBackupKey) - baseStore := &sqlStore{ - Container: c, - AccountID: device.ACI, - aciIdentity: libsignalgo.NewIdentityKeyFromPublicKey(device.ACIIdentityKeyPair.GetPublicKey()), - blockCache: make(map[uuid.UUID]bool), - } + baseStore := &sqlStore{Container: c, AccountID: device.ACI, blockCache: make(map[uuid.UUID]bool)} aciStore := &scopedSQLStore{Container: c, AccountID: device.ACI, ServiceID: device.ACIServiceID()} - baseStore.aciStore = aciStore + pniStore := &scopedSQLStore{Container: c, AccountID: device.ACI, ServiceID: device.PNIServiceID()} device.ACIPreKeyStore = aciStore + device.PNIPreKeyStore = pniStore device.ACISessionStore = aciStore + device.PNISessionStore = pniStore device.ACIIdentityStore = &sqlIdentityStore{ sqlStore: baseStore, OwnKeyPair: device.ACIIdentityKeyPair, LocalRegistrationID: uint32(device.ACIRegistrationID), } - if device.PNI != uuid.Nil { - pniStore := &scopedSQLStore{Container: c, AccountID: device.ACI, ServiceID: device.PNIServiceID()} - device.PNIIdentityKeyPair, err = libsignalgo.DeserializeIdentityKeyPair(pniIdentityKeyPair) - if err != nil { - return nil, fmt.Errorf("failed to deserialize PNI identity key pair: %w", err) - } - device.PNIPreKeyStore = pniStore - device.PNISessionStore = pniStore - device.PNIIdentityStore = &sqlIdentityStore{ - sqlStore: baseStore, - OwnKeyPair: device.PNIIdentityKeyPair, - LocalRegistrationID: uint32(device.PNIRegistrationID), - } - baseStore.pniStore = pniStore - baseStore.pniIdentity = libsignalgo.NewIdentityKeyFromPublicKey(device.PNIIdentityKeyPair.GetPublicKey()) - } else { - var errPNIlessAccount = fmt.Errorf("account %s has no PNI identity set", device.ACI) - device.PNIPreKeyStore = &noopStore{Error: errPNIlessAccount} - device.PNISessionStore = &noopStore{Error: errPNIlessAccount} - device.PNIIdentityStore = &noopStore{Error: errPNIlessAccount} + device.PNIIdentityStore = &sqlIdentityStore{ + sqlStore: baseStore, + OwnKeyPair: device.PNIIdentityKeyPair, + LocalRegistrationID: uint32(device.PNIRegistrationID), } device.IdentityKeyStore = baseStore device.SenderKeyStore = baseStore @@ -174,9 +156,9 @@ const ( aci_uuid, aci_identity_key_pair, registration_id, pni_uuid, pni_identity_key_pair, pni_registration_id, device_id, number, password, master_key, account_record, - account_entropy_pool, ephemeral_backup_key, media_root_backup_key, auth_credential_salt + account_entropy_pool, ephemeral_backup_key, media_root_backup_key ) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) ON CONFLICT (aci_uuid) DO UPDATE SET aci_identity_key_pair=excluded.aci_identity_key_pair, registration_id=excluded.registration_id, @@ -190,8 +172,7 @@ const ( account_record=excluded.account_record, account_entropy_pool=excluded.account_entropy_pool, ephemeral_backup_key=excluded.ephemeral_backup_key, - media_root_backup_key=excluded.media_root_backup_key, - auth_credential_salt=excluded.auth_credential_salt + media_root_backup_key=excluded.media_root_backup_key ` deleteDeviceQuery = `DELETE FROM signalmeow_device WHERE aci_uuid=$1` ) @@ -209,13 +190,10 @@ func (c *Container) PutDevice(ctx context.Context, device *DeviceData) error { zerolog.Ctx(ctx).Err(err).Msg("failed to serialize aci identity key pair") return err } - pniIdentityKeyPair := []byte{} - if device.PNIIdentityKeyPair != nil { - pniIdentityKeyPair, err = device.PNIIdentityKeyPair.Serialize() - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("failed to serialize pni identity key pair") - return err - } + pniIdentityKeyPair, err := device.PNIIdentityKeyPair.Serialize() + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("failed to serialize pni identity key pair") + return err } var accountRecordBytes []byte if device.AccountRecord != nil { @@ -230,7 +208,6 @@ func (c *Container) PutDevice(ctx context.Context, device *DeviceData) error { device.DeviceID, device.Number, device.Password, device.MasterKey, accountRecordBytes, device.AccountEntropyPool, device.EphemeralBackupKey.Slice(), device.MediaRootBackupKey.Slice(), - device.AuthCredentialSalt, ) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("failed to insert device") diff --git a/pkg/signalmeow/store/device.go b/pkg/signalmeow/store/device.go index dd8d6f9..3b6ebe5 100644 --- a/pkg/signalmeow/store/device.go +++ b/pkg/signalmeow/store/device.go @@ -21,14 +21,6 @@ type sqlStore struct { blockCacheLock sync.RWMutex blockCache map[uuid.UUID]bool - - aciStore *scopedSQLStore - pniStore *scopedSQLStore - - aciIdentity *libsignalgo.IdentityKey - pniIdentity *libsignalgo.IdentityKey - - identityChangeCallback func(libsignalgo.ServiceID) } type scopedSQLStore struct { @@ -52,7 +44,6 @@ type DeviceData struct { AccountEntropyPool libsignalgo.AccountEntropyPool EphemeralBackupKey *libsignalgo.BackupKey MediaRootBackupKey *libsignalgo.BackupKey - AuthCredentialSalt []byte } func (d *DeviceData) ACIServiceID() libsignalgo.ServiceID { @@ -60,9 +51,6 @@ func (d *DeviceData) ACIServiceID() libsignalgo.ServiceID { } func (d *DeviceData) PNIServiceID() libsignalgo.ServiceID { - if d.PNI == uuid.Nil { - return libsignalgo.EmptyServiceID - } return libsignalgo.NewPNIServiceID(d.PNI) } @@ -119,10 +107,6 @@ func (d *Device) DoDecryptionTxn(ctx context.Context, fn func(context.Context) e return d.db.DoTxn(ctx, nil, fn) } -func (d *Device) SetIdentityChangeCallback(callback func(libsignalgo.ServiceID)) { - d.sqlStore.identityChangeCallback = callback -} - func (d *Device) ClearDeviceKeys(ctx context.Context) error { // We need to clear out keys associated with the Signal device that no longer has valid credentials if d == nil { @@ -152,7 +136,7 @@ func (d *Device) ClearPassword(ctx context.Context) error { func (d *Device) PreKeyStore(serviceID libsignalgo.ServiceID) PreKeyStore { if serviceID == d.ACIServiceID() { return d.ACIPreKeyStore - } else if d.PNI != uuid.Nil && serviceID == d.PNIServiceID() { + } else if serviceID == d.PNIServiceID() { return d.PNIPreKeyStore } return nil @@ -161,7 +145,7 @@ func (d *Device) PreKeyStore(serviceID libsignalgo.ServiceID) PreKeyStore { func (d *Device) SessionStore(serviceID libsignalgo.ServiceID) SessionStore { if serviceID == d.ACIServiceID() { return d.ACISessionStore - } else if d.PNI != uuid.Nil && serviceID == d.PNIServiceID() { + } else if serviceID == d.PNIServiceID() { return d.PNISessionStore } return nil @@ -170,7 +154,7 @@ func (d *Device) SessionStore(serviceID libsignalgo.ServiceID) SessionStore { func (d *Device) IdentityStore(serviceID libsignalgo.ServiceID) libsignalgo.IdentityKeyStore { if serviceID == d.ACIServiceID() { return d.ACIIdentityStore - } else if d.PNI != uuid.Nil && serviceID == d.PNIServiceID() { + } else if serviceID == d.PNIServiceID() { return d.PNIIdentityStore } return nil diff --git a/pkg/signalmeow/store/identity_store.go b/pkg/signalmeow/store/identity_store.go index 6336f74..3b2435d 100644 --- a/pkg/signalmeow/store/identity_store.go +++ b/pkg/signalmeow/store/identity_store.go @@ -22,7 +22,6 @@ import ( "errors" "fmt" - "github.com/rs/zerolog" "go.mau.fi/util/dbutil" "go.mau.fi/mautrix-signal/pkg/libsignalgo" @@ -79,53 +78,28 @@ func (s *sqlStore) SaveIdentityKey(ctx context.Context, theirServiceID libsignal if err != nil { return false, fmt.Errorf("failed to serialize identity key: %w", err) } + oldKey, err := scanIdentityKey(s.db.QueryRow(ctx, getIdentityKeyQuery, s.AccountID, theirServiceID)) + if err != nil { + return false, fmt.Errorf("failed to get old identity key: %w", err) + } var replacing bool - err = s.db.DoTxn(ctx, nil, func(ctx context.Context) error { - oldKey, err := scanIdentityKey(s.db.QueryRow(ctx, getIdentityKeyQuery, s.AccountID, theirServiceID)) + if oldKey != nil { + equal, err := oldKey.Equal(identityKey) if err != nil { - return fmt.Errorf("failed to get old identity key: %w", err) + return false, fmt.Errorf("failed to compare new and old identity keys: %w", err) } - if oldKey != nil { - equal, err := oldKey.Equal(identityKey) - if err != nil { - return fmt.Errorf("failed to compare new and old identity keys: %w", err) - } - // We are replacing the old key if the old key exists, and it is not equal to the new key - replacing = !equal - } - _, err = s.db.Exec(ctx, insertIdentityKeyQuery, s.AccountID, theirServiceID, serialized, trustLevel) - if err != nil { - return fmt.Errorf("failed to insert new identity key: %w", err) - } - if replacing { - zerolog.Ctx(ctx).Debug(). - Stringer("their_service_id", theirServiceID). - Msg("Identity key changed, archiving sessions") - err = s.aciStore.ArchiveAllSessionsForServiceID(ctx, theirServiceID) - if err != nil { - return fmt.Errorf("failed to archive sessions for ACI store: %w", err) - } - if s.pniStore != nil { - err = s.pniStore.ArchiveAllSessionsForServiceID(ctx, theirServiceID) - if err != nil { - return fmt.Errorf("failed to archive sessions for PNI store: %w", err) - } - } - } - return nil - }) - if err == nil && replacing && s.identityChangeCallback != nil { - go s.identityChangeCallback(theirServiceID) + // We are replacing the old key if the old key exists, and it is not equal to the new key + replacing = !equal + } + _, err = s.db.Exec(ctx, insertIdentityKeyQuery, s.AccountID, theirServiceID, serialized, trustLevel) + if err != nil { + return replacing, fmt.Errorf("failed to insert new identity key: %w", err) } return replacing, err } func (s *sqlStore) IsTrustedIdentity(ctx context.Context, theirServiceID libsignalgo.ServiceID, identityKey *libsignalgo.IdentityKey, direction libsignalgo.SignalDirection) (bool, error) { - if theirServiceID == s.aciStore.ServiceID { - return identityKey.Equal(s.aciIdentity) - } else if s.pniStore != nil && theirServiceID == s.pniStore.ServiceID { - return identityKey.Equal(s.pniIdentity) - } + // TODO: this should check direction, and probably some other stuff (though whisperfish is pretty basic) var trustLevel string err := s.db.QueryRow(ctx, getIdentityKeyTrustLevelQuery, s.AccountID, theirServiceID).Scan(&trustLevel) if errors.Is(err, sql.ErrNoRows) { diff --git a/pkg/signalmeow/store/noop.go b/pkg/signalmeow/store/noop.go deleted file mode 100644 index 25090cc..0000000 --- a/pkg/signalmeow/store/noop.go +++ /dev/null @@ -1,152 +0,0 @@ -// mautrix-signal - A Matrix-signal puppeting bridge. -// Copyright (C) 2026 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package store - -import ( - "context" - - "go.mau.fi/mautrix-signal/pkg/libsignalgo" -) - -type noopStore struct { - Error error -} - -var _ PreKeyStore = (*noopStore)(nil) -var _ SessionStore = (*noopStore)(nil) -var _ IdentityKeyStore = (*noopStore)(nil) -var _ libsignalgo.IdentityKeyStore = (*noopStore)(nil) - -func (n *noopStore) LoadPreKey(ctx context.Context, id uint32) (*libsignalgo.PreKeyRecord, error) { - return nil, n.Error -} - -func (n *noopStore) StorePreKey(ctx context.Context, id uint32, preKeyRecord *libsignalgo.PreKeyRecord) error { - return n.Error -} - -func (n *noopStore) RemovePreKey(ctx context.Context, id uint32) error { - return n.Error -} - -func (n *noopStore) LoadSignedPreKey(ctx context.Context, id uint32) (*libsignalgo.SignedPreKeyRecord, error) { - return nil, n.Error -} - -func (n *noopStore) StoreSignedPreKey(ctx context.Context, id uint32, signedPreKeyRecord *libsignalgo.SignedPreKeyRecord) error { - return n.Error -} - -func (n *noopStore) LoadKyberPreKey(ctx context.Context, id uint32) (*libsignalgo.KyberPreKeyRecord, error) { - return nil, n.Error -} - -func (n *noopStore) StoreKyberPreKey(ctx context.Context, id uint32, kyberPreKeyRecord *libsignalgo.KyberPreKeyRecord) error { - return n.Error -} - -func (n *noopStore) MarkKyberPreKeyUsed(ctx context.Context, id uint32) error { - return n.Error -} - -func (n *noopStore) GetServiceID() libsignalgo.ServiceID { - return libsignalgo.EmptyServiceID -} - -func (n *noopStore) StoreLastResortKyberPreKey(ctx context.Context, preKeyID uint32, record *libsignalgo.KyberPreKeyRecord) error { - return n.Error -} - -func (n *noopStore) RemoveSignedPreKey(ctx context.Context, preKeyID uint32) error { - return n.Error -} - -func (n *noopStore) RemoveKyberPreKey(ctx context.Context, preKeyID uint32) error { - return n.Error -} - -func (n *noopStore) GetNextPreKeyID(ctx context.Context) (count, max uint32, err error) { - return 0, 0, n.Error -} - -func (n *noopStore) GetNextKyberPreKeyID(ctx context.Context) (count, max uint32, err error) { - return 0, 0, n.Error -} - -func (n *noopStore) IsKyberPreKeyLastResort(ctx context.Context, preKeyID uint32) (bool, error) { - return false, n.Error -} - -func (n *noopStore) AllPreKeys(ctx context.Context) ([]*libsignalgo.PreKeyRecord, error) { - return nil, n.Error -} - -func (n *noopStore) AllNormalKyberPreKeys(ctx context.Context) ([]*libsignalgo.KyberPreKeyRecord, error) { - return nil, n.Error -} - -func (n *noopStore) DeleteAllPreKeys(ctx context.Context) error { - return n.Error -} - -func (n *noopStore) LoadSession(ctx context.Context, address *libsignalgo.Address) (*libsignalgo.SessionRecord, error) { - return nil, n.Error -} - -func (n *noopStore) StoreSession(ctx context.Context, address *libsignalgo.Address, record *libsignalgo.SessionRecord) error { - return n.Error -} - -func (n *noopStore) AllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) ([]SessionAddressTuple, error) { - return nil, n.Error -} - -func (n *noopStore) RemoveSession(ctx context.Context, address *libsignalgo.Address) error { - return n.Error -} - -func (n *noopStore) RemoveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error { - return n.Error -} - -func (n *noopStore) ArchiveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error { - return n.Error -} - -func (n *noopStore) RemoveAllSessions(ctx context.Context) error { - return n.Error -} - -func (n *noopStore) SaveIdentityKey(ctx context.Context, theirServiceID libsignalgo.ServiceID, identityKey *libsignalgo.IdentityKey) (bool, error) { - return false, n.Error -} - -func (n *noopStore) GetIdentityKey(ctx context.Context, theirServiceID libsignalgo.ServiceID) (*libsignalgo.IdentityKey, error) { - return nil, n.Error -} - -func (n *noopStore) IsTrustedIdentity(ctx context.Context, theirServiceID libsignalgo.ServiceID, identityKey *libsignalgo.IdentityKey, direction libsignalgo.SignalDirection) (bool, error) { - return true, n.Error -} - -func (n *noopStore) GetIdentityKeyPair(ctx context.Context) (*libsignalgo.IdentityKeyPair, error) { - return nil, n.Error -} - -func (n *noopStore) GetLocalRegistrationID(ctx context.Context) (uint32, error) { - return 0, n.Error -} diff --git a/pkg/signalmeow/store/prekey_store.go b/pkg/signalmeow/store/prekey_store.go index 2cf62a5..37bca7e 100644 --- a/pkg/signalmeow/store/prekey_store.go +++ b/pkg/signalmeow/store/prekey_store.go @@ -51,13 +51,13 @@ type PreKeyStore interface { } const ( - getAllPreKeysQuery = `SELECT key_pair FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_signed=$3 ORDER BY key_id` + getAllPreKeysQuery = `SELECT key_pair FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_signed=$3` getPreKeyQuery = `SELECT key_pair FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND key_id=$3 AND is_signed=$4` insertPreKeyQuery = `INSERT INTO signalmeow_pre_keys (account_id, service_id, key_id, is_signed, key_pair) VALUES ($1, $2, $3, $4, $5)` deletePreKeyQuery = `DELETE FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND key_id=$3 AND is_signed=$4` getLastPreKeyIDQuery = `SELECT COUNT(*), COALESCE(MAX(key_id), 0) FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_signed=$3` - getAllKyberPreKeysQuery = `SELECT key_pair FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_last_resort=false ORDER BY key_id` + getAllKyberPreKeysQuery = `SELECT key_pair FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_last_resort=false` getKyberPreKeyQuery = `SELECT key_pair FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND key_id=$3` insertKyberPreKeyQuery = `INSERT INTO signalmeow_kyber_pre_keys (account_id, service_id, key_id, key_pair, is_last_resort) VALUES ($1, $2, $3, $4, $5)` deleteKyberPreKeyQuery = `DELETE FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND key_id=$3` diff --git a/pkg/signalmeow/store/session_store.go b/pkg/signalmeow/store/session_store.go index df312ee..3956714 100644 --- a/pkg/signalmeow/store/session_store.go +++ b/pkg/signalmeow/store/session_store.go @@ -53,7 +53,6 @@ type SessionStore interface { // RemoveSession removes the session for the given address. RemoveSession(ctx context.Context, address *libsignalgo.Address) error RemoveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error - ArchiveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error // RemoveAllSessions removes all sessions for our ACI UUID RemoveAllSessions(ctx context.Context) error } @@ -94,37 +93,7 @@ func (s *scopedSQLStore) AllSessionsForServiceID(ctx context.Context, theirID li if err != nil { return nil, err } - var out []SessionAddressTuple - err = dbutil.NewRowIterWithError(rows, scanSessionRecord, err).Iter(func(tuple SessionAddressTuple) (bool, error) { - hasState, err := tuple.Record.HasCurrentState() - if err != nil { - return false, fmt.Errorf("failed to check if session record has current state: %w", err) - } else if hasState { - out = append(out, tuple) - } - return true, nil - }) - return out, err -} - -func (s *scopedSQLStore) ArchiveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error { - return s.db.DoTxn(ctx, nil, func(ctx context.Context) error { - rows, err := s.AllSessionsForServiceID(ctx, theirID) - if err != nil { - return err - } - for _, row := range rows { - err = row.Record.ArchiveCurrentState() - if err != nil { - return fmt.Errorf("failed to archive session record for device %d: %w", row.DeviceID, err) - } - err = s.StoreSession(ctx, row.Address, row.Record) - if err != nil { - return fmt.Errorf("failed to store archived session record for device %d: %w", row.DeviceID, err) - } - } - return nil - }) + return dbutil.NewRowIterWithError(rows, scanSessionRecord, err).AsList() } func (s *scopedSQLStore) RemoveAllSessionsForServiceID(ctx context.Context, theirID libsignalgo.ServiceID) error { diff --git a/pkg/signalmeow/store/upgrades/00-latest.sql b/pkg/signalmeow/store/upgrades/00-latest.sql index 91f6967..fbb44ad 100644 --- a/pkg/signalmeow/store/upgrades/00-latest.sql +++ b/pkg/signalmeow/store/upgrades/00-latest.sql @@ -1,4 +1,4 @@ --- v0 -> v28 (compatible with v13+): Latest revision +-- v0 -> v27 (compatible with v13+): Latest revision CREATE TABLE signalmeow_device ( aci_uuid TEXT PRIMARY KEY, @@ -17,8 +17,7 @@ CREATE TABLE signalmeow_device ( account_record bytea, account_entropy_pool TEXT, ephemeral_backup_key bytea, - media_root_backup_key bytea, - auth_credential_salt bytea + media_root_backup_key bytea ); CREATE TABLE signalmeow_pre_keys ( diff --git a/pkg/signalmeow/store/upgrades/28-auth-credential-salt.sql b/pkg/signalmeow/store/upgrades/28-auth-credential-salt.sql deleted file mode 100644 index c0be4ac..0000000 --- a/pkg/signalmeow/store/upgrades/28-auth-credential-salt.sql +++ /dev/null @@ -1,2 +0,0 @@ --- v28 (compatible with v13+): Store auth credential salt for phonenumberless accounts -ALTER TABLE signalmeow_device ADD COLUMN auth_credential_salt bytea; diff --git a/pkg/signalmeow/username.go b/pkg/signalmeow/username.go deleted file mode 100644 index 1bbd140..0000000 --- a/pkg/signalmeow/username.go +++ /dev/null @@ -1,96 +0,0 @@ -// mautrix-signal - A Matrix-signal puppeting bridge. -// Copyright (C) 2026 Tulir Asokan -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package signalmeow - -import ( - "context" - "encoding/base64" - "fmt" - "regexp" - "strings" - - "github.com/google/uuid" - - "go.mau.fi/mautrix-signal/pkg/libsignalgo" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/account" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/rpc/common" -) - -const SignalUserLinkPrefix = "https://signal.me/#eu/" - -var SignalUsernameRegex = regexp.MustCompile(`^@?([A-Za-z0-9_]{3,32})\.(\d{2,9})$`) - -func (cli *Client) ResolveUsernameLink(ctx context.Context, link string) (string, error) { - link = strings.TrimPrefix(link, SignalUserLinkPrefix) - handle, err := base64.RawURLEncoding.DecodeString(link) - if err != nil { - return "", fmt.Errorf("failed to decode link handle: %w", err) - } else if len(handle) != 48 { - return "", fmt.Errorf("invalid link handle length: %d", len(handle)) - } - resp, err := cli.GRPC.AccountsAnonymous.LookupUsernameLink(ctx, &account.LookupUsernameLinkRequest{ - UsernameLinkHandle: handle[32:], - }) - if err != nil { - return "", err - } - switch respData := resp.Response.(type) { - case *account.LookupUsernameLinkResponse_NotFound: - return "", nil - case *account.LookupUsernameLinkResponse_UsernameCiphertext: - return libsignalgo.DecryptUsernameLink(handle[:32], respData.UsernameCiphertext) - default: - return "", fmt.Errorf("unexpected response type %T", respData) - } -} - -func ParseGRPCServiceID(serviceID *common.ServiceIdentifier) libsignalgo.ServiceID { - if serviceID == nil || len(serviceID.GetUuid()) != 16 { - return libsignalgo.EmptyServiceID - } - internalUUID := uuid.UUID(serviceID.GetUuid()) - switch serviceID.GetIdentityType() { - case common.IdentityType_IDENTITY_TYPE_ACI: - return libsignalgo.NewACIServiceID(internalUUID) - case common.IdentityType_IDENTITY_TYPE_PNI: - return libsignalgo.NewPNIServiceID(internalUUID) - default: - return libsignalgo.EmptyServiceID - } -} - -func (cli *Client) ResolveUsername(ctx context.Context, username string) (libsignalgo.ServiceID, error) { - username = strings.TrimPrefix(username, "@") - hash, err := libsignalgo.HashUsername(username) - if err != nil { - return libsignalgo.EmptyServiceID, err - } - resp, err := cli.GRPC.AccountsAnonymous.LookupUsernameHash(ctx, &account.LookupUsernameHashRequest{ - UsernameHash: hash[:], - }) - if err != nil { - return libsignalgo.EmptyServiceID, err - } - switch respData := resp.Response.(type) { - case *account.LookupUsernameHashResponse_NotFound: - return libsignalgo.EmptyServiceID, nil - case *account.LookupUsernameHashResponse_ServiceIdentifier: - return ParseGRPCServiceID(respData.ServiceIdentifier), nil - default: - return libsignalgo.EmptyServiceID, fmt.Errorf("unexpected response type %T", respData) - } -} diff --git a/pkg/signalmeow/web/grpc.go b/pkg/signalmeow/web/grpc.go index 077f7ce..fb7cf7c 100644 --- a/pkg/signalmeow/web/grpc.go +++ b/pkg/signalmeow/web/grpc.go @@ -114,7 +114,7 @@ func (gc *GRPCClient) ResetConnectBackoff() { gc.UnauthConn.ResetConnectBackoff() } -const GRPCTarget = "dns:///grpc.chat.signal.org:443" +const GRPCTarget = "dns://grpc.chat.signal.org:443" func NewGRPCClient(username, password string) (*GRPCClient, error) { grpcTLSConfig := credentials.NewTLS(SignalTLSConfig) diff --git a/pkg/signalmeow/web/signalwebsocket.go b/pkg/signalmeow/web/signalwebsocket.go index 641e2f0..3231322 100644 --- a/pkg/signalmeow/web/signalwebsocket.go +++ b/pkg/signalmeow/web/signalwebsocket.go @@ -22,10 +22,8 @@ import ( "encoding/json" "errors" "fmt" - "net" "net/http" "net/url" - "slices" "strings" "sync" "sync/atomic" @@ -62,8 +60,6 @@ type SignalWebsocket struct { closeCalled atomic.Bool cancel atomic.Pointer[context.CancelFunc] cancelConn atomic.Pointer[context.CancelCauseFunc] - - primaryDeviceIdle atomic.Bool } func NewSignalWebsocket(basicAuth *url.Userinfo) *SignalWebsocket { @@ -112,10 +108,6 @@ func (s *SignalWebsocket) IsConnected() bool { return s.ws.Load() != nil } -func (s *SignalWebsocket) PrimaryDeviceIdle() bool { - return s != nil && s.primaryDeviceIdle.Load() -} - func (s *SignalWebsocket) Close() (err error) { if s == nil { return nil @@ -124,9 +116,6 @@ func (s *SignalWebsocket) Close() (err error) { s.closeCalled.Store(true) if ws := s.ws.Swap(nil); ws != nil { err = ws.Close(websocket.StatusNormalClosure, "") - if errors.Is(err, net.ErrClosed) { - err = nil - } } if cancelLoop := s.cancel.Swap(nil); cancelLoop != nil { (*cancelLoop)() @@ -233,12 +222,10 @@ func (s *SignalWebsocket) connectLoop( return } if request == nil { - log.Error().Msg("Received nil request") - continue + log.Fatal().Msg("Received nil request") } if requestHandler == nil { - log.Error().Uint64("request_id", request.GetId()).Msg("Received request but no handler") - continue + log.Fatal().Msg("Received request but no handler") } // Handle the request with the request handler function @@ -267,7 +254,6 @@ func (s *SignalWebsocket) connectLoop( retrying := false errorCount := 0 isFirstConnect := true - var connectedAt time.Time wsURL := (&url.URL{ Scheme: "wss", Host: APIHostname, @@ -285,7 +271,7 @@ func (s *SignalWebsocket) connectLoop( case <-ctx.Done(): } backoff += backoffIncrement - } else if !isFirstConnect && (s.basicAuth != nil || time.Since(connectedAt) < time.Minute) { + } else if !isFirstConnect && s.basicAuth != nil { select { case <-time.After(initialBackoff): case <-ctx.Done(): @@ -301,17 +287,20 @@ func (s *SignalWebsocket) connectLoop( if resp != nil { if resp.StatusCode != 101 { // Server didn't want to open websocket - statusErr := HTTPStatusError{StatusCode: resp.StatusCode, Status: resp.Status} - if resp.StatusCode >= 500 || resp.StatusCode == http.StatusTooManyRequests { - // We can try again if it's a 5xx or a rate limit - s.pushStatus(ctx, SignalWebsocketConnectionEventDisconnected, fmt.Errorf("error opening websocket: %w", statusErr)) - } else if resp.StatusCode == http.StatusForbidden || (resp.StatusCode == http.StatusUnauthorized && s.basicAuth != nil) { + if resp.StatusCode >= 500 { + // We can try again if it's a 5xx + s.pushStatus(ctx, SignalWebsocketConnectionEventDisconnected, fmt.Errorf("5xx opening websocket: %v", resp.Status)) + } else if resp.StatusCode == 403 { // We are logged out, so we should stop trying to reconnect - s.pushStatus(ctx, SignalWebsocketConnectionEventLoggedOut, fmt.Errorf("%w opening websocket, we are logged out", statusErr)) + s.pushStatus(ctx, SignalWebsocketConnectionEventLoggedOut, fmt.Errorf("403 opening websocket, we are logged out")) + return // NOT RETRYING, KILLING THE CONNECTION LOOP + } else if resp.StatusCode > 0 && resp.StatusCode < 500 { + // Unexpected status code + s.pushStatus(ctx, SignalWebsocketConnectionEventFatalError, fmt.Errorf("unexpected status opening websocket: %v", resp.Status)) return // NOT RETRYING, KILLING THE CONNECTION LOOP } else { - // Unexpected status code - s.pushStatus(ctx, SignalWebsocketConnectionEventError, fmt.Errorf("unexpected status opening websocket: %w", statusErr)) + // Something is very wrong + s.pushStatus(ctx, SignalWebsocketConnectionEventError, fmt.Errorf("unexpected error opening websocket: %v", resp.Status)) } // Retry the connection retrying = true @@ -330,22 +319,10 @@ func (s *SignalWebsocket) connectLoop( } // Succssfully connected - if resp != nil { - alerts := resp.Header.Values("X-Signal-Alert") - if len(alerts) > 0 { - log.Warn().Strs("alerts", alerts).Msg("Signal server sent alerts when opening websocket") - } - s.primaryDeviceIdle.Store(slices.ContainsFunc(alerts, func(value string) bool { - return slices.ContainsFunc(strings.Split(value, ","), func(part string) bool { - return strings.TrimSpace(part) == "idle-primary-device" - }) - })) - } s.pushStatus(ctx, SignalWebsocketConnectionEventConnected, nil) s.ws.Store(ws) retrying = false backoff = initialBackoff - connectedAt = time.Now() responseChannels := exsync.NewMap[uint64, chan *signalpb.WebSocketResponseMessage]() loopCtx, loopCancel := context.WithCancelCause(ctx) @@ -425,16 +402,12 @@ func (s *SignalWebsocket) connectLoop( if ctxCauseErr == nil || errors.Is(ctxCauseErr, context.Canceled) { s.pushStatus(ctx, SignalWebsocketConnectionEventCleanShutdown, nil) } else { - if time.Since(connectedAt) > time.Minute { - errorCount = 0 - } + errorCount++ s.pushStatus(ctx, SignalWebsocketConnectionEventDisconnected, ctxCauseErr) if errors.Is(ctxCauseErr, ErrForcedReconnect) { // Skip the delay for forced reconnects // TODO should the delay be lowered globally? isFirstConnect = true - } else { - errorCount++ } } @@ -447,12 +420,10 @@ func (s *SignalWebsocket) connectLoop( wg.Wait() log.Debug().Msg("Finished websocket cleanup") if errorCount > 500 { - // Something is really wrong, stop reconnecting. + // Something is really wrong, we better panic. // This is a last defense against a runaway error loop, // like the WS continually closing and reconnecting - log.Error().Int("error_count", errorCount).Msg("Too many errors, stopping connection loop") - s.pushStatus(ctx, SignalWebsocketConnectionEventFatalError, fmt.Errorf("too many websocket errors (%d)", errorCount)) - return + log.Fatal().Int("error_count", errorCount).Msg("Too many errors, panicking") } } } @@ -493,17 +464,13 @@ func readLoop( Str("request_verb", *msg.Request.Verb). Str("request_path", *msg.Request.Path). Msg("Received WS request") - select { - case incomingRequestChan <- msg.Request: - case <-ctx.Done(): - return ctx.Err() - } + incomingRequestChan <- msg.Request } else if *msg.Type == signalpb.WebSocketMessage_RESPONSE { if msg.Response == nil { - return errors.New("received response message with no response") + log.Fatal().Msg("Received response with no response") } if msg.Response.Id == nil { - return errors.New("received response message with no id") + log.Fatal().Msg("Received response with no id") } responseChannel, ok := responseChannels.Pop(*msg.Response.Id) if !ok { @@ -515,9 +482,9 @@ func readLoop( logEvt := log.Debug(). Uint64("response_id", msg.Response.GetId()). Uint32("response_status", msg.Response.GetStatus()). - Str("response_message", msg.Response.GetMessage()). - Strs("response_headers", msg.Response.Headers) - if log.GetLevel() == zerolog.TraceLevel || msg.Response.GetStatus() >= 400 { + Str("response_message", msg.Response.GetMessage()) + if log.GetLevel() == zerolog.TraceLevel || len(msg.Response.Body) < 256 { + logEvt.Strs("response_headers", msg.Response.Headers) if json.Valid(msg.Response.Body) { logEvt.RawJSON("response_body", msg.Response.Body) } else { @@ -711,7 +678,6 @@ func OpenWebsocket(ctx context.Context, url string) (*websocket.Conn, *http.Resp func CreateWSResponse(ctx context.Context, id uint64, status int) *signalpb.WebSocketMessage { if status != 200 && status != 400 { // TODO support more responses to Signal? Are there more? - //bridgelint:ignore GR004 statuses come from the bridge's own handlers, so anything else is a bridge bug zerolog.Ctx(ctx).Fatal().Int("status", status).Msg("Error creating response. Non 200/400 not supported yet.") return nil } diff --git a/pkg/signalmeow/web/web.go b/pkg/signalmeow/web/web.go index fc86457..c5a0e12 100644 --- a/pkg/signalmeow/web/web.go +++ b/pkg/signalmeow/web/web.go @@ -28,7 +28,6 @@ import ( "net/http" "runtime" "strings" - "sync/atomic" "time" "github.com/rs/zerolog" @@ -75,9 +74,6 @@ var signalTransport = &http.Transport{ var SignalHTTPClient = &http.Client{ Transport: signalTransport, } -var SignalUploadHTTPClient = &http.Client{ - Transport: signalTransport, -} func init() { SignalCertPool.AddCert(exerrors.Must(x509.ParseCertificate(signalRootCertBytes))) @@ -101,10 +97,9 @@ type HTTPReqOpt struct { ContentType ContentType Headers map[string]string OverrideURL string // Override the full URL, if set ignores path and Host - Upload bool } -var httpReqCounter atomic.Int64 +var httpReqCounter = 0 func SendHTTPRequest(ctx context.Context, host, method, path string, opt *HTTPReqOpt) (*http.Response, error) { // Set defaults @@ -148,14 +143,11 @@ func SendHTTPRequest(ctx context.Context, host, method, path string, opt *HTTPRe req.SetBasicAuth(*opt.Username, *opt.Password) } - log = log.With().Int64("request_number", httpReqCounter.Add(1)).Logger() + httpReqCounter++ + log = log.With().Int("request_number", httpReqCounter).Logger() log.Trace().Msg("Sending HTTP request") - client := SignalHTTPClient - if opt.Upload { - client = SignalUploadHTTPClient - } start := time.Now() - resp, err := client.Do(req) + resp, err := SignalHTTPClient.Do(req) dur := time.Since(start) if err != nil { log.Err(err).Dur("duration", dur).Msg("Error sending request") @@ -165,16 +157,6 @@ func SendHTTPRequest(ctx context.Context, host, method, path string, opt *HTTPRe return resp, nil } -// HTTPStatusError is returned when a Signal server responds with an unexpected HTTP status. -type HTTPStatusError struct { - StatusCode int - Status string -} - -func (e HTTPStatusError) Error() string { - return e.Status -} - func CloseBody(resp *http.Response) { if resp != nil && resp.Body != nil { _ = resp.Body.Close() @@ -250,7 +232,7 @@ func GetAttachment(ctx context.Context, path string, cdnNumber uint32) (*http.Re } log.Debug().Str("host", host).Msg("getting attachment") urlStr := "https://" + host + path - req, err := http.NewRequestWithContext(ctx, http.MethodGet, urlStr, nil) + req, err := http.NewRequest(http.MethodGet, urlStr, nil) if err != nil { return nil, err } @@ -260,8 +242,9 @@ func GetAttachment(ctx context.Context, path string, cdnNumber uint32) (*http.Re req.Header.Add("Content-Type", "application/octet-stream") req.Header.Set("User-Agent", UserAgent) + httpReqCounter++ log = log.With(). - Int64("request_number", httpReqCounter.Add(1)). + Int("request_number", httpReqCounter). Str("url", urlStr). Logger()