diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index cba1054..c10630f 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -11,8 +11,7 @@ type: Bug ### Checklist - + * [ ] This is an actual bug, not just a setup issue (see the [troubleshooting docs](https://docs.mau.fi/bridges/general/troubleshooting.html) or ask in the Matrix room for setup help). * [ ] I am certain that sufficient information is included. Ask in the Matrix room first if not. -* [ ] The bug is still present on the main branch. The `!signal version` command output is: `` diff --git a/CHANGELOG.md b/CHANGELOG.md index 468ca95..d992cab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,37 +1,3 @@ -# v26.08 - -* Updated libsignal to v0.100.0 -* Added support for handling own profile key changes. -* Changed attachment bridging behavior to match Signal Desktop. -* Fixed edited messages being bridged twice if certain race conditions occurred. - -# v26.07 - -* Updated Docker image to Alpine 3.24. -* Updated libsignal to v0.97.2. -* Added automatic retry when sender key send fails due to missing session. -* Fixed changing poll votes from Matrix. - -# v26.06 - -* Updated libsignal to v0.94.4. -* Updated mrenclave to fix looking up phone numbers. -* Changed knock accept handling to auto-join the ghost user afterwards. - -# v26.05 - -* Updated libsignal to v0.93.2. -* Added support for importing sticker packs from Signal. - -# v26.04 - -* Updated libsignal to v0.92.1. -* Added support for admin message deletes from Signal. -* Added support for binary service IDs in storage service. -* Fixed `private_chat_portal_meta` option not setting DM room names correctly. -* Fixed panic if user is logged out during initial chat sync. -* Fixed avatar upload failing when creating new Signal group. - # v26.03 * Switched to sending binary service ID fields in outgoing messages. diff --git a/Dockerfile b/Dockerfile index ba0a602..63e7542 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # -- Build libsignal (with Rust) -- FROM rust:1-alpine AS rust-builder -RUN apk add --no-cache git make cmake protoc musl-dev g++ clang-dev protobuf-dev +RUN apk add --no-cache git make cmake protoc musl-dev g++ clang-dev WORKDIR /build # Copy all files needed for Rust build, and no Go files @@ -10,7 +10,7 @@ COPY build-rust.sh . RUN ./build-rust.sh # -- Build mautrix-signal (with Go) -- -FROM golang:1-alpine3.24 AS go-builder +FROM golang:1-alpine3.23 AS go-builder RUN apk add --no-cache git ca-certificates build-base olm-dev zlib-dev WORKDIR /build @@ -32,7 +32,7 @@ EOF RUN ./build-go.sh # -- Run mautrix-signal -- -FROM alpine:3.24 +FROM alpine:3.23 ENV UID=1337 \ GID=1337 diff --git a/Dockerfile.ci b/Dockerfile.ci index 85dbfb2..ea2699f 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -1,6 +1,6 @@ ARG DOCKER_HUB="docker.io" -FROM ${DOCKER_HUB}/alpine:3.24 +FROM ${DOCKER_HUB}/alpine:3.23 ENV UID=1337 \ GID=1337 diff --git a/cmd/mautrix-signal/main.go b/cmd/mautrix-signal/main.go index c5f5bf9..cc1ec10 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.08", + Version: "26.03", SemCalVer: true, Connector: &connector.SignalConnector{}, diff --git a/go.mod b/go.mod index 5c754b2..c2ff042 100644 --- a/go.mod +++ b/go.mod @@ -2,26 +2,25 @@ module go.mau.fi/mautrix-signal go 1.25.0 -toolchain go1.26.6 +toolchain go1.26.1 tool go.mau.fi/util/cmd/maubuild require ( - github.com/coder/websocket v1.8.15 + github.com/coder/websocket v1.8.14 github.com/emersion/go-vcard v0.0.0-20241024213814-c9703dde27ff github.com/google/uuid v1.6.0 github.com/mattn/go-pointer v0.0.1 - github.com/rs/zerolog v1.35.1 + github.com/rs/zerolog v1.35.0 github.com/stretchr/testify v1.11.1 - github.com/tidwall/gjson v1.19.0 - go.mau.fi/util v0.10.0 - golang.org/x/crypto v0.55.0 - golang.org/x/exp v0.0.0-20260813180055-c1d0aacb2297 - golang.org/x/net v0.58.0 - golang.org/x/sync v0.22.0 - google.golang.org/protobuf v1.36.12 + github.com/tidwall/gjson v1.18.0 + go.mau.fi/util v0.9.7 + golang.org/x/crypto v0.49.0 + golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 + golang.org/x/net v0.52.0 + google.golang.org/protobuf v1.36.11 gopkg.in/yaml.v3 v3.0.1 - maunium.net/go/mautrix v0.30.0 + maunium.net/go/mautrix v0.26.5-0.20260331163037-18917f3bdc14 ) require ( @@ -29,11 +28,11 @@ require ( github.com/coreos/go-systemd/v22 v22.7.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/kr/pretty v0.3.1 // indirect - github.com/lib/pq v1.12.3 // indirect + github.com/lib/pq v1.12.0 // indirect 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.49 // indirect - github.com/petermattis/goid v0.0.0-20260816044145-ed329add6b1b // indirect + github.com/mattn/go-sqlite3 v1.14.37 // indirect + github.com/petermattis/goid v0.0.0-20260226131333-17d1149c6ac6 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/rs/xid v1.6.0 // indirect @@ -41,11 +40,12 @@ require ( github.com/tidwall/match v1.2.0 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/yuin/goldmark v1.8.5 // indirect + github.com/yuin/goldmark v1.8.2 // indirect go.mau.fi/zeroconfig v0.2.0 // indirect - golang.org/x/mod v0.40.0 // indirect - golang.org/x/sys v0.47.0 // indirect - golang.org/x/text v0.41.0 // indirect + golang.org/x/mod v0.34.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/text v0.35.0 // 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 e212cb7..44ce4a1 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +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/coder/websocket v1.8.15 h1:6B2JPeOGlpff2Uz6vOEH1Vzpi0iUz20A+lPVhPHtNUA= -github.com/coder/websocket v1.8.15/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= +github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g= +github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -22,18 +22,18 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= -github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= +github.com/lib/pq v1.12.0 h1:mC1zeiNamwKBecjHarAr26c/+d8V5w/u4J0I/yASbJo= +github.com/lib/pq v1.12.0/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= -github.com/mattn/go-sqlite3 v1.14.49 h1:B8jBHC3xhxZgxztrgruTuLucebnULQnx4W7cF7SAE9w= -github.com/mattn/go-sqlite3 v1.14.49/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9sB6w= -github.com/petermattis/goid v0.0.0-20260816044145-ed329add6b1b h1:sS7HLzwS+dO+gxATgQfeZDEdUZe2pKAB3nGoUwP5zU0= -github.com/petermattis/goid v0.0.0-20260816044145-ed329add6b1b/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/mattn/go-sqlite3 v1.14.37 h1:3DOZp4cXis1cUIpCfXLtmlGolNLp2VEqhiB/PARNBIg= +github.com/mattn/go-sqlite3 v1.14.37/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/petermattis/goid v0.0.0-20260226131333-17d1149c6ac6 h1:rh2lKw/P/EqHa724vYH2+VVQ1YnW4u6EOXl0PMAovZE= +github.com/petermattis/goid v0.0.0-20260226131333-17d1149c6ac6/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -42,15 +42,15 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/xid v1.6.0 h1:fV591PaemRlL6JfRxGDEPl69wICngIQ3shQtzfy2gxU= github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= -github.com/rs/zerolog v1.35.1 h1:m7xQeoiLIiV0BCEY4Hs+j2NG4Gp2o2KPKmhnnLiazKI= -github.com/rs/zerolog v1.35.1/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw= +github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI= +github.com/rs/zerolog v1.35.0/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -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/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= 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,29 +59,29 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= 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.5 h1:r6N5afV5qj/5S4UTch8agZHJ8UxNCMwX7WjkkJam2NA= -github.com/yuin/goldmark v1.8.5/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= -go.mau.fi/util v0.10.0 h1:vH9IXZmfBKa96p47HxrVqEPkrj02zDJg3o4EF172+Lk= -go.mau.fi/util v0.10.0/go.mod h1:uZwpm9sK4wO2Qqy+t6QoVq29szMsRxWXp9/BkQLG4xk= +github.com/yuin/goldmark v1.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE= +github.com/yuin/goldmark v1.8.2/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= +go.mau.fi/util v0.9.7 h1:AWGNbJfz1zRcQOKeOEYhKUG2fT+/26Gy6kyqcH8tnBg= +go.mau.fi/util v0.9.7/go.mod h1:5T2f3ZWZFAGgmFwg3dGw7YK6kIsb9lryDzvynoR98pE= 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.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= -golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= -golang.org/x/exp v0.0.0-20260813180055-c1d0aacb2297 h1:YXnL44eJ77R+ji4/ooy8UsXIhz+lbi2Qgdlc8iRN0gY= -golang.org/x/exp v0.0.0-20260813180055-c1d0aacb2297/go.mod h1:Mkmymgv+uMpSQ/XxJ/7GpdrdYoqm3u72jEbpCLiJmNk= -golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs= -golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE= -golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= -golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= -golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= -golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90 h1:jiDhWWeC7jfWqR9c/uplMOqJ0sbNlNWv0UkzE0vX1MA= +golang.org/x/exp v0.0.0-20260312153236-7ab1446f8b90/go.mod h1:xE1HEv6b+1SCZ5/uscMRjUBKtIxworgEcEi+/n9NQDQ= +golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= +golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= -golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= -golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= -google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= -google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -91,5 +91,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 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.30.0 h1:bad+q7w5tLqiHpr+oUxVI+8m8ePbV3AvoFKg2jQzPyo= -maunium.net/go/mautrix v0.30.0/go.mod h1:bb0gjxbTFOqTaAYKGw5E7j9XROUR2Sl1Etm3IbmYXbo= +maunium.net/go/mautrix v0.26.5-0.20260331163037-18917f3bdc14 h1:y+4gtqKBMTtcVUiAeWJnvp88JLo/h3myQPsz1rZfNOY= +maunium.net/go/mautrix v0.26.5-0.20260331163037-18917f3bdc14/go.mod h1:RUSMBPky3jhXB7Ux+AptfkEvFlJ4ajZKCYiXI8YzxVE= diff --git a/pkg/connector/backfill.go b/pkg/connector/backfill.go index b7b2a23..3f9a611 100644 --- a/pkg/connector/backfill.go +++ b/pkg/connector/backfill.go @@ -187,7 +187,7 @@ func (s *SignalClient) FetchMessages(ctx context.Context, params bridgev2.FetchM CompleteCallback: func() { // When reaching the last backwards backfill batch, delete the chat from the backup store. // If backwards backfilling isn't enabled, delete immediately after the first backfill request. - if (!params.Forward && len(items) < params.Count) || !s.Main.Bridge.Config.Backfill.Queue.AnyEnabled() { + if (!params.Forward && len(items) < params.Count) || (!s.Main.Bridge.Config.Backfill.Queue.Enabled && !s.Main.Bridge.Config.Backfill.WillPaginateManually) { err := s.Client.Store.BackupStore.DeleteBackupChat(ctx, chat.Id) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to delete chat from backup store") diff --git a/pkg/connector/capabilities.go b/pkg/connector/capabilities.go index 228ac94..e791324 100644 --- a/pkg/connector/capabilities.go +++ b/pkg/connector/capabilities.go @@ -38,7 +38,7 @@ func supportedIfFFmpeg() event.CapabilitySupportLevel { } func capID() string { - base := "fi.mau.signal.capabilities.2026_07_22" + base := "fi.mau.signal.capabilities.2025_12_09" if ffmpeg.Supported() { return base + "+ffmpeg" } @@ -77,7 +77,6 @@ var signalCaps = &event.RoomFeatures{ "image/jpeg": event.CapLevelFullySupported, "image/webp": event.CapLevelFullySupported, "image/bmp": event.CapLevelFullySupported, - "image/avif": event.CapLevelFullySupported, }, MaxWidth: 4096, MaxHeight: 4096, @@ -99,8 +98,6 @@ var signalCaps = &event.RoomFeatures{ MimeTypes: map[string]event.CapabilitySupportLevel{ "audio/aac": event.CapLevelFullySupported, "audio/mpeg": event.CapLevelFullySupported, - "audio/mp3": event.CapLevelFullySupported, - "audio/flac": event.CapLevelFullySupported, }, MaxSize: MaxFileSize, }, @@ -114,8 +111,7 @@ var signalCaps = &event.RoomFeatures{ }, event.CapMsgSticker: { MimeTypes: map[string]event.CapabilitySupportLevel{ - // Signal clients will only render static webp, so apng is preferred - "image/webp": event.CapLevelPartialSupport, + "image/webp": event.CapLevelFullySupported, "image/png": event.CapLevelFullySupported, "image/apng": event.CapLevelFullySupported, "image/gif": supportedIfFFmpeg(), @@ -154,23 +150,18 @@ var signalCaps = &event.RoomFeatures{ event.MemberActionBan: event.CapLevelFullySupported, event.MemberActionKick: event.CapLevelFullySupported, }, - MaxTextLength: MaxTextLength, // TODO support arbitrary sized text messages with files - LocationMessage: event.CapLevelPartialSupport, - Poll: event.CapLevelFullySupported, - PollEnd: event.CapLevelUnsupported, - PollHiddenVotes: event.CapLevelUnsupported, - PollDuplicateOptions: event.CapLevelFullySupported, - PollMaxOptions: 10, - PollOptionMaxLength: 100, - Thread: event.CapLevelUnsupported, - Reply: event.CapLevelFullySupported, - Edit: event.CapLevelFullySupported, - EditMaxCount: 10, - EditMaxAge: ptr.Ptr(jsontime.S(24 * time.Hour)), - Delete: event.CapLevelFullySupported, - DeleteForMe: false, - DeleteMaxAge: ptr.Ptr(jsontime.S(24 * time.Hour)), - DisappearingTimer: signalDisappearingCap, + MaxTextLength: MaxTextLength, // TODO support arbitrary sized text messages with files + LocationMessage: event.CapLevelPartialSupport, + Poll: event.CapLevelRejected, + Thread: event.CapLevelUnsupported, + Reply: event.CapLevelFullySupported, + Edit: event.CapLevelFullySupported, + EditMaxCount: 10, + EditMaxAge: ptr.Ptr(jsontime.S(24 * time.Hour)), + Delete: event.CapLevelFullySupported, + DeleteForMe: false, + DeleteMaxAge: ptr.Ptr(jsontime.S(24 * time.Hour)), + DisappearingTimer: signalDisappearingCap, Reaction: event.CapLevelFullySupported, ReactionCount: 1, @@ -220,7 +211,6 @@ var signalGeneralCaps = &bridgev2.NetworkGeneralCapabilities{ AggressiveUpdateInfo: true, ImplicitReadReceipts: true, Provisioning: bridgev2.ProvisioningCapabilities{ - ImagePackImport: true, ResolveIdentifier: bridgev2.ResolveIdentifierCapabilities{ CreateDM: true, LookupPhone: true, @@ -245,5 +235,5 @@ func (s *SignalConnector) GetCapabilities() *bridgev2.NetworkGeneralCapabilities } func (s *SignalConnector) GetBridgeInfoVersion() (info, capabilities int) { - return 1, 11 + return 1, 7 } diff --git a/pkg/connector/chatinfo.go b/pkg/connector/chatinfo.go index 0d48c45..87f1f6f 100644 --- a/pkg/connector/chatinfo.go +++ b/pkg/connector/chatinfo.go @@ -332,7 +332,7 @@ func (s *SignalClient) CreateGroup(ctx context.Context, params *bridgev2.GroupCr if err != nil { return nil, fmt.Errorf("failed to download avatar: %w", err) } - group.AvatarPath, err = s.Client.UploadGroupAvatar(ctx, avatarBytes, group.GroupIdentifier, group.GroupMasterKey) + group.AvatarPath, err = s.Client.UploadGroupAvatar(ctx, avatarBytes, group.GroupIdentifier) if err != nil { return nil, fmt.Errorf("failed to upload avatar: %w", err) } @@ -362,7 +362,7 @@ func (s *SignalClient) CreateGroup(ctx context.Context, params *bridgev2.GroupCr return nil, fmt.Errorf("failed to set portal room ID: %w", err) } } - resp, err := s.Client.CreateGroup(ctx, group) + resp, err := s.Client.CreateGroup(ctx, group, avatarBytes) if err != nil { return nil, fmt.Errorf("failed to create group: %w", err) } diff --git a/pkg/connector/chatsync.go b/pkg/connector/chatsync.go index 47963d7..cadddf3 100644 --- a/pkg/connector/chatsync.go +++ b/pkg/connector/chatsync.go @@ -29,22 +29,14 @@ import ( "go.mau.fi/mautrix-signal/pkg/libsignalgo" "go.mau.fi/mautrix-signal/pkg/signalid" "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/backuppb" + "go.mau.fi/mautrix-signal/pkg/signalmeow/store" "go.mau.fi/mautrix-signal/pkg/signalmeow/types" ) -func (s *SignalClient) stopChatSync() { - if cancel := s.cancelChatSync.Swap(nil); cancel != nil { - (*cancel)() - } -} - -func (s *SignalClient) syncChats(ctx context.Context, cancel context.CancelFunc) { - defer cancel() - +func (s *SignalClient) syncChats(ctx context.Context) { if s.UserLogin.Metadata.(*signalid.UserLoginMetadata).ChatsSynced { return } - if s.Client.Store.EphemeralBackupKey != nil { zerolog.Ctx(ctx).Info().Msg("Fetching transfer archive before syncing chats") meta, err := s.Client.WaitForTransfer(ctx) @@ -74,110 +66,109 @@ func (s *SignalClient) syncChats(ctx context.Context, cancel context.CancelFunc) } zerolog.Ctx(ctx).Info().Int("chat_count", len(chats)).Msg("Fetched chats to sync from database") for _, chat := range chats { - if ctx.Err() != nil { - zerolog.Ctx(ctx).Debug(). - AnErr("ctx_err", ctx.Err()). - Msg("Context cancelled while syncing chats, stopping") - return - } - recipient, err := s.Client.Store.BackupStore.GetBackupRecipient(ctx, chat.RecipientId) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to get recipient for chat") - continue - } else if recipient == nil { - zerolog.Ctx(ctx).Warn(). - Uint64("backup_chat_id", chat.Id). - Uint64("backup_recipient_id", chat.RecipientId). - Msg("No recipient found for chat") - continue - } - resyncEvt := &simplevent.ChatResync{ - EventMeta: simplevent.EventMeta{ - Type: bridgev2.RemoteEventChatResync, - LogContext: func(c zerolog.Context) zerolog.Context { - return c. - Int("message_count", chat.TotalMessages). - Uint64("backup_chat_id", chat.Id). - Uint64("backup_recipient_id", chat.RecipientId) - }, - CreatePortal: true, - }, - LatestMessageTS: time.UnixMilli(int64(chat.LatestMessageID)), - } - switch dest := recipient.Destination.(type) { - case *backuppb.Recipient_Contact: - aci := tryCastUUID(dest.Contact.GetAci()) - pni := tryCastUUID(dest.Contact.GetPni()) - if chat.TotalMessages == 0 { - zerolog.Ctx(ctx).Debug(). - Stringer("aci", aci). - Stringer("pni", pni). - Uint64("e164", dest.Contact.GetE164()). - Msg("Skipping direct chat with no messages and deleting data") - err = s.Client.Store.BackupStore.DeleteBackupChat(ctx, chat.Id) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to delete chat from backup store") - } - continue - } - processedRecipient, err := s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aci, pni, nil) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to get full recipient data") - continue - } - dmInfo := s.makeCreateDMResponse(ctx, processedRecipient, chat) - resyncEvt.PortalKey = dmInfo.PortalKey - resyncEvt.ChatInfo = dmInfo.PortalInfo - case *backuppb.Recipient_Self: - processedRecipient, err := s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, s.Client.Store.ACI, uuid.Nil, nil) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to get full recipient data") - continue - } - dmInfo := s.makeCreateDMResponse(ctx, processedRecipient, chat) - resyncEvt.PortalKey = dmInfo.PortalKey - resyncEvt.ChatInfo = dmInfo.PortalInfo - case *backuppb.Recipient_Group: - if len(dest.Group.MasterKey) != libsignalgo.GroupMasterKeyLength { - continue - } - rawGroupID, err := libsignalgo.GroupMasterKey(dest.Group.MasterKey).GroupIdentifier() - if err != nil { - zerolog.Ctx(ctx).Err(err). - Uint64("recipient_id", recipient.Id). - Msg("Failed to get group identifier from master key") - continue - } - groupID := types.GroupIdentifier(base64.StdEncoding.EncodeToString(rawGroupID[:])) - groupInfo, err := s.getGroupInfo(ctx, groupID, dest.Group.GetSnapshot().GetVersion(), chat) - if err != nil { - zerolog.Ctx(ctx).Err(err). - Uint64("recipient_id", recipient.Id). - Stringer("group_id", groupID). - Msg("Failed to get full group info") - continue - } - resyncEvt.PortalKey = s.makePortalKey(string(groupID)) - resyncEvt.ChatInfo = groupInfo - default: - zerolog.Ctx(ctx).Debug(). - Type("destination_type", dest). - Uint64("backup_chat_id", chat.Id). - Uint64("backup_recipient_id", chat.RecipientId). - Msg("Ignoring and deleting chat with unsupported destination type") - err = s.Client.Store.BackupStore.DeleteBackupChat(ctx, chat.Id) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to delete chat from backup store") - } - continue - } - if !s.UserLogin.QueueRemoteEvent(resyncEvt).Success { + if !s.syncChat(ctx, chat) { return } } + // TODO if Save fails, ChatsSynced remains true in memory even though it wasn't persisted. + // Fixing that properly likely needs a broader metadata mutation/rollback pattern. 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 syncing chats") } } + +func (s *SignalClient) syncChat(ctx context.Context, chat *store.BackupChat) bool { + recipient, err := s.Client.Store.BackupStore.GetBackupRecipient(ctx, chat.RecipientId) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to get recipient for chat") + return ctx.Err() == nil + } else if recipient == nil { + zerolog.Ctx(ctx).Debug(). + Uint64("backup_chat_id", chat.Id). + Uint64("backup_recipient_id", chat.RecipientId). + Msg("Skipping chat with missing backup recipient") + return true + } + resyncEvt := &simplevent.ChatResync{ + EventMeta: simplevent.EventMeta{ + Type: bridgev2.RemoteEventChatResync, + LogContext: func(c zerolog.Context) zerolog.Context { + return c. + Int("message_count", chat.TotalMessages). + Uint64("backup_chat_id", chat.Id). + Uint64("backup_recipient_id", chat.RecipientId) + }, + CreatePortal: true, + }, + LatestMessageTS: time.UnixMilli(int64(chat.LatestMessageID)), + } + switch dest := recipient.Destination.(type) { + case *backuppb.Recipient_Contact: + aci := tryCastUUID(dest.Contact.GetAci()) + pni := tryCastUUID(dest.Contact.GetPni()) + if chat.TotalMessages == 0 { + zerolog.Ctx(ctx).Debug(). + Stringer("aci", aci). + Stringer("pni", pni). + Uint64("e164", dest.Contact.GetE164()). + Msg("Skipping direct chat with no messages and deleting data") + err = s.Client.Store.BackupStore.DeleteBackupChat(ctx, chat.Id) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to delete chat from backup store") + return ctx.Err() == nil + } + return true + } + processedRecipient, err := s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aci, pni, nil) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to get full recipient data") + return ctx.Err() == nil + } + dmInfo := s.makeCreateDMResponse(ctx, processedRecipient, chat) + resyncEvt.PortalKey = dmInfo.PortalKey + resyncEvt.ChatInfo = dmInfo.PortalInfo + case *backuppb.Recipient_Self: + processedRecipient, err := s.Client.Store.RecipientStore.LoadAndUpdateRecipient(ctx, s.Client.Store.ACI, uuid.Nil, nil) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to get full recipient data") + return ctx.Err() == nil + } + dmInfo := s.makeCreateDMResponse(ctx, processedRecipient, chat) + resyncEvt.PortalKey = dmInfo.PortalKey + resyncEvt.ChatInfo = dmInfo.PortalInfo + case *backuppb.Recipient_Group: + if len(dest.Group.MasterKey) != libsignalgo.GroupMasterKeyLength { + return true + } + rawGroupID, err := libsignalgo.GroupMasterKey(dest.Group.MasterKey).GroupIdentifier() + if err != nil { + zerolog.Ctx(ctx).Err(err). + Uint64("recipient_id", recipient.Id). + Msg("Failed to get group identifier from master key") + return true + } + groupID := types.GroupIdentifier(base64.StdEncoding.EncodeToString(rawGroupID[:])) + groupInfo, err := s.getGroupInfo(ctx, groupID, dest.Group.GetSnapshot().GetVersion(), chat) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to get full group info") + return ctx.Err() == nil + } + resyncEvt.PortalKey = s.makePortalKey(string(groupID)) + resyncEvt.ChatInfo = groupInfo + default: + zerolog.Ctx(ctx).Debug(). + Type("destination_type", dest). + Uint64("backup_chat_id", chat.Id). + Uint64("backup_recipient_id", chat.RecipientId). + Msg("Ignoring and deleting chat with unsupported destination type") + err = s.Client.Store.BackupStore.DeleteBackupChat(ctx, chat.Id) + if err != nil { + zerolog.Ctx(ctx).Err(err).Msg("Failed to delete chat from backup store") + return ctx.Err() == nil + } + return true + } + return s.UserLogin.QueueRemoteEvent(resyncEvt).Success +} diff --git a/pkg/connector/client.go b/pkg/connector/client.go index 4fcf188..30cc7cc 100644 --- a/pkg/connector/client.go +++ b/pkg/connector/client.go @@ -18,6 +18,7 @@ package connector import ( "context" + "errors" "fmt" "sync/atomic" "time" @@ -27,7 +28,6 @@ import ( "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/networkid" "maunium.net/go/mautrix/bridgev2/status" - "maunium.net/go/mautrix/event" "go.mau.fi/mautrix-signal/pkg/signalid" "go.mau.fi/mautrix-signal/pkg/signalmeow" @@ -41,13 +41,12 @@ type SignalClient struct { Ghost *bridgev2.Ghost queueEmptyWaiter *exsync.Event - cancelChatSync atomic.Pointer[context.CancelFunc] + lifecycleCancel atomic.Pointer[context.CancelFunc] } var ( _ bridgev2.NetworkAPI = (*SignalClient)(nil) _ bridgev2.BackgroundSyncingNetworkAPI = (*SignalClient)(nil) - _ bridgev2.StickerImportingNetworkAPI = (*SignalClient)(nil) ) var pushCfg = &bridgev2.PushConfig{ @@ -78,19 +77,11 @@ func (s *SignalClient) RegisterPushNotifications(ctx context.Context, pushType b } } -func (s *SignalClient) DownloadImagePack(ctx context.Context, url string) (*bridgev2.ImportedImagePack, error) { - return s.Main.MsgConv.DownloadImagePack(ctx, url) -} - -func (s *SignalClient) ListImagePacks(ctx context.Context) ([]*event.ImagePackMetadata, error) { - return []*event.ImagePackMetadata{}, nil -} - func (s *SignalClient) LogoutRemote(ctx context.Context) { + s.cancelLifecycleContext() if s.Client == nil { return } - s.stopChatSync() err := s.Client.Unlink(ctx) if err != nil { zerolog.Ctx(ctx).Err(err).Msg("Failed to unlink device") @@ -189,13 +180,13 @@ func (s *SignalClient) bridgeStateLoop(statusChan <-chan signalmeow.SignalConnec } case signalmeow.SignalConnectionEventLoggedOut: - s.stopChatSync() s.UserLogin.Log.Debug().Msg("Sending BadCredentials BridgeState") 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()}) } + s.cancelLifecycleContext() err = s.Client.ClearKeysAndDisconnect(context.TODO()) if err != nil { s.UserLogin.Log.Error().Err(err).Msg("Failed to clear keys and disconnect") @@ -220,15 +211,6 @@ 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, Message: "You're not logged into Signal"}) - return - } - s.updateRemoteProfile(ctx, false) - s.tryConnect(ctx, 0, true) -} - func (s *SignalClient) ConnectBackground(ctx context.Context, _ *bridgev2.ConnectBackgroundParams) error { s.queueEmptyWaiter.Clear() ch, unauthCh, err := s.Client.StartWebsockets(ctx) @@ -285,10 +267,10 @@ func (s *SignalClient) ConnectBackground(ctx context.Context, _ *bridgev2.Connec } func (s *SignalClient) Disconnect() { + s.cancelLifecycleContext() if s.Client == nil { return } - s.stopChatSync() err := s.Client.StopReceiveLoops() if err != nil { s.UserLogin.Log.Err(err).Msg("Failed to stop receive loops") @@ -296,16 +278,27 @@ func (s *SignalClient) Disconnect() { } func (s *SignalClient) postLoginConnect() { - ctx := s.UserLogin.Log.WithContext(s.Main.Bridge.BackgroundCtx) + ctx := s.newLifecycleContext(s.UserLogin.Log.WithContext(s.UserLogin.Bridge.BackgroundCtx)) + // TODO it would be more proper to only connect after syncing, + // but currently syncing will fetch group info online, so it has to be connected. s.tryConnect(ctx, 0, false) + if s.Client.Store.EphemeralBackupKey != nil { + go func() { + if s.Client.Store.MasterKey != nil { + s.Client.SyncStorage(ctx) + } else { + s.UserLogin.Log.Warn().Msg("No master key for storage sync before backup sync") + } + s.syncChats(ctx) + }() + } else if s.Client.Store.MasterKey != nil { + go s.Client.SyncStorage(ctx) + } } -func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSync bool) { +func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, doSync bool) { if ctx.Err() != nil { - zerolog.Ctx(ctx).Debug(). - Int("retry_count", retryCount). - AnErr("ctx_err", ctx.Err()). - Msg("Context is canceled, not trying to connect") + zerolog.Ctx(ctx).Debug().Err(ctx.Err()).Msg("Context canceled before starting receive loops") return } if retryCount == 0 { @@ -313,6 +306,10 @@ func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSy } ch, err := s.Client.StartReceiveLoops(ctx) if err != nil { + if contextStopped(ctx, err) { + zerolog.Ctx(ctx).Debug().Err(err).Msg("Context canceled while starting receive loops") + return + } zerolog.Ctx(ctx).Err(err).Msg("Failed to start receive loops") s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateTransientDisconnect, Error: "unknown-websocket-error", Message: err.Error()}) retryInSeconds := 2 << retryCount @@ -323,36 +320,14 @@ func (s *SignalClient) tryConnect(ctx context.Context, retryCount int, noLoginSy select { case <-time.After(time.Duration(retryInSeconds) * time.Second): case <-ctx.Done(): - zerolog.Ctx(ctx).Info().Msg("Context canceled, exit tryConnect") + zerolog.Ctx(ctx).Debug().Msg("Context canceled, exit tryConnect") return } - s.tryConnect(ctx, retryCount+1, noLoginSync) - return - } - syncCtx, cancel := context.WithCancel(ctx) - if oldCancel := s.cancelChatSync.Swap(&cancel); oldCancel != nil { - (*oldCancel)() - } - go s.bridgeStateLoop(ch) - if noLoginSync { - go s.syncChats(syncCtx, cancel) + s.tryConnect(ctx, retryCount+1, doSync) } else { - // TODO it would be more proper to only connect after syncing, - // but currently syncing will fetch group info online, so it has to be connected. - if s.Client.Store.EphemeralBackupKey != nil { - go func() { - if s.Client.Store.MasterKey != nil { - s.Client.SyncStorage(ctx) - } else { - s.UserLogin.Log.Warn().Msg("No master key for storage sync before backup sync") - } - s.syncChats(syncCtx, cancel) - }() - } else { - cancel() - if s.Client.Store.MasterKey != nil { - go s.Client.SyncStorage(ctx) - } + go s.bridgeStateLoop(ch) + if doSync { + go s.syncChats(ctx) } } } @@ -363,3 +338,31 @@ func (s *SignalClient) IsLoggedIn() bool { } return s.Client.IsLoggedIn() } + +func (s *SignalClient) Connect(ctx context.Context) { + if s.Client == nil { + s.UserLogin.BridgeState.Send(status.BridgeState{StateEvent: status.StateBadCredentials, Message: "You're not logged into Signal"}) + return + } + ctx = s.newLifecycleContext(s.UserLogin.Log.WithContext(ctx)) + s.updateRemoteProfile(ctx, false) + s.tryConnect(ctx, 0, true) +} + +func (s *SignalClient) newLifecycleContext(parent context.Context) context.Context { + ctx, cancel := context.WithCancel(parent) + if oldCancel := s.lifecycleCancel.Swap(&cancel); oldCancel != nil { + (*oldCancel)() + } + return ctx +} + +func (s *SignalClient) cancelLifecycleContext() { + if cancel := s.lifecycleCancel.Swap(nil); cancel != nil { + (*cancel)() + } +} + +func contextStopped(ctx context.Context, err error) bool { + return ctx.Err() != nil || errors.Is(err, context.Canceled) || errors.Is(err, context.DeadlineExceeded) +} diff --git a/pkg/connector/client_test.go b/pkg/connector/client_test.go new file mode 100644 index 0000000..c5d0b11 --- /dev/null +++ b/pkg/connector/client_test.go @@ -0,0 +1,196 @@ +package connector + +import ( + "context" + "testing" + "time" + + "github.com/rs/zerolog" + "maunium.net/go/mautrix/bridgev2" + bridgev2database "maunium.net/go/mautrix/bridgev2/database" + + "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" + signalstore "go.mau.fi/mautrix-signal/pkg/signalmeow/store" + "go.mau.fi/mautrix-signal/pkg/signalmeow/types" +) + +func TestLifecycleContextReplacementCancelsPrevious(t *testing.T) { + client := &SignalClient{} + + firstCtx := client.newLifecycleContext(context.Background()) + secondCtx := client.newLifecycleContext(context.Background()) + + select { + case <-firstCtx.Done(): + default: + t.Fatal("expected previous lifecycle context to be canceled") + } + select { + case <-secondCtx.Done(): + t.Fatal("expected current lifecycle context to remain active") + default: + } + + client.cancelLifecycleContext() + + select { + case <-secondCtx.Done(): + case <-time.After(time.Second): + t.Fatal("expected lifecycle context to be canceled") + } +} + +func TestSyncChatsStopsOnContextCancellation(t *testing.T) { + recipientLookupStarted := make(chan struct{}) + backupStore := &backupStoreStub{ + getBackupChatsFn: func(context.Context) ([]*signalstore.BackupChat, error) { + return []*signalstore.BackupChat{{ + Chat: &backuppb.Chat{ + Id: 1, + RecipientId: 2, + }, + }}, nil + }, + getBackupRecipientFn: func(ctx context.Context, recipientID uint64) (*backuppb.Recipient, error) { + close(recipientLookupStarted) + <-ctx.Done() + return nil, ctx.Err() + }, + } + + client := &SignalClient{ + UserLogin: newTestUserLogin(), + Client: &signalmeow.Client{ + Store: &signalstore.Device{ + BackupStore: backupStore, + }, + }, + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + done := make(chan struct{}) + go func() { + client.syncChats(ctx) + close(done) + }() + + select { + case <-recipientLookupStarted: + case <-time.After(time.Second): + t.Fatal("timed out waiting for backup recipient lookup") + } + cancel() + + select { + case <-done: + case <-time.After(time.Second): + t.Fatal("syncChats did not exit after context cancellation") + } + if client.UserLogin.Metadata.(*signalid.UserLoginMetadata).ChatsSynced { + t.Fatal("expected chat sync to stop before marking metadata as synced") + } +} + +func TestSyncChatSkipsMissingBackupRecipient(t *testing.T) { + backupStore := &backupStoreStub{ + getBackupRecipientFn: func(context.Context, uint64) (*backuppb.Recipient, error) { + return nil, nil + }, + } + + client := &SignalClient{ + Client: &signalmeow.Client{ + Store: &signalstore.Device{ + BackupStore: backupStore, + }, + }, + } + + ok := client.syncChat(context.Background(), &signalstore.BackupChat{ + Chat: &backuppb.Chat{ + Id: 1, + RecipientId: 2, + }, + }) + + if !ok { + t.Fatal("expected missing backup recipient to be skipped") + } +} + +func newTestUserLogin() *bridgev2.UserLogin { + return &bridgev2.UserLogin{ + UserLogin: &bridgev2database.UserLogin{ + Metadata: &signalid.UserLoginMetadata{}, + }, + Log: zerolog.Nop(), + } +} + +type backupStoreStub struct { + getBackupChatsFn func(context.Context) ([]*signalstore.BackupChat, error) + getBackupRecipientFn func(context.Context, uint64) (*backuppb.Recipient, error) + deleteBackupChatFn func(context.Context, uint64) error +} + +func (b *backupStoreStub) AddBackupRecipient(context.Context, *backuppb.Recipient) error { + return nil +} + +func (b *backupStoreStub) AddBackupChat(context.Context, *backuppb.Chat) error { + return nil +} + +func (b *backupStoreStub) AddBackupChatItem(context.Context, *backuppb.ChatItem) error { + return nil +} + +func (b *backupStoreStub) RecalculateChatCounts(context.Context) error { + return nil +} + +func (b *backupStoreStub) ClearBackup(context.Context) error { + return nil +} + +func (b *backupStoreStub) GetBackupRecipient(ctx context.Context, recipientID uint64) (*backuppb.Recipient, error) { + if b.getBackupRecipientFn != nil { + return b.getBackupRecipientFn(ctx, recipientID) + } + return nil, nil +} + +func (b *backupStoreStub) GetBackupChatByUserID(context.Context, libsignalgo.ServiceID) (*signalstore.BackupChat, error) { + return nil, nil +} + +func (b *backupStoreStub) GetBackupChatByGroupID(context.Context, types.GroupIdentifier) (*signalstore.BackupChat, error) { + return nil, nil +} + +func (b *backupStoreStub) GetBackupChats(ctx context.Context) ([]*signalstore.BackupChat, error) { + if b.getBackupChatsFn != nil { + return b.getBackupChatsFn(ctx) + } + return nil, nil +} + +func (b *backupStoreStub) GetBackupChatItems(context.Context, uint64, time.Time, bool, int) ([]*backuppb.ChatItem, error) { + return nil, nil +} + +func (b *backupStoreStub) DeleteBackupChat(ctx context.Context, chatID uint64) error { + if b.deleteBackupChatFn != nil { + return b.deleteBackupChatFn(ctx, chatID) + } + return nil +} + +func (b *backupStoreStub) DeleteBackupChatItems(context.Context, uint64, time.Time) error { + return nil +} diff --git a/pkg/connector/directmedia.go b/pkg/connector/directmedia.go index 05e2a07..0877d66 100644 --- a/pkg/connector/directmedia.go +++ b/pkg/connector/directmedia.go @@ -4,6 +4,7 @@ import ( "context" "encoding/base64" "fmt" + "io" "os" "maunium.net/go/mautrix/bridgev2" @@ -29,7 +30,6 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI return nil, fmt.Errorf("failed to parse direct media id: %w", err) } - var rawDataResp []byte switch info := info.(type) { case *signalid.DirectMediaAttachment: log.Info(). @@ -76,11 +76,18 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI return nil, fmt.Errorf("failed to to get group master key: %w", err) } - rawDataResp, err = client.Client.DownloadGroupAvatar(ctx, info.GroupAvatarPath, groupMasterKey) - if err != nil { - log.Err(err).Msg("Direct download failed") - return nil, err - } + return &mediaproxy.GetMediaResponseCallback{ + Callback: func(w io.Writer) (int64, error) { + data, err := client.Client.DownloadGroupAvatar(ctx, info.GroupAvatarPath, groupMasterKey) + if err != nil { + log.Err(err).Msg("Direct download failed") + return 0, err + } + + _, err = w.Write(data) + return int64(len(data)), err + }, + }, nil case *signalid.DirectMediaProfileAvatar: log.Info(). Stringer("user_id", info.UserID). @@ -104,27 +111,19 @@ func (s *SignalConnector) Download(ctx context.Context, mediaID networkid.MediaI return nil, fmt.Errorf("profile key not found") } - rawDataResp, err = client.Client.DownloadUserAvatar(ctx, info.ProfileAvatarPath, *profileKey) - if err != nil { - log.Err(err).Msg("Direct download failed") - return nil, err - } - case *signalid.DirectMediaSticker: - log.Info(). - Hex("pack_id", info.PackID). - Uint32("sticker_id", info.StickerID). - Msg("Direct downloading sticker") + return &mediaproxy.GetMediaResponseCallback{ + Callback: func(w io.Writer) (int64, error) { + data, err := client.Client.DownloadUserAvatar(ctx, info.ProfileAvatarPath, *profileKey) + if err != nil { + log.Err(err).Msg("Direct download failed") + return 0, err + } - rawDataResp, err = signalmeow.DownloadStickerPackItem(ctx, info.PackID, info.PackKey, info.StickerID) - if err != nil { - log.Err(err).Msg("Direct download failed") - return nil, err - } + _, err = w.Write(data) + return int64(len(data)), err + }, + }, nil default: return nil, fmt.Errorf("no downloader for direct media type: %T", info) } - if rawDataResp == nil { - return nil, fmt.Errorf("unexpected fallthrough with no data") - } - return mediaproxy.GetMediaResponseRawData(rawDataResp), nil } diff --git a/pkg/connector/handlematrix.go b/pkg/connector/handlematrix.go index da7b863..89b7d45 100644 --- a/pkg/connector/handlematrix.go +++ b/pkg/connector/handlematrix.go @@ -137,7 +137,7 @@ func (s *SignalClient) doSendMessage( } msgID := signalid.MakeMessageID(s.Client.Store.ACI, ts) msg.AddPendingToIgnore(networkid.TransactionID(msgID)) - err := s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(converted)) + err := s.sendMessage(ctx, msg.Portal.ID, &signalpb.Content{DataMessage: converted}) if err != nil { return nil, bridgev2.WrapErrorInStatus(err).WithSendNotice(true) } @@ -173,50 +173,19 @@ func (s *SignalClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.Matri } ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) converted.Timestamp = &ts - err = s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapEditMessage(&signalpb.EditMessage{ + err = s.sendMessage(ctx, msg.Portal.ID, &signalpb.Content{EditMessage: &signalpb.EditMessage{ TargetSentTimestamp: proto.Uint64(targetSentTimestamp), DataMessage: converted, - })) + }}) if err != nil { 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: len(converted.Attachments) > 0} msg.EditTarget.EditCount++ - if prevID != msg.EditTarget.ID { - err = s.Main.Bridge.DB.Message.Update(ctx, msg.EditTarget) - if err != nil { - zerolog.Ctx(ctx).Err(err).Msg("Failed to save message after editing") - } else { - saveEditStub(ctx, s.Main.Bridge, prevID, msg.EditTarget) - } - } return nil } -// saveEditStub saves a placeholder message row pointing at the pre-edit ID of a message, such that -// duplicate checks on incoming edits find it and are dropped. This is necessary because the first -// time we see an edit it modifies the ID in place. -func saveEditStub(ctx context.Context, bridge *bridgev2.Bridge, prevID networkid.MessageID, target *database.Message) { - stub := &database.Message{ - ID: prevID, - PartID: editStubPartID, - Room: target.Room, - SenderID: target.SenderID, - SenderMXID: target.SenderMXID, - Timestamp: target.Timestamp, - } - stub.SetFakeMXID() - err := bridge.DB.Message.Insert(ctx, stub) - if err != nil { - zerolog.Ctx(ctx).Warn().Err(err). - Str("prev_message_id", string(prevID)). - Str("message_id", string(target.ID)). - Msg("Failed to save stub row for pre-edit message ID") - } -} - func (s *SignalClient) PreHandleMatrixReaction(ctx context.Context, msg *bridgev2.MatrixReaction) (bridgev2.MatrixReactionPreResponse, error) { return bridgev2.MatrixReactionPreResponse{ SenderID: signalid.MakeUserID(s.Client.Store.ACI), @@ -231,16 +200,19 @@ func (s *SignalClient) HandleMatrixReaction(ctx context.Context, msg *bridgev2.M return nil, fmt.Errorf("failed to parse target message ID: %w", err) } ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) - err = s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(&signalpb.DataMessage{ - Timestamp: proto.Uint64(ts), - RequiredProtocolVersion: proto.Uint32(uint32(signalpb.DataMessage_REACTIONS)), - Reaction: &signalpb.DataMessage_Reaction{ - Emoji: proto.String(msg.PreHandleResp.Emoji), - Remove: proto.Bool(false), - TargetAuthorAciBinary: targetAuthorACI[:], - TargetSentTimestamp: proto.Uint64(targetSentTimestamp), + wrappedContent := &signalpb.Content{ + DataMessage: &signalpb.DataMessage{ + Timestamp: proto.Uint64(ts), + RequiredProtocolVersion: proto.Uint32(uint32(signalpb.DataMessage_REACTIONS)), + Reaction: &signalpb.DataMessage_Reaction{ + Emoji: proto.String(msg.PreHandleResp.Emoji), + Remove: proto.Bool(false), + TargetAuthorAciBinary: targetAuthorACI[:], + TargetSentTimestamp: proto.Uint64(targetSentTimestamp), + }, }, - })) + } + err = s.sendMessage(ctx, msg.Portal.ID, wrappedContent) if err != nil { return nil, err } @@ -253,16 +225,19 @@ func (s *SignalClient) HandleMatrixReactionRemove(ctx context.Context, msg *brid return fmt.Errorf("failed to parse target message ID: %w", err) } ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) - err = s.sendMessage(ctx, msg.Portal.ID, signalmeow.WrapDataMessage(&signalpb.DataMessage{ - Timestamp: proto.Uint64(ts), - RequiredProtocolVersion: proto.Uint32(uint32(signalpb.DataMessage_REACTIONS)), - Reaction: &signalpb.DataMessage_Reaction{ - Emoji: proto.String(msg.TargetReaction.Emoji), - Remove: proto.Bool(true), - TargetAuthorAciBinary: targetAuthorACI[:], - TargetSentTimestamp: proto.Uint64(targetSentTimestamp), + wrappedContent := &signalpb.Content{ + DataMessage: &signalpb.DataMessage{ + Timestamp: proto.Uint64(ts), + RequiredProtocolVersion: proto.Uint32(uint32(signalpb.DataMessage_REACTIONS)), + Reaction: &signalpb.DataMessage_Reaction{ + Emoji: proto.String(msg.TargetReaction.Emoji), + Remove: proto.Bool(true), + TargetAuthorAciBinary: targetAuthorACI[:], + TargetSentTimestamp: proto.Uint64(targetSentTimestamp), + }, }, - })) + } + err = s.sendMessage(ctx, msg.Portal.ID, wrappedContent) if err != nil { return err } @@ -277,12 +252,15 @@ func (s *SignalClient) HandleMatrixMessageRemove(ctx context.Context, msg *bridg return fmt.Errorf("cannot delete other people's messages") } 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), + wrappedContent := &signalpb.Content{ + DataMessage: &signalpb.DataMessage{ + Timestamp: proto.Uint64(ts), + Delete: &signalpb.DataMessage_Delete{ + TargetSentTimestamp: proto.Uint64(targetSentTimestamp), + }, }, - })) + } + err = s.sendMessage(ctx, msg.Portal.ID, wrappedContent) if err != nil { return err } @@ -409,7 +387,7 @@ func (s *SignalClient) HandleMatrixRoomAvatar(ctx context.Context, msg *bridgev2 return false, fmt.Errorf("failed to download avatar: %w", err) } avatarHash = sha256.Sum256(data) - avatarPath, err = s.Client.UploadGroupAvatar(ctx, data, groupID, "") + avatarPath, err = s.Client.UploadGroupAvatar(ctx, data, groupID) if err != nil { return false, fmt.Errorf("failed to reupload avatar: %w", err) } @@ -569,7 +547,7 @@ func (s *SignalClient) HandleMatrixMembership(ctx context.Context, msg *bridgev2 if err != nil { return nil, err } - if (msg.Type == bridgev2.Invite || msg.Type == bridgev2.AcceptKnock) && targetSignalID.Type != libsignalgo.ServiceIDTypePNI { + if msg.Type == bridgev2.Invite && targetSignalID.Type != libsignalgo.ServiceIDTypePNI { err = targetIntent.EnsureJoined(ctx, msg.Portal.MXID) if err != nil { return nil, err @@ -710,11 +688,13 @@ func (s *SignalClient) HandleMatrixDisappearingTimer(ctx context.Context, msg *b }) } else { ts := getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender) - res := s.Client.SendMessage(ctx, userID, signalmeow.WrapDataMessage(&signalpb.DataMessage{ - Timestamp: ptr.Ptr(ts), - Flags: ptr.Ptr(uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE)), - ExpireTimer: ptr.Ptr(uint32(msg.Content.Timer.Seconds())), - })) + res := s.Client.SendMessage(ctx, userID, &signalpb.Content{ + DataMessage: &signalpb.DataMessage{ + Timestamp: ptr.Ptr(ts), + Flags: ptr.Ptr(uint32(signalpb.DataMessage_EXPIRATION_TIMER_UPDATE)), + ExpireTimer: ptr.Ptr(uint32(msg.Content.Timer.Seconds())), + }, + }) if !res.WasSuccessful { return false, res.Error } @@ -793,8 +773,8 @@ func (s *SignalClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2 recipientID := s.Client.Store.ACIServiceID() // Send DeleteForMe sync message to self - result := s.Client.SendMessage(ctx, recipientID, signalmeow.WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_DeleteForMe_{ + result := s.Client.SendMessage(ctx, recipientID, &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ DeleteForMe: &signalpb.SyncMessage_DeleteForMe{ ConversationDeletes: []*signalpb.SyncMessage_DeleteForMe_ConversationDelete{{ Conversation: conversationID, @@ -803,7 +783,7 @@ func (s *SignalClient) HandleMatrixDeleteChat(ctx context.Context, msg *bridgev2 }}, }, }, - })) + }) zerolog.Ctx(ctx).Debug(). Str("portal_id", string(msg.Portal.ID)). @@ -842,8 +822,7 @@ func (s *SignalClient) HandleMatrixPollVote(ctx context.Context, msg *bridgev2.M if err != nil { return nil, err } - meta := msg.VoteTo.Metadata.(*signalid.MessageMetadata) - mxOptions := meta.MatrixPollOptionIDs + mxOptions := msg.VoteTo.Metadata.(*signalid.MessageMetadata).MatrixPollOptionIDs optionIndexes := make([]uint32, len(msg.Content.Response.Answers)) for i, answer := range msg.Content.Response.Answers { if idx := slices.Index(mxOptions, answer); idx >= 0 { @@ -854,20 +833,12 @@ func (s *SignalClient) HandleMatrixPollVote(ctx context.Context, msg *bridgev2.M return nil, fmt.Errorf("unknown poll answer ID: %s", answer) } } - if meta.VoteCount == nil { - meta.VoteCount = make(map[string]uint32) - } - meta.VoteCount[s.Client.Store.ACI.String()]++ - err = s.Main.Bridge.DB.Message.Update(ctx, msg.VoteTo) - if err != nil { - zerolog.Ctx(ctx).Warn().Err(err).Msg("Failed to update poll message with new vote count") - } converted := &signalpb.DataMessage{ PollVote: &signalpb.DataMessage_PollVote{ TargetAuthorAciBinary: senderACI[:], TargetSentTimestamp: &msgTS, OptionIndexes: optionIndexes, - VoteCount: proto.Uint32(meta.VoteCount[s.Client.Store.ACI.String()]), + VoteCount: proto.Uint32(1), // TODO }, RequiredProtocolVersion: proto.Uint32(0), } @@ -897,11 +868,11 @@ func (s *SignalClient) syncMessageRequestResponse( } else { return fmt.Errorf("invalid portal ID for message request response: %s", portal.ID) } - res := s.Client.SendMessage(ctx, libsignalgo.NewACIServiceID(s.Client.Store.ACI), signalmeow.WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_MessageRequestResponse_{ + res := s.Client.SendMessage(ctx, libsignalgo.NewACIServiceID(s.Client.Store.ACI), &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ MessageRequestResponse: accept, }, - })) + }) if !res.WasSuccessful { return res.Error } @@ -934,13 +905,13 @@ func (s *SignalClient) HandleMatrixAcceptMessageRequest(ctx context.Context, msg } } res := s.Client.SendMessage(ctx, userID, &signalpb.Content{ - Content: &signalpb.Content_DataMessage{DataMessage: &signalpb.DataMessage{ + DataMessage: &signalpb.DataMessage{ Flags: proto.Uint32(uint32(signalpb.DataMessage_PROFILE_KEY_UPDATE)), ProfileKey: profileKey.Slice(), Timestamp: proto.Uint64(getTimestampForEvent(msg.InputTransactionID, msg.Event, msg.OrigSender)), RequiredProtocolVersion: proto.Uint32(0), - }}, + }, PniSignatureMessage: pniSig, }) if !res.WasSuccessful { diff --git a/pkg/connector/handlesignal.go b/pkg/connector/handlesignal.go index 7618514..bc0dbe3 100644 --- a/pkg/connector/handlesignal.go +++ b/pkg/connector/handlesignal.go @@ -20,7 +20,6 @@ import ( "context" "encoding/base64" "fmt" - "slices" "strings" "time" @@ -185,7 +184,7 @@ func (evt *Bv2ChatEvent) GetType() bridgev2.RemoteEventType { return bridgev2.RemoteEventReactionRemove } return bridgev2.RemoteEventReaction - case innerEvt.Delete != nil, innerEvt.AdminDelete != nil: + case innerEvt.Delete != nil: return bridgev2.RemoteEventMessageRemove case innerEvt.GetGroupV2().GetGroupChange() != nil: return bridgev2.RemoteEventChatInfoChange @@ -304,11 +303,6 @@ func (evt *Bv2ChatEvent) GetTargetMessage() networkid.MessageID { targetSentTS = innerEvt.Reaction.GetTargetSentTimestamp() case innerEvt.Delete != nil: targetSentTS = innerEvt.Delete.GetTargetSentTimestamp() - case innerEvt.AdminDelete != nil: - if len(innerEvt.AdminDelete.GetTargetAuthorAciBinary()) == 16 { - targetAuthorACI = uuid.UUID(innerEvt.AdminDelete.GetTargetAuthorAciBinary()) - } - targetSentTS = innerEvt.AdminDelete.GetTargetSentTimestamp() default: return "" } @@ -359,52 +353,20 @@ func (evt *Bv2ChatEvent) ConvertMessage(ctx context.Context, portal *bridgev2.Po return converted, nil } -const editStubPartID networkid.PartID = "editstub" - -func isEditStub(msg *database.Message) bool { - return msg.PartID == editStubPartID -} - -// editStubMessage returns a non-bridged message part which is saved as a placeholder row pointing -// at the pre-edit ID of a message, such that duplicate checks on incoming edits find it and are -// dropped. This is necessary because the first time we see an edit it modifies the ID in place. -func editStubMessage() *bridgev2.ConvertedMessage { - return &bridgev2.ConvertedMessage{ - Parts: []*bridgev2.ConvertedMessagePart{{ - ID: editStubPartID, - Type: event.EventMessage, - Content: &event.MessageEventContent{}, - DontBridge: true, - }}, - } -} - func (evt *Bv2ChatEvent) ConvertEdit(ctx context.Context, portal *bridgev2.Portal, intent bridgev2.MatrixAPI, existing []*database.Message) (*bridgev2.ConvertedEdit, error) { editMsg, ok := evt.Event.(*signalpb.EditMessage) if !ok { return nil, fmt.Errorf("ConvertEdit() called for non-EditMessage event") } - existing = slices.DeleteFunc(slices.Clone(existing), isEditStub) - if len(existing) == 0 { - return nil, fmt.Errorf("%w: edit target has already been edited", bridgev2.ErrIgnoringRemoteEvent) - } // TODO tell converter about existing parts to avoid reupload? converted := evt.s.Main.MsgConv.ToMatrix(ctx, evt.s.Client, portal, evt.Info.Sender, intent, editMsg.GetDataMessage(), nil) // TODO can anything other than the text be edited? editPart := converted.Parts[len(converted.Parts)-1].ToEditPart(existing[len(existing)-1]) - prevID := editPart.Part.ID - // Clone the database message struct to avoid mutating the ID. - // The ID from the original struct is used for AddedParts (we specifically want the old ID for that) - editPart.Part = ptr.Clone(editPart.Part) editPart.Part.EditCount++ editPart.Part.ID = signalid.MakeMessageID(evt.Info.Sender, editMsg.GetDataMessage().GetTimestamp()) - convertedEdit := &bridgev2.ConvertedEdit{ + return &bridgev2.ConvertedEdit{ ModifiedParts: []*bridgev2.ConvertedEditPart{editPart}, - } - if prevID != editPart.Part.ID { - convertedEdit.AddedParts = editStubMessage() - } - return convertedEdit, nil + }, nil } func (evt *Bv2ChatEvent) GetStreamOrder() int64 { @@ -459,7 +421,7 @@ func (b *Bv2Receipt) GetReadUpTo() time.Time { return time.Time{} } -var _ bridgev2.RemoteReadReceipt = (*Bv2Receipt)(nil) +var _ bridgev2.RemoteReceipt = (*Bv2Receipt)(nil) func convertReceipts[T any](ctx context.Context, input []T, getMessageFunc func(ctx context.Context, msgID T) (*database.Message, error)) map[networkid.PortalKey]*Bv2Receipt { log := zerolog.Ctx(ctx) @@ -505,7 +467,7 @@ func (s *SignalClient) handleSignalReceipt(evt *events.Receipt) bool { Stringer("sender_id", evt.Sender). Stringer("receipt_type", evt.Content.GetType()). Logger() - ctx := log.WithContext(s.Main.Bridge.BackgroundCtx) + ctx := log.WithContext(context.TODO()) receipts := convertReceipts(ctx, evt.Content.Timestamp, func(ctx context.Context, msgTS uint64) (*database.Message, error) { return s.Main.Bridge.DB.Message.GetFirstPartByID(ctx, s.UserLogin.ID, signalid.MakeMessageID(s.Client.Store.ACI, msgTS)) }) @@ -516,7 +478,7 @@ func (s *SignalClient) handleSignalReadSelf(evt *events.ReadSelf) bool { log := s.UserLogin.Log.With(). Str("action", "handle signal read self"). Logger() - ctx := log.WithContext(s.Main.Bridge.BackgroundCtx) + ctx := log.WithContext(context.TODO()) receipts := convertReceipts(ctx, evt.Messages, func(ctx context.Context, msgInfo *signalpb.SyncMessage_Read) (*database.Message, error) { aciUUID, err := signalmeow.ParseStringOrBinaryUUID(msgInfo.GetSenderAci(), msgInfo.GetSenderAciBinary()) if err != nil { @@ -726,7 +688,7 @@ func (s *SignalClient) handleSignalACIFound(evt *events.ACIFound) { Stringer("aci", evt.ACI). Stringer("pni", evt.PNI). Logger() - ctx := log.WithContext(s.Main.Bridge.BackgroundCtx) + ctx := log.WithContext(context.TODO()) pniPortalKey := s.makeDMPortalKey(evt.PNI) aciPortalKey := s.makeDMPortalKey(evt.ACI) result, portal, err := s.Main.Bridge.ReIDPortal(ctx, pniPortalKey, aciPortalKey) @@ -746,7 +708,7 @@ func (s *SignalClient) handleSignalACIFound(evt *events.ACIFound) { func (s *SignalClient) handleSignalContactList(evt *events.ContactList) { log := s.UserLogin.Log.With().Str("action", "handle contact list").Logger() - ctx := log.WithContext(s.Main.Bridge.BackgroundCtx) + ctx := log.WithContext(context.TODO()) for _, contact := range evt.Contacts { if contact.ACI == uuid.Nil { continue diff --git a/pkg/connector/login.go b/pkg/connector/login.go index 60fb936..9116390 100644 --- a/pkg/connector/login.go +++ b/pkg/connector/login.go @@ -18,12 +18,9 @@ package connector import ( "context" - "errors" "fmt" - "net/http" "time" - "github.com/coder/websocket" "github.com/google/uuid" "maunium.net/go/mautrix/bridgev2" "maunium.net/go/mautrix/bridgev2/database" @@ -44,7 +41,7 @@ func (s *SignalConnector) GetLoginFlows() []bridgev2.LoginFlow { func (s *SignalConnector) CreateLogin(ctx context.Context, user *bridgev2.User, flowID string) (bridgev2.LoginProcess, error) { if flowID != "qr" { - return nil, bridgev2.ErrInvalidLoginFlowID + return nil, fmt.Errorf("invalid login flow ID") } return &QRLogin{User: user, Main: s}, nil } @@ -69,78 +66,10 @@ func (qr *QRLogin) Cancel() { const ( LoginStepQR = "fi.mau.signal.login.qr" + LoginStepProcess = "fi.mau.signal.login.processing" LoginStepComplete = "fi.mau.signal.login.complete" ) -const ( - qrRefreshInterval = 45 * time.Second - maxQRRefreshes = 20 -) - -var ( - ErrLoginTimedOut = bridgev2.RespError{ - ErrCode: "FI.MAU.BRIDGE.LOGIN_TIMED_OUT", - Err: "The QR code wasn't scanned in time, please start a new login", - StatusCode: http.StatusGone, - } - ErrLoginCancelled = bridgev2.RespError{ - ErrCode: "FI.MAU.BRIDGE.LOGIN_CANCELLED", - Err: "Login process was cancelled", - StatusCode: http.StatusGone, - } - ErrDeviceLinkMissingCapability = bridgev2.RespError{ - ErrCode: "FI.MAU.SIGNAL.DEVICE_LINK_MISSING_CAPABILITY", - Err: "Signal rejected linking because the bridge is missing a capability required by your account's other devices. Please try again later", - StatusCode: http.StatusConflict, - } - ErrDeviceLimitReached = bridgev2.RespError{ - ErrCode: "FI.MAU.SIGNAL.DEVICE_LIMIT_REACHED", - Err: "Your Signal account already has the maximum number of linked devices. Remove one in the Signal app and try again", - StatusCode: http.StatusBadRequest, - } - ErrDeviceLinkCodeInvalid = bridgev2.RespError{ - ErrCode: "FI.MAU.SIGNAL.DEVICE_LINK_CODE_INVALID", - Err: "The scanned QR code was invalid or already used, please start a new login", - StatusCode: http.StatusForbidden, - } - 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.StatusTooManyRequests, - } - ErrDeviceLinkRejected = bridgev2.RespError{ - ErrCode: "FI.MAU.SIGNAL.DEVICE_LINK_REJECTED", - Err: "Signal rejected linking the device", - StatusCode: http.StatusBadRequest, - } -) - -// Statuses of PUT /v1/devices/link, per Signal-Server's DeviceController -func wrapProvisioningError(err error) error { - var linkErr signalmeow.DeviceLinkError - if errors.As(err, &linkErr) { - switch linkErr.StatusCode { - case http.StatusConflict: - return ErrDeviceLinkMissingCapability - case http.StatusLengthRequired: - return ErrDeviceLimitReached - case http.StatusForbidden: - return ErrDeviceLinkCodeInvalid - case http.StatusTooManyRequests: - return ErrDeviceLinkRateLimited - default: - if linkErr.Message != "" { - return ErrDeviceLinkRejected.AppendMessage(" (HTTP %d: %s)", linkErr.StatusCode, linkErr.Message) - } - return ErrDeviceLinkRejected.AppendMessage(" (HTTP %d)", linkErr.StatusCode) - } - } - if websocket.CloseStatus(err) == websocket.StatusGoingAway { - return ErrLoginTimedOut - } - return err -} - func (qr *QRLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) { log := qr.Main.Bridge.Log.With(). Str("action", "login"). @@ -156,16 +85,14 @@ func (qr *QRLogin) Start(ctx context.Context) (*bridgev2.LoginStep, error) { select { case resp = <-qr.ProvChan: if resp.Err != nil { - return nil, wrapProvisioningError(resp.Err) + return nil, resp.Err } else if resp.State != signalmeow.StateProvisioningURLReceived { return nil, fmt.Errorf("unexpected state %v", resp.State) } case <-ctx.Done(): cancel() - if errors.Is(ctx.Err(), context.DeadlineExceeded) { - return nil, ErrLoginTimedOut - } - return nil, ErrLoginCancelled + return nil, ctx.Err() + // TODO separate timeout here? } return &bridgev2.LoginStep{ Type: bridgev2.LoginStepTypeDisplayAndWait, @@ -187,7 +114,7 @@ func (qr *QRLogin) Wait(ctx context.Context) (*bridgev2.LoginStep, error) { case resp := <-qr.ProvChan: if resp.Err != nil { qr.cancelChan() - return nil, wrapProvisioningError(resp.Err) + return nil, resp.Err } else if resp.State != signalmeow.StateProvisioningDataReceived { qr.cancelChan() return nil, fmt.Errorf("unexpected state %v", resp.State) @@ -199,20 +126,17 @@ func (qr *QRLogin) Wait(ctx context.Context) (*bridgev2.LoginStep, error) { // Server will timeout the request after 60 seconds, but Signal Desktop opens // a new socket and gets a new QR code after 45 seconds. We should do the same. - case <-time.After(qrRefreshInterval): + case <-time.After(45 * time.Second): qr.cancelChan() qr.newQRCount++ - if qr.newQRCount >= maxQRRefreshes { - return nil, ErrLoginTimedOut + if qr.newQRCount >= 6 { + return nil, fmt.Errorf("too many QR code refreshes") } return qr.Start(ctx) case <-ctx.Done(): qr.cancelChan() - if errors.Is(ctx.Err(), context.DeadlineExceeded) { - return nil, ErrLoginTimedOut - } - return nil, ErrLoginCancelled + return nil, ctx.Err() } } diff --git a/pkg/libsignalgo/accountentropy.go b/pkg/libsignalgo/accountentropy.go index 712f886..d1ffe35 100644 --- a/pkg/libsignalgo/accountentropy.go +++ b/pkg/libsignalgo/accountentropy.go @@ -20,18 +20,18 @@ package libsignalgo #include "./libsignal-ffi.h" */ import "C" -import "runtime" +import ( + "runtime" + "unsafe" +) type AccountEntropyPool string -type SVRKey = fixedArray32 func (aep AccountEntropyPool) DeriveSVRKey() ([]byte, error) { - var out SVRKey - aepC, free := GoStringToCString(string(aep)) - defer free() + var out [C.SignalSVR_KEY_LEN]byte signalFfiError := C.signal_account_entropy_pool_derive_svr_key( - out.cFixedArray(), - aepC, + (*[C.SignalSVR_KEY_LEN]C.uint8_t)(unsafe.Pointer(&out)), + C.CString(string(aep)), ) runtime.KeepAlive(aep) if signalFfiError != nil { @@ -41,12 +41,10 @@ func (aep AccountEntropyPool) DeriveSVRKey() ([]byte, error) { } func (aep AccountEntropyPool) DeriveBackupKey() ([]byte, error) { - var out BackupKey - aepC, free := GoStringToCString(string(aep)) - defer free() + var out [C.SignalBACKUP_KEY_LEN]byte signalFfiError := C.signal_account_entropy_pool_derive_backup_key( - out.cFixedArray(), - aepC, + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(&out)), + C.CString(string(aep)), ) runtime.KeepAlive(aep) if signalFfiError != nil { diff --git a/pkg/libsignalgo/address.go b/pkg/libsignalgo/address.go index 8865816..cfc6e58 100644 --- a/pkg/libsignalgo/address.go +++ b/pkg/libsignalgo/address.go @@ -46,9 +46,7 @@ func NewUUIDAddressFromString(uuidStr string, deviceID uint) (*Address, error) { func newAddress(name string, deviceID uint) (*Address, error) { var pa C.SignalMutPointerProtocolAddress - nameStr, freeNameStr := GoStringToCString(name) - defer freeNameStr() - signalFfiError := C.signal_address_new(&pa, nameStr, C.uint(deviceID)) + signalFfiError := C.signal_address_new(&pa, C.CString(name), C.uint(deviceID)) if signalFfiError != nil { return nil, wrapError(signalFfiError) } @@ -83,7 +81,7 @@ func (pa *Address) CancelFinalizer() { } func (pa *Address) Name() (string, error) { - var name C.SignalCStringPtr + var name *C.char signalFfiError := C.signal_address_get_name(&name, pa.constPtr()) runtime.KeepAlive(pa) if signalFfiError != nil { diff --git a/pkg/libsignalgo/authcredential.go b/pkg/libsignalgo/authcredential.go index 410eabd..ab759b2 100644 --- a/pkg/libsignalgo/authcredential.go +++ b/pkg/libsignalgo/authcredential.go @@ -24,16 +24,15 @@ package libsignalgo import "C" import ( "fmt" + "unsafe" "github.com/google/uuid" ) -// type AuthCredential [181]byte -// type AuthCredentialResponse [361]byte -const AuthCredentialWithPniLength = 265 - -type AuthCredentialWithPni [AuthCredentialWithPniLength]byte -type AuthCredentialWithPniResponse [425]byte +// type AuthCredential [C.SignalAUTH_CREDENTIAL_LEN]byte +// type AuthCredentialResponse [C.SignalAUTH_CREDENTIAL_RESPONSE_LEN]byte +type AuthCredentialWithPni [C.SignalAUTH_CREDENTIAL_WITH_PNI_LEN]byte +type AuthCredentialWithPniResponse [C.SignalAUTH_CREDENTIAL_WITH_PNI_RESPONSE_LEN]byte type AuthCredentialPresentation []byte func (ac *AuthCredentialWithPni) Slice() []byte { @@ -52,8 +51,8 @@ func ReceiveAuthCredentialWithPni( signalFfiError := C.signal_server_public_params_receive_auth_credential_with_pni_as_service_id( &c_result, C.SignalConstPointerServerPublicParams{serverPublicParams}, - NewACIServiceID(aci).cConstFixedArray(), - NewPNIServiceID(pni).cConstFixedArray(), + NewACIServiceID(aci).CFixedBytes(), + NewPNIServiceID(pni).CFixedBytes(), C.uint64_t(redemptionTime), BytesToBuffer(authCredResponse[:]), ) @@ -61,8 +60,8 @@ func ReceiveAuthCredentialWithPni( 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) + if len(resultBytes) != C.SignalAUTH_CREDENTIAL_WITH_PNI_LEN { + return nil, fmt.Errorf("invalid response length %d (expected %d)", len(resultBytes), C.SignalAUTH_CREDENTIAL_WITH_PNI_LEN) } return (*AuthCredentialWithPni)(resultBytes), nil } @@ -84,12 +83,14 @@ func CreateAuthCredentialWithPniPresentation( authCredWithPni AuthCredentialWithPni, ) (*AuthCredentialPresentation, error) { var c_result C.SignalOwnedBuffer = C.SignalOwnedBuffer{} + c_randomness := (*[C.SignalRANDOMNESS_LEN]C.uchar)(unsafe.Pointer(&randomness[0])) + c_groupSecretParams := (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uchar)(unsafe.Pointer(&groupSecretParams[0])) signalFfiError := C.signal_server_public_params_create_auth_credential_with_pni_presentation_deterministic( &c_result, C.SignalConstPointerServerPublicParams{serverPublicParams}, - randomness.cConstFixedArray(), - groupSecretParams.cConstFixedArray(), + c_randomness, + c_groupSecretParams, BytesToBuffer(authCredWithPni[:]), ) if signalFfiError != nil { diff --git a/pkg/libsignalgo/backupkey.go b/pkg/libsignalgo/backupkey.go index b5f53f2..fd8a800 100644 --- a/pkg/libsignalgo/backupkey.go +++ b/pkg/libsignalgo/backupkey.go @@ -27,9 +27,7 @@ import ( "go.mau.fi/util/random" ) -const BackupKeyLength = 32 - -type BackupKey [BackupKeyLength]byte +type BackupKey [C.SignalBACKUP_KEY_LEN]byte func (bk *BackupKey) Slice() []byte { if bk == nil { @@ -40,25 +38,17 @@ func (bk *BackupKey) Slice() []byte { const BackupIDLength = 16 -type BackupID = fixedArray16 -type BackupMetadataKey = fixedArray32 -type BackupMediaID = fixedArray15 -type BackupMediaKey = fixedArray64 - -func (bk *BackupKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { - return (*C.SignalType_FixedArray32_uint8_t)(unsafe.Pointer(bk)) -} - -func (bk *BackupKey) cConstFixedArray() cFixedArray32Compat { - return cFixedArray32Compat(bk.cFixedArray()) -} +type BackupID [BackupIDLength]byte +type BackupMetadataKey [C.SignalLOCAL_BACKUP_METADATA_KEY_LEN]byte +type BackupMediaID [C.SignalMEDIA_ID_LEN]byte +type BackupMediaKey [C.SignalMEDIA_ENCRYPTION_KEY_LEN]byte func GenerateRandomBackupKey() *BackupKey { - return (*BackupKey)(random.Bytes(BackupKeyLength)) + return (*BackupKey)(random.Bytes(C.SignalBACKUP_KEY_LEN)) } func BytesToBackupKey(bytes []byte) *BackupKey { - if len(bytes) != BackupKeyLength { + if len(bytes) != C.SignalBACKUP_KEY_LEN { return nil } return (*BackupKey)(bytes) @@ -67,9 +57,9 @@ func BytesToBackupKey(bytes []byte) *BackupKey { func (bk *BackupKey) DeriveBackupID(aci ServiceID) (*BackupID, error) { var out BackupID signalFfiError := C.signal_backup_key_derive_backup_id( - out.cFixedArray(), - bk.cConstFixedArray(), - aci.cConstFixedArray(), + (*[BackupIDLength]C.uint8_t)(unsafe.Pointer(&out)), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(bk)), + aci.CFixedBytes(), ) runtime.KeepAlive(bk) if signalFfiError != nil { @@ -82,8 +72,8 @@ func (bk *BackupKey) DeriveECKey(aci ServiceID) (*PrivateKey, error) { var out C.SignalMutPointerPrivateKey signalFfiError := C.signal_backup_key_derive_ec_key( &out, - bk.cConstFixedArray(), - aci.cConstFixedArray(), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(&bk)), + aci.CFixedBytes(), ) runtime.KeepAlive(bk) if signalFfiError != nil { @@ -95,8 +85,8 @@ func (bk *BackupKey) DeriveECKey(aci ServiceID) (*PrivateKey, error) { func (bk *BackupKey) DeriveLocalBackupMetadataKey() (*BackupMetadataKey, error) { var out BackupMetadataKey signalFfiError := C.signal_backup_key_derive_local_backup_metadata_key( - out.cFixedArray(), - bk.cConstFixedArray(), + (*[C.SignalLOCAL_BACKUP_METADATA_KEY_LEN]C.uint8_t)(unsafe.Pointer(&out)), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(bk)), ) runtime.KeepAlive(bk) if signalFfiError != nil { @@ -107,12 +97,10 @@ func (bk *BackupKey) DeriveLocalBackupMetadataKey() (*BackupMetadataKey, error) func (bk *BackupKey) DeriveMediaID(mediaName string) (*BackupMediaID, error) { var out BackupMediaID - mediaNameStr, mediaNameFree := GoStringToCString(mediaName) - defer mediaNameFree() signalFfiError := C.signal_backup_key_derive_media_id( - out.cFixedArray(), - bk.cConstFixedArray(), - mediaNameStr, + (*[C.SignalMEDIA_ID_LEN]C.uint8_t)(unsafe.Pointer(&out)), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(bk)), + C.CString(mediaName), ) runtime.KeepAlive(bk) if signalFfiError != nil { @@ -124,9 +112,9 @@ func (bk *BackupKey) DeriveMediaID(mediaName string) (*BackupMediaID, error) { func (bk *BackupKey) DeriveMediaEncryptionKey(mediaID *BackupMediaID) (*BackupMediaKey, error) { var out BackupMediaKey signalFfiError := C.signal_backup_key_derive_media_encryption_key( - out.cFixedArray(), - bk.cConstFixedArray(), - mediaID.cConstFixedArray(), + (*[C.SignalMEDIA_ENCRYPTION_KEY_LEN]C.uint8_t)(unsafe.Pointer(&out)), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(bk)), + (*[C.SignalMEDIA_ID_LEN]C.uint8_t)(unsafe.Pointer(mediaID)), ) runtime.KeepAlive(bk) runtime.KeepAlive(mediaID) @@ -139,9 +127,9 @@ func (bk *BackupKey) DeriveMediaEncryptionKey(mediaID *BackupMediaID) (*BackupMe func (bk *BackupKey) DeriveThumbnailTransitEncryptionKey(mediaID *BackupMediaID) (*BackupMediaKey, error) { var out BackupMediaKey signalFfiError := C.signal_backup_key_derive_thumbnail_transit_encryption_key( - out.cFixedArray(), - bk.cConstFixedArray(), - mediaID.cConstFixedArray(), + (*[C.SignalMEDIA_ENCRYPTION_KEY_LEN]C.uint8_t)(unsafe.Pointer(&out)), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(bk)), + (*[C.SignalMEDIA_ID_LEN]C.uint8_t)(unsafe.Pointer(mediaID)), ) runtime.KeepAlive(bk) runtime.KeepAlive(mediaID) diff --git a/pkg/libsignalgo/conversions.go b/pkg/libsignalgo/conversions.go index a70e782..1963687 100644 --- a/pkg/libsignalgo/conversions.go +++ b/pkg/libsignalgo/conversions.go @@ -18,20 +18,12 @@ package libsignalgo /* #include "./libsignal-ffi.h" -#include */ import "C" import "unsafe" -func GoStringToCString(str string) (C.SignalCStringPtr, func()) { - cStr := C.CString(str) - return C.SignalCStringPtr(unsafe.Pointer(cStr)), func() { - C.free(unsafe.Pointer(cStr)) - } -} - -func CopyCStringToString(cString C.SignalCStringPtr) (s string) { - s = C.GoString((*C.char)(unsafe.Pointer(cString))) +func CopyCStringToString(cString *C.char) (s string) { + s = C.GoString(cString) C.signal_free_string(cString) return } diff --git a/pkg/libsignalgo/devicetransfer.go b/pkg/libsignalgo/devicetransfer.go index 85aed37..f994e51 100644 --- a/pkg/libsignalgo/devicetransfer.go +++ b/pkg/libsignalgo/devicetransfer.go @@ -43,9 +43,7 @@ func (dtk *DeviceTransferKey) PrivateKeyMaterial() []byte { func (dtk *DeviceTransferKey) GenerateCertificate(name string, days int) ([]byte, error) { var resp C.SignalOwnedBuffer = C.SignalOwnedBuffer{} - nameStr, freeNameStr := GoStringToCString(name) - defer freeNameStr() - signalFfiError := C.signal_device_transfer_generate_certificate(&resp, BytesToBuffer(dtk.privateKey), nameStr, C.uint32_t(days)) + signalFfiError := C.signal_device_transfer_generate_certificate(&resp, BytesToBuffer(dtk.privateKey), C.CString(name), C.uint32_t(days)) runtime.KeepAlive(dtk) if signalFfiError != nil { return nil, wrapError(signalFfiError) diff --git a/pkg/libsignalgo/error.go b/pkg/libsignalgo/error.go index cf46b94..888f8ea 100644 --- a/pkg/libsignalgo/error.go +++ b/pkg/libsignalgo/error.go @@ -152,7 +152,7 @@ func wrapError(signalError *C.SignalFfiError) error { } func wrapSignalError(signalError *C.SignalFfiError, errorType C.uint32_t) error { - var messageBytes C.SignalCStringPtr + var messageBytes *C.char getMessageError := C.signal_error_get_message(&messageBytes, signalError) if getMessageError != nil { // Ignore any errors from this, it will just end up being an empty string. diff --git a/pkg/libsignalgo/fingerprint.go b/pkg/libsignalgo/fingerprint.go index b69ee71..b2ef8ce 100644 --- a/pkg/libsignalgo/fingerprint.go +++ b/pkg/libsignalgo/fingerprint.go @@ -92,7 +92,7 @@ func (f *Fingerprint) ScannableEncoding() ([]byte, error) { } func (f *Fingerprint) DisplayString() (string, error) { - var displayString C.SignalCStringPtr + var displayString *C.char signalFfiError := C.signal_fingerprint_display_string(&displayString, f.constPtr()) runtime.KeepAlive(f) if signalFfiError != nil { diff --git a/pkg/libsignalgo/fixedarray.go b/pkg/libsignalgo/fixedarray.go deleted file mode 100644 index 949e808..0000000 --- a/pkg/libsignalgo/fixedarray.go +++ /dev/null @@ -1,159 +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 "unsafe" - -type fixedArray15 [15]byte -type fixedArray16 [16]byte -type fixedArray17 [17]byte -type fixedArray32 [32]byte -type fixedArray64 [64]byte -type fixedArray65 [65]byte -type fixedArray97 [97]byte -type fixedArray129 [129]byte -type fixedArray153 [153]byte -type fixedArray177 [177]byte -type fixedArray289 [289]byte -type fixedArray329 [329]byte -type fixedArray409 [409]byte -type fixedArray473 [473]byte -type fixedArray497 [497]byte - -func (a *fixedArray15) cFixedArray() *C.SignalType_FixedArray15_uint8_t { - return (*C.SignalType_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() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() 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() cFixedArray497Compat { - return cFixedArray497Compat(a.cFixedArray()) -} diff --git a/pkg/libsignalgo/fixedarray_clang.go b/pkg/libsignalgo/fixedarray_clang.go deleted file mode 100644 index 3dc0cd2..0000000 --- a/pkg/libsignalgo/fixedarray_clang.go +++ /dev/null @@ -1,24 +0,0 @@ -//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 deleted file mode 100644 index 6490494..0000000 --- a/pkg/libsignalgo/fixedarray_gcc.go +++ /dev/null @@ -1,26 +0,0 @@ -//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 eee983f..a6b370c 100644 --- a/pkg/libsignalgo/groupsecretparams.go +++ b/pkg/libsignalgo/groupsecretparams.go @@ -31,9 +31,7 @@ import ( "github.com/google/uuid" ) -const RandomnessLength = 32 - -type Randomness = fixedArray32 +type Randomness [C.SignalRANDOMNESS_LEN]byte func GenerateRandomness() Randomness { var randomness Randomness @@ -44,39 +42,14 @@ func GenerateRandomness() Randomness { return randomness } -const GroupMasterKeyLength = 32 -const GroupIdentifierLength = 32 -const GroupSecretParamsLength = 289 +const GroupMasterKeyLength = C.SignalGROUP_MASTER_KEY_LEN +const GroupIdentifierLength = C.SignalGROUP_IDENTIFIER_LEN type GroupMasterKey [GroupMasterKeyLength]byte -type GroupSecretParams [GroupSecretParamsLength]byte -type GroupPublicParams = fixedArray97 +type GroupSecretParams [C.SignalGROUP_SECRET_PARAMS_LEN]byte +type GroupPublicParams [C.SignalGROUP_PUBLIC_PARAMS_LEN]byte type GroupIdentifier [GroupIdentifierLength]byte -func (gmk *GroupMasterKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { - return (*C.SignalType_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() 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() cFixedArray32Compat { - return cFixedArray32Compat(gid.cFixedArray()) -} - func (gid *GroupIdentifier) String() string { if gid == nil { return "" @@ -84,8 +57,8 @@ func (gid *GroupIdentifier) String() string { return base64.StdEncoding.EncodeToString(gid[:]) } -type UUIDCiphertext = fixedArray65 -type ProfileKeyCiphertext = fixedArray65 +type UUIDCiphertext [C.SignalUUID_CIPHERTEXT_LEN]byte +type ProfileKeyCiphertext [C.SignalPROFILE_KEY_CIPHERTEXT_LEN]byte func GenerateGroupSecretParams() (GroupSecretParams, error) { return GenerateGroupSecretParamsWithRandomness(GenerateRandomness()) @@ -108,43 +81,51 @@ func (gmk GroupMasterKey) SecretParams() (GroupSecretParams, error) { } func GenerateGroupSecretParamsWithRandomness(randomness Randomness) (GroupSecretParams, error) { - var params GroupSecretParams - signalFfiError := C.signal_group_secret_params_generate_deterministic(params.cFixedArray(), randomness.cConstFixedArray()) + var params [C.SignalGROUP_SECRET_PARAMS_LEN]C.uchar + signalFfiError := C.signal_group_secret_params_generate_deterministic(¶ms, (*[C.SignalRANDOMNESS_LEN]C.uint8_t)(unsafe.Pointer(&randomness))) runtime.KeepAlive(randomness) if signalFfiError != nil { return GroupSecretParams{}, wrapError(signalFfiError) } - return params, nil + var groupSecretParams GroupSecretParams + copy(groupSecretParams[:], C.GoBytes(unsafe.Pointer(¶ms), C.int(C.SignalGROUP_SECRET_PARAMS_LEN))) + return groupSecretParams, nil } func DeriveGroupSecretParamsFromMasterKey(groupMasterKey GroupMasterKey) (GroupSecretParams, error) { - var params GroupSecretParams - signalFfiError := C.signal_group_secret_params_derive_from_master_key(params.cFixedArray(), groupMasterKey.cConstFixedArray()) + var params [C.SignalGROUP_SECRET_PARAMS_LEN]C.uchar + signalFfiError := C.signal_group_secret_params_derive_from_master_key(¶ms, (*[C.SignalGROUP_MASTER_KEY_LEN]C.uint8_t)(unsafe.Pointer(&groupMasterKey))) runtime.KeepAlive(groupMasterKey) if signalFfiError != nil { return GroupSecretParams{}, wrapError(signalFfiError) } - return params, nil + var groupSecretParams GroupSecretParams + copy(groupSecretParams[:], C.GoBytes(unsafe.Pointer(¶ms), C.int(C.SignalGROUP_SECRET_PARAMS_LEN))) + return groupSecretParams, nil } func (gsp *GroupSecretParams) GetPublicParams() (*GroupPublicParams, error) { - var publicParams GroupPublicParams - signalFfiError := C.signal_group_secret_params_get_public_params(publicParams.cFixedArray(), gsp.cConstFixedArray()) + var publicParams [C.SignalGROUP_PUBLIC_PARAMS_LEN]C.uchar + signalFfiError := C.signal_group_secret_params_get_public_params(&publicParams, (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp))) runtime.KeepAlive(gsp) if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &publicParams, nil + var groupPublicParams GroupPublicParams + copy(groupPublicParams[:], C.GoBytes(unsafe.Pointer(&publicParams), C.int(C.SignalGROUP_PUBLIC_PARAMS_LEN))) + return &groupPublicParams, nil } func GetGroupIdentifier(groupPublicParams GroupPublicParams) (*GroupIdentifier, error) { - var groupIdentifier GroupIdentifier - signalFfiError := C.signal_group_public_params_get_group_identifier(groupIdentifier.cFixedArray(), groupPublicParams.cConstFixedArray()) + var groupIdentifier [C.SignalGROUP_IDENTIFIER_LEN]C.uchar + signalFfiError := C.signal_group_public_params_get_group_identifier(&groupIdentifier, (*[C.SignalGROUP_PUBLIC_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(&groupPublicParams))) runtime.KeepAlive(groupPublicParams) if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &groupIdentifier, nil + var result GroupIdentifier + copy(result[:], C.GoBytes(unsafe.Pointer(&groupIdentifier), C.int(C.SignalGROUP_IDENTIFIER_LEN))) + return &result, nil } func (gsp *GroupSecretParams) DecryptBlobWithPadding(blob []byte) ([]byte, error) { @@ -152,7 +133,7 @@ func (gsp *GroupSecretParams) DecryptBlobWithPadding(blob []byte) ([]byte, error borrowedBlob := BytesToBuffer(blob) signalFfiError := C.signal_group_secret_params_decrypt_blob_with_padding( &plaintext, - gsp.cConstFixedArray(), + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), borrowedBlob, ) runtime.KeepAlive(gsp) @@ -168,8 +149,8 @@ func (gsp *GroupSecretParams) EncryptBlobWithPaddingDeterministic(randomness Ran borrowedPlaintext := BytesToBuffer(plaintext) signalFfiError := C.signal_group_secret_params_encrypt_blob_with_padding_deterministic( &ciphertext, - gsp.cConstFixedArray(), - randomness.cConstFixedArray(), + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), + (*[C.SignalRANDOMNESS_LEN]C.uint8_t)(unsafe.Pointer(&randomness)), borrowedPlaintext, (C.uint32_t)(padding_len), ) @@ -184,11 +165,11 @@ func (gsp *GroupSecretParams) EncryptBlobWithPaddingDeterministic(randomness Ran } func (gsp *GroupSecretParams) DecryptServiceID(ciphertextServiceID UUIDCiphertext) (ServiceID, error) { - var serviceIDBytes ServiceIDFixedBytes + u := C.SignalServiceIdFixedWidthBinaryBytes{} signalFfiError := C.signal_group_secret_params_decrypt_service_id( - serviceIDBytes.cFixedArray(), - gsp.cConstFixedArray(), - ciphertextServiceID.cConstFixedArray(), + &u, + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), + (*[C.SignalUUID_CIPHERTEXT_LEN]C.uint8_t)(unsafe.Pointer(&ciphertextServiceID)), ) runtime.KeepAlive(gsp) runtime.KeepAlive(ciphertextServiceID) @@ -196,31 +177,33 @@ func (gsp *GroupSecretParams) DecryptServiceID(ciphertextServiceID UUIDCiphertex return EmptyServiceID, wrapError(signalFfiError) } - serviceID := ServiceIDFromCFixedBytes(serviceIDBytes.cFixedArray()) + serviceID := ServiceIDFromCFixedBytes(&u) return serviceID, nil } func (gsp *GroupSecretParams) EncryptServiceID(serviceID ServiceID) (*UUIDCiphertext, error) { - var cipherTextServiceID UUIDCiphertext + var cipherTextServiceID [C.SignalUUID_CIPHERTEXT_LEN]C.uchar signalFfiError := C.signal_group_secret_params_encrypt_service_id( - cipherTextServiceID.cFixedArray(), - gsp.cConstFixedArray(), - serviceID.cConstFixedArray(), + &cipherTextServiceID, + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), + serviceID.CFixedBytes(), ) runtime.KeepAlive(gsp) if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &cipherTextServiceID, nil + var result UUIDCiphertext + copy(result[:], C.GoBytes(unsafe.Pointer(&cipherTextServiceID), C.int(C.SignalUUID_CIPHERTEXT_LEN))) + return &result, nil } func (gsp *GroupSecretParams) DecryptProfileKey(ciphertextProfileKey ProfileKeyCiphertext, u uuid.UUID) (*ProfileKey, error) { - var profileKey ProfileKey + profileKey := [C.SignalPROFILE_KEY_LEN]C.uchar{} signalFfiError := C.signal_group_secret_params_decrypt_profile_key( - profileKey.cFixedArray(), - gsp.cConstFixedArray(), - ciphertextProfileKey.cConstFixedArray(), - NewACIServiceID(u).cConstFixedArray(), + &profileKey, + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), + (*[C.SignalPROFILE_KEY_CIPHERTEXT_LEN]C.uint8_t)(unsafe.Pointer(&ciphertextProfileKey)), + NewACIServiceID(u).CFixedBytes(), ) runtime.KeepAlive(gsp) runtime.KeepAlive(ciphertextProfileKey) @@ -228,23 +211,27 @@ func (gsp *GroupSecretParams) DecryptProfileKey(ciphertextProfileKey ProfileKeyC if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &profileKey, nil + var result ProfileKey + copy(result[:], C.GoBytes(unsafe.Pointer(&profileKey), C.int(C.SignalPROFILE_KEY_LEN))) + return &result, nil } func (gsp *GroupSecretParams) EncryptProfileKey(profileKey ProfileKey, u uuid.UUID) (*ProfileKeyCiphertext, error) { - var ciphertextProfileKey ProfileKeyCiphertext + ciphertextProfileKey := [C.SignalPROFILE_KEY_CIPHERTEXT_LEN]C.uchar{} signalFfiError := C.signal_group_secret_params_encrypt_profile_key( - ciphertextProfileKey.cFixedArray(), - gsp.cConstFixedArray(), - profileKey.cConstFixedArray(), - NewACIServiceID(u).cConstFixedArray(), + &ciphertextProfileKey, + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(gsp)), + (*[C.SignalPROFILE_KEY_LEN]C.uint8_t)(unsafe.Pointer(&profileKey)), + NewACIServiceID(u).CFixedBytes(), ) runtime.KeepAlive(gsp) runtime.KeepAlive(profileKey) if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &ciphertextProfileKey, nil + var result ProfileKeyCiphertext + copy(result[:], C.GoBytes(unsafe.Pointer(&ciphertextProfileKey), C.int(C.SignalPROFILE_KEY_CIPHERTEXT_LEN))) + return &result, nil } func (gsp *GroupSecretParams) CreateExpiringProfileKeyCredentialPresentation(spp *ServerPublicParams, credential ExpiringProfileKeyCredential) (*ProfileKeyCredentialPresentation, error) { @@ -253,9 +240,9 @@ func (gsp *GroupSecretParams) CreateExpiringProfileKeyCredentialPresentation(spp signalFfiError := C.signal_server_public_params_create_expiring_profile_key_credential_presentation_deterministic( &out, C.SignalConstPointerServerPublicParams{spp}, - randomness.cConstFixedArray(), - gsp.cConstFixedArray(), - credential.cConstFixedArray(), + (*[C.SignalRANDOMNESS_LEN]C.uint8_t)(unsafe.Pointer(&randomness)), + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uchar)(unsafe.Pointer(gsp)), + (*[C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN]C.uchar)(unsafe.Pointer(&credential)), ) runtime.KeepAlive(gsp) runtime.KeepAlive(credential) @@ -269,14 +256,16 @@ func (gsp *GroupSecretParams) CreateExpiringProfileKeyCredentialPresentation(spp } func (gsp *GroupSecretParams) GetMasterKey() (*GroupMasterKey, error) { - var masterKey GroupMasterKey + masterKeyBytes := [C.SignalGROUP_MASTER_KEY_LEN]C.uchar{} signalFfiError := C.signal_group_secret_params_get_master_key( - masterKey.cFixedArray(), - gsp.cConstFixedArray(), + &masterKeyBytes, + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uchar)(unsafe.Pointer(gsp)), ) runtime.KeepAlive(gsp) if signalFfiError != nil { return nil, wrapError(signalFfiError) } - return &masterKey, nil + var groupMasterKey GroupMasterKey + copy(groupMasterKey[:], C.GoBytes(unsafe.Pointer(&masterKeyBytes), C.int(C.SignalGROUP_MASTER_KEY_LEN))) + return &groupMasterKey, nil } diff --git a/pkg/libsignalgo/groupsendendorsement.go b/pkg/libsignalgo/groupsendendorsement.go index afc359f..73f175e 100644 --- a/pkg/libsignalgo/groupsendendorsement.go +++ b/pkg/libsignalgo/groupsendendorsement.go @@ -24,6 +24,7 @@ import ( "encoding/base64" "runtime" "time" + "unsafe" ) type GroupSendFullToken []byte @@ -90,7 +91,7 @@ func (gse GroupSendEndorsement) ToToken(groupSecretParams *GroupSecretParams) (G signalFfiError := C.signal_group_send_endorsement_to_token( &token, BytesToBuffer(gse), - groupSecretParams.cConstFixedArray(), + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(groupSecretParams)), ) runtime.KeepAlive(gse) runtime.KeepAlive(groupSecretParams) @@ -179,17 +180,17 @@ func (gser GroupSendEndorsementsResponse) ReceiveWithServiceIDs( groupMembers []ServiceID, localUser ServiceID, params *GroupSecretParams, spp *ServerPublicParams, ) (GroupSendEndorsement, map[ServiceID]GroupSendEndorsement, error) { var out C.SignalBytestringArray = C.SignalBytestringArray{} - concatenatedMembers := make([]byte, len(groupMembers)*ServiceIDFixedBytesLength) + concatenatedMembers := make([]byte, len(groupMembers)*17) for i, member := range groupMembers { - copy(concatenatedMembers[i*ServiceIDFixedBytesLength:(i+1)*ServiceIDFixedBytesLength], member.FixedBytes()[:]) + copy(concatenatedMembers[i*17:(i+1)*17], member.FixedBytes()[:]) } signalFfiError := C.signal_group_send_endorsements_response_receive_and_combine_with_service_ids( &out, BytesToBuffer(gser), BytesToBuffer(concatenatedMembers), - localUser.cConstFixedArray(), + localUser.CFixedBytes(), C.uint64_t(time.Now().Unix()), - params.cConstFixedArray(), + (*[C.SignalGROUP_SECRET_PARAMS_LEN]C.uint8_t)(unsafe.Pointer(params)), C.SignalConstPointerServerPublicParams{spp}, ) runtime.KeepAlive(gser) diff --git a/pkg/libsignalgo/identitykeystore.go b/pkg/libsignalgo/identitykeystore.go index ba26f06..43941da 100644 --- a/pkg/libsignalgo/identitykeystore.go +++ b/pkg/libsignalgo/identitykeystore.go @@ -159,11 +159,11 @@ func signal_destroy_identity_key_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapIdentityKeyStore(store IdentityKeyStore) C.SignalConstPointerFfiIdentityKeyStoreStruct { return C.SignalConstPointerFfiIdentityKeyStoreStruct{&C.SignalIdentityKeyStore{ ctx: wrapStore(ctx, store), - get_local_identity_key_pair: C.SignalFfiIdentityKeyStoreGetLocalIdentityKeyPair(C.signal_get_identity_key_pair_callback), - get_local_registration_id: C.SignalFfiIdentityKeyStoreGetLocalRegistrationId(C.signal_get_local_registration_id_callback), - get_identity_key: C.SignalFfiIdentityKeyStoreGetIdentityKey(C.signal_get_identity_key_callback), - save_identity_key: C.SignalFfiIdentityKeyStoreSaveIdentityKey(C.signal_save_identity_key_callback), - is_trusted_identity: C.SignalFfiIdentityKeyStoreIsTrustedIdentity(C.signal_is_trusted_identity_callback), - destroy: C.SignalFfiIdentityKeyStoreDestroy(C.signal_destroy_identity_key_store_callback), + get_local_identity_key_pair: C.SignalFfiBridgeIdentityKeyStoreGetLocalIdentityKeyPair(C.signal_get_identity_key_pair_callback), + get_local_registration_id: C.SignalFfiBridgeIdentityKeyStoreGetLocalRegistrationId(C.signal_get_local_registration_id_callback), + get_identity_key: C.SignalFfiBridgeIdentityKeyStoreGetIdentityKey(C.signal_get_identity_key_callback), + save_identity_key: C.SignalFfiBridgeIdentityKeyStoreSaveIdentityKey(C.signal_save_identity_key_callback), + is_trusted_identity: C.SignalFfiBridgeIdentityKeyStoreIsTrustedIdentity(C.signal_is_trusted_identity_callback), + destroy: C.SignalFfiBridgeIdentityKeyStoreDestroy(C.signal_destroy_identity_key_store_callback), }} } diff --git a/pkg/libsignalgo/kyberprekeystore.go b/pkg/libsignalgo/kyberprekeystore.go index 9deea17..ebb5a9f 100644 --- a/pkg/libsignalgo/kyberprekeystore.go +++ b/pkg/libsignalgo/kyberprekeystore.go @@ -77,9 +77,9 @@ func signal_destroy_kyber_pre_key_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapKyberPreKeyStore(store KyberPreKeyStore) C.SignalConstPointerFfiKyberPreKeyStoreStruct { return C.SignalConstPointerFfiKyberPreKeyStoreStruct{&C.SignalKyberPreKeyStore{ ctx: wrapStore(ctx, store), - load_kyber_pre_key: C.SignalFfiKyberPreKeyStoreLoadKyberPreKey(C.signal_load_kyber_pre_key_callback), - store_kyber_pre_key: C.SignalFfiKyberPreKeyStoreStoreKyberPreKey(C.signal_store_kyber_pre_key_callback), - mark_kyber_pre_key_used: C.SignalFfiKyberPreKeyStoreMarkKyberPreKeyUsed(C.signal_mark_kyber_pre_key_used_callback), - destroy: C.SignalFfiKyberPreKeyStoreDestroy(C.signal_destroy_kyber_pre_key_store_callback), + load_kyber_pre_key: C.SignalFfiBridgeKyberPreKeyStoreLoadKyberPreKey(C.signal_load_kyber_pre_key_callback), + store_kyber_pre_key: C.SignalFfiBridgeKyberPreKeyStoreStoreKyberPreKey(C.signal_store_kyber_pre_key_callback), + mark_kyber_pre_key_used: C.SignalFfiBridgeKyberPreKeyStoreMarkKyberPreKeyUsed(C.signal_mark_kyber_pre_key_used_callback), + destroy: C.SignalFfiBridgeKyberPreKeyStoreDestroy(C.signal_destroy_kyber_pre_key_store_callback), }} } diff --git a/pkg/libsignalgo/libsignal b/pkg/libsignalgo/libsignal index 857c4dc..a5e7667 160000 --- a/pkg/libsignalgo/libsignal +++ b/pkg/libsignalgo/libsignal @@ -1 +1 @@ -Subproject commit 857c4dca03537dc5e395a5e1eda6bf18f59c3601 +Subproject commit a5e76674882a89bac1ed3f4a982120652966d21e diff --git a/pkg/libsignalgo/libsignal-ffi.h b/pkg/libsignalgo/libsignal-ffi.h index 0979410..59409c8 100644 --- a/pkg/libsignalgo/libsignal-ffi.h +++ b/pkg/libsignalgo/libsignal-ffi.h @@ -1,2943 +1,184 @@ -// Copyright (C) 2026 Signal Messenger, LLC. -// SPDX-License-Identifier: AGPL-3.0-only -// AUTOGENERATED! Do not modify! -#pragma once -#include -#include +/* +Copyright (C) 2020-2021 Signal Messenger, LLC. +SPDX-License-Identifier: AGPL-3.0-only +*/ + + +#ifndef SIGNAL_FFI_H_ +#define SIGNAL_FFI_H_ + +/* This file was automatically generated by cbindgen */ + +#include #include #include #include -// A static assert that's only enabled for 64-bit platforms. -#define static_assert_64bit(flag) static_assert((sizeof(void*) == 8) ? (flag) : 1, "") -static_assert_64bit(sizeof(uint8_t) == 1); -static_assert_64bit(alignof(uint8_t) == 1); -typedef uint8_t SignalType_FixedArray32_uint8_t[32]; -static_assert_64bit(sizeof(SignalType_FixedArray32_uint8_t) == 32); -static_assert_64bit(alignof(SignalType_FixedArray32_uint8_t) == 1); -typedef const SignalType_FixedArray32_uint8_t* SignalType_ConstPointer_SignalType_FixedArray32_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray32_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray32_uint8_t) == 8); -typedef const SignalType_ConstPointer_SignalType_FixedArray32_uint8_t* SignalType_ConstPointer_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray129_uint8_t[129]; -static_assert_64bit(sizeof(SignalType_FixedArray129_uint8_t) == 129); -static_assert_64bit(alignof(SignalType_FixedArray129_uint8_t) == 1); -typedef const SignalType_FixedArray129_uint8_t* SignalType_ConstPointer_SignalType_FixedArray129_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray129_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray129_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray153_uint8_t[153]; -static_assert_64bit(sizeof(SignalType_FixedArray153_uint8_t) == 153); -static_assert_64bit(alignof(SignalType_FixedArray153_uint8_t) == 1); -typedef const SignalType_FixedArray153_uint8_t* SignalType_ConstPointer_SignalType_FixedArray153_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray153_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray153_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray15_uint8_t[15]; -static_assert_64bit(sizeof(SignalType_FixedArray15_uint8_t) == 15); -static_assert_64bit(alignof(SignalType_FixedArray15_uint8_t) == 1); -typedef const SignalType_FixedArray15_uint8_t* SignalType_ConstPointer_SignalType_FixedArray15_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray15_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray15_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray16_uint8_t[16]; -static_assert_64bit(sizeof(SignalType_FixedArray16_uint8_t) == 16); -static_assert_64bit(alignof(SignalType_FixedArray16_uint8_t) == 1); -typedef const SignalType_FixedArray16_uint8_t* SignalType_ConstPointer_SignalType_FixedArray16_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray16_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray16_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray177_uint8_t[177]; -static_assert_64bit(sizeof(SignalType_FixedArray177_uint8_t) == 177); -static_assert_64bit(alignof(SignalType_FixedArray177_uint8_t) == 1); -typedef const SignalType_FixedArray177_uint8_t* SignalType_ConstPointer_SignalType_FixedArray177_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray177_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray177_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray17_uint8_t[17]; -static_assert_64bit(sizeof(SignalType_FixedArray17_uint8_t) == 17); -static_assert_64bit(alignof(SignalType_FixedArray17_uint8_t) == 1); -typedef const SignalType_FixedArray17_uint8_t* SignalType_ConstPointer_SignalType_FixedArray17_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray17_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray17_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray289_uint8_t[289]; -static_assert_64bit(sizeof(SignalType_FixedArray289_uint8_t) == 289); -static_assert_64bit(alignof(SignalType_FixedArray289_uint8_t) == 1); -typedef const SignalType_FixedArray289_uint8_t* SignalType_ConstPointer_SignalType_FixedArray289_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray289_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray289_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray329_uint8_t[329]; -static_assert_64bit(sizeof(SignalType_FixedArray329_uint8_t) == 329); -static_assert_64bit(alignof(SignalType_FixedArray329_uint8_t) == 1); -typedef const SignalType_FixedArray329_uint8_t* SignalType_ConstPointer_SignalType_FixedArray329_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray329_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray329_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray409_uint8_t[409]; -static_assert_64bit(sizeof(SignalType_FixedArray409_uint8_t) == 409); -static_assert_64bit(alignof(SignalType_FixedArray409_uint8_t) == 1); -typedef const SignalType_FixedArray409_uint8_t* SignalType_ConstPointer_SignalType_FixedArray409_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray409_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray409_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray473_uint8_t[473]; -static_assert_64bit(sizeof(SignalType_FixedArray473_uint8_t) == 473); -static_assert_64bit(alignof(SignalType_FixedArray473_uint8_t) == 1); -typedef const SignalType_FixedArray473_uint8_t* SignalType_ConstPointer_SignalType_FixedArray473_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray473_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray473_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray497_uint8_t[497]; -static_assert_64bit(sizeof(SignalType_FixedArray497_uint8_t) == 497); -static_assert_64bit(alignof(SignalType_FixedArray497_uint8_t) == 1); -typedef const SignalType_FixedArray497_uint8_t* SignalType_ConstPointer_SignalType_FixedArray497_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray497_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray497_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray64_uint8_t[64]; -static_assert_64bit(sizeof(SignalType_FixedArray64_uint8_t) == 64); -static_assert_64bit(alignof(SignalType_FixedArray64_uint8_t) == 1); -typedef const SignalType_FixedArray64_uint8_t* SignalType_ConstPointer_SignalType_FixedArray64_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray64_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray64_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray65_uint8_t[65]; -static_assert_64bit(sizeof(SignalType_FixedArray65_uint8_t) == 65); -static_assert_64bit(alignof(SignalType_FixedArray65_uint8_t) == 1); -typedef const SignalType_FixedArray65_uint8_t* SignalType_ConstPointer_SignalType_FixedArray65_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray65_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray65_uint8_t) == 8); -typedef uint8_t SignalType_FixedArray97_uint8_t[97]; -static_assert_64bit(sizeof(SignalType_FixedArray97_uint8_t) == 97); -static_assert_64bit(alignof(SignalType_FixedArray97_uint8_t) == 1); -typedef const SignalType_FixedArray97_uint8_t* SignalType_ConstPointer_SignalType_FixedArray97_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalType_FixedArray97_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalType_FixedArray97_uint8_t) == 8); -static_assert_64bit(sizeof(bool) == 1); -static_assert_64bit(alignof(bool) == 1); -typedef const bool* SignalType_ConstPointer_bool; -static_assert_64bit(sizeof(SignalType_ConstPointer_bool) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_bool) == 8); -typedef const void* SignalType_ConstPointer_void; -static_assert_64bit(sizeof(SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_void) == 8); -static_assert_64bit(sizeof(int8_t) == 1); -static_assert_64bit(alignof(int8_t) == 1); -typedef const int8_t* SignalCStringPtr; -static_assert_64bit(sizeof(SignalCStringPtr) == 8); -static_assert_64bit(alignof(SignalCStringPtr) == 8); -typedef struct SignalPinHash SignalPinHash; -typedef const SignalPinHash* SignalType_ConstPointer_SignalPinHash; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPinHash) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPinHash) == 8); -typedef struct SignalAes256GcmSiv SignalAes256GcmSiv; -typedef const SignalAes256GcmSiv* SignalType_ConstPointer_SignalAes256GcmSiv; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalAes256GcmSiv) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalAes256GcmSiv) == 8); -typedef const uint8_t* SignalType_ConstPointer_uint8_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_uint8_t) == 8); -static_assert_64bit(sizeof(size_t) == 8); -static_assert_64bit(alignof(size_t) == 8); -typedef struct { - const uint8_t* base; - size_t length; -} SignalBorrowedBuffer; -static_assert_64bit(offsetof(SignalBorrowedBuffer, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedBuffer, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedBuffer) == 16); -static_assert_64bit(alignof(SignalBorrowedBuffer) == 8); -typedef const SignalBorrowedBuffer* SignalType_ConstPointer_SignalBorrowedBuffer; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBorrowedBuffer) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBorrowedBuffer) == 8); -typedef struct SignalProtocolAddress SignalProtocolAddress; -typedef const SignalProtocolAddress* SignalType_ConstPointer_SignalProtocolAddress; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalProtocolAddress) == 8); -typedef struct { - const SignalProtocolAddress* raw; -} SignalConstPointerProtocolAddress; -static_assert_64bit(offsetof(SignalConstPointerProtocolAddress, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalConstPointerProtocolAddress) == 8); -typedef const SignalConstPointerProtocolAddress* SignalType_ConstPointer_SignalConstPointerProtocolAddress; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConstPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConstPointerProtocolAddress) == 8); -typedef struct SignalPublicKey SignalPublicKey; -typedef const SignalPublicKey* SignalType_ConstPointer_SignalPublicKey; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPublicKey) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPublicKey) == 8); -typedef struct { - const SignalPublicKey* raw; -} SignalConstPointerPublicKey; -static_assert_64bit(offsetof(SignalConstPointerPublicKey, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPublicKey) == 8); -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 SignalCiphertextMessage SignalCiphertextMessage; -typedef const SignalCiphertextMessage* SignalType_ConstPointer_SignalCiphertextMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalCiphertextMessage) == 8); -typedef struct { - const SignalCiphertextMessage* raw; -} SignalConstPointerCiphertextMessage; -static_assert_64bit(offsetof(SignalConstPointerCiphertextMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerCiphertextMessage) == 8); -typedef const SignalConstPointerCiphertextMessage* SignalType_ConstPointer_SignalConstPointerCiphertextMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConstPointerCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConstPointerCiphertextMessage) == 8); -typedef struct SignalSessionRecord SignalSessionRecord; -typedef const SignalSessionRecord* SignalType_ConstPointer_SignalSessionRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSessionRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSessionRecord) == 8); -typedef struct { - const SignalSessionRecord* raw; -} SignalConstPointerSessionRecord; -static_assert_64bit(offsetof(SignalConstPointerSessionRecord, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSessionRecord) == 8); -static_assert_64bit(alignof(SignalConstPointerSessionRecord) == 8); -typedef const SignalConstPointerSessionRecord* SignalType_ConstPointer_SignalConstPointerSessionRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConstPointerSessionRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConstPointerSessionRecord) == 8); -static_assert_64bit(sizeof(int32_t) == 4); -static_assert_64bit(alignof(int32_t) == 4); -static_assert_64bit(sizeof(uint64_t) == 8); -static_assert_64bit(alignof(uint64_t) == 8); -typedef struct { - uint64_t e164; - SignalType_FixedArray16_uint8_t rawAciUuid; - SignalType_FixedArray16_uint8_t rawPniUuid; -} SignalFfiCdsiLookupResponseEntry; -static_assert_64bit(offsetof(SignalFfiCdsiLookupResponseEntry, e164) == 0); -static_assert_64bit(offsetof(SignalFfiCdsiLookupResponseEntry, rawAciUuid) == 8); -static_assert_64bit(offsetof(SignalFfiCdsiLookupResponseEntry, rawPniUuid) == 24); -static_assert_64bit(sizeof(SignalFfiCdsiLookupResponseEntry) == 40); -static_assert_64bit(alignof(SignalFfiCdsiLookupResponseEntry) == 8); -typedef SignalFfiCdsiLookupResponseEntry* SignalType_MutPointer_SignalFfiCdsiLookupResponseEntry; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalFfiCdsiLookupResponseEntry) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalFfiCdsiLookupResponseEntry) == 8); -typedef struct { - SignalFfiCdsiLookupResponseEntry* base; - size_t length; -} SignalOwnedLookupResponseEntryList; -static_assert_64bit(offsetof(SignalOwnedLookupResponseEntryList, base) == 0); -static_assert_64bit(offsetof(SignalOwnedLookupResponseEntryList, length) == 8); -static_assert_64bit(sizeof(SignalOwnedLookupResponseEntryList) == 16); -static_assert_64bit(alignof(SignalOwnedLookupResponseEntryList) == 8); -typedef struct { - SignalOwnedLookupResponseEntryList entries; - int32_t debug_permits_used; -} SignalFfiCdsiLookupResponse; -static_assert_64bit(offsetof(SignalFfiCdsiLookupResponse, entries) == 0); -static_assert_64bit(offsetof(SignalFfiCdsiLookupResponse, debug_permits_used) == 16); -static_assert_64bit(sizeof(SignalFfiCdsiLookupResponse) == 24); -static_assert_64bit(alignof(SignalFfiCdsiLookupResponse) == 8); -typedef const SignalFfiCdsiLookupResponse* SignalType_ConstPointer_SignalFfiCdsiLookupResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiCdsiLookupResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiCdsiLookupResponse) == 8); -typedef SignalCStringPtr* SignalType_MutPointer_SignalCStringPtr; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCStringPtr) == 8); -typedef struct { - SignalCStringPtr* base; - size_t length; -} SignalOwnedBufferOfCStringPtr; -static_assert_64bit(offsetof(SignalOwnedBufferOfCStringPtr, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfCStringPtr, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfCStringPtr) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfCStringPtr) == 8); -typedef uint8_t* SignalType_MutPointer_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_uint8_t) == 8); -typedef struct { - uint8_t* base; - size_t length; -} SignalOwnedBuffer; -static_assert_64bit(offsetof(SignalOwnedBuffer, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBuffer, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBuffer) == 16); -static_assert_64bit(alignof(SignalOwnedBuffer) == 8); -static_assert_64bit(sizeof(uint16_t) == 2); -static_assert_64bit(alignof(uint16_t) == 2); -typedef struct { - uint16_t status; - const int8_t* message; - SignalOwnedBufferOfCStringPtr headers; - SignalOwnedBuffer body; -} SignalFfiChatResponse; -static_assert_64bit(offsetof(SignalFfiChatResponse, status) == 0); -static_assert_64bit(offsetof(SignalFfiChatResponse, message) == 8); -static_assert_64bit(offsetof(SignalFfiChatResponse, headers) == 16); -static_assert_64bit(offsetof(SignalFfiChatResponse, body) == 32); -static_assert_64bit(sizeof(SignalFfiChatResponse) == 48); -static_assert_64bit(alignof(SignalFfiChatResponse) == 8); -typedef const SignalFfiChatResponse* SignalType_ConstPointer_SignalFfiChatResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiChatResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiChatResponse) == 8); -typedef size_t* SignalType_MutPointer_size_t; -static_assert_64bit(sizeof(SignalType_MutPointer_size_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_size_t) == 8); -typedef struct { - size_t* base; - size_t length; -} SignalOwnedBufferOfusize; -static_assert_64bit(offsetof(SignalOwnedBufferOfusize, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfusize, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfusize) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfusize) == 8); -typedef struct { - SignalOwnedBuffer bytes; - SignalOwnedBufferOfusize lengths; -} SignalBytestringArray; -static_assert_64bit(offsetof(SignalBytestringArray, bytes) == 0); -static_assert_64bit(offsetof(SignalBytestringArray, lengths) == 16); -static_assert_64bit(sizeof(SignalBytestringArray) == 32); -static_assert_64bit(alignof(SignalBytestringArray) == 8); -typedef struct { - SignalBytestringArray entries; -} SignalFfiCheckSvr2CredentialsResponse; -static_assert_64bit(offsetof(SignalFfiCheckSvr2CredentialsResponse, entries) == 0); -static_assert_64bit(sizeof(SignalFfiCheckSvr2CredentialsResponse) == 32); -static_assert_64bit(alignof(SignalFfiCheckSvr2CredentialsResponse) == 8); -typedef const SignalFfiCheckSvr2CredentialsResponse* SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse) == 8); -typedef SignalPublicKey* SignalType_MutPointer_SignalPublicKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPublicKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPublicKey) == 8); -typedef struct { - SignalPublicKey* raw; -} SignalMutPointerPublicKey; -static_assert_64bit(offsetof(SignalMutPointerPublicKey, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalMutPointerPublicKey) == 8); -typedef struct SignalPreKeyBundle SignalPreKeyBundle; -typedef SignalPreKeyBundle* SignalType_MutPointer_SignalPreKeyBundle; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPreKeyBundle) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPreKeyBundle) == 8); -typedef struct { - SignalPreKeyBundle* raw; -} SignalMutPointerPreKeyBundle; -static_assert_64bit(offsetof(SignalMutPointerPreKeyBundle, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPreKeyBundle) == 8); -static_assert_64bit(alignof(SignalMutPointerPreKeyBundle) == 8); -typedef SignalMutPointerPreKeyBundle* SignalType_MutPointer_SignalMutPointerPreKeyBundle; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPreKeyBundle) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPreKeyBundle) == 8); -typedef struct { - SignalMutPointerPreKeyBundle* base; - size_t length; -} SignalOwnedBufferOfMutPointerPreKeyBundle; -static_assert_64bit(offsetof(SignalOwnedBufferOfMutPointerPreKeyBundle, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMutPointerPreKeyBundle, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfMutPointerPreKeyBundle) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfMutPointerPreKeyBundle) == 8); -typedef struct { - SignalMutPointerPublicKey identity_key; - SignalOwnedBufferOfMutPointerPreKeyBundle pre_key_bundles; -} SignalFfiPreKeysResponse; -static_assert_64bit(offsetof(SignalFfiPreKeysResponse, identity_key) == 0); -static_assert_64bit(offsetof(SignalFfiPreKeysResponse, pre_key_bundles) == 8); -static_assert_64bit(sizeof(SignalFfiPreKeysResponse) == 24); -static_assert_64bit(alignof(SignalFfiPreKeysResponse) == 8); -typedef const SignalFfiPreKeysResponse* SignalType_ConstPointer_SignalFfiPreKeysResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiPreKeysResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiPreKeysResponse) == 8); -static_assert_64bit(sizeof(uint32_t) == 4); -static_assert_64bit(alignof(uint32_t) == 4); -typedef struct { - uint32_t cdn; - const int8_t* key; - SignalOwnedBufferOfCStringPtr header_keys; - SignalOwnedBufferOfCStringPtr header_values; - const int8_t* signed_upload_url; -} SignalFfiUploadForm; -static_assert_64bit(offsetof(SignalFfiUploadForm, cdn) == 0); -static_assert_64bit(offsetof(SignalFfiUploadForm, key) == 8); -static_assert_64bit(offsetof(SignalFfiUploadForm, header_keys) == 16); -static_assert_64bit(offsetof(SignalFfiUploadForm, header_values) == 32); -static_assert_64bit(offsetof(SignalFfiUploadForm, signed_upload_url) == 48); -static_assert_64bit(sizeof(SignalFfiUploadForm) == 56); -static_assert_64bit(alignof(SignalFfiUploadForm) == 8); -typedef const SignalFfiUploadForm* SignalType_ConstPointer_SignalFfiUploadForm; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiUploadForm) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiUploadForm) == 8); -typedef struct SignalCdsiLookup SignalCdsiLookup; -typedef SignalCdsiLookup* SignalType_MutPointer_SignalCdsiLookup; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCdsiLookup) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCdsiLookup) == 8); -typedef struct { - SignalCdsiLookup* raw; -} SignalMutPointerCdsiLookup; -static_assert_64bit(offsetof(SignalMutPointerCdsiLookup, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerCdsiLookup) == 8); -static_assert_64bit(alignof(SignalMutPointerCdsiLookup) == 8); -typedef const SignalMutPointerCdsiLookup* SignalType_ConstPointer_SignalMutPointerCdsiLookup; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerCdsiLookup) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerCdsiLookup) == 8); -typedef struct SignalAuthenticatedChatConnection SignalAuthenticatedChatConnection; -typedef SignalAuthenticatedChatConnection* SignalType_MutPointer_SignalAuthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalAuthenticatedChatConnection) == 8); -typedef struct { - SignalAuthenticatedChatConnection* raw; -} SignalMutPointerAuthenticatedChatConnection; -static_assert_64bit(offsetof(SignalMutPointerAuthenticatedChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalMutPointerAuthenticatedChatConnection) == 8); -typedef const SignalMutPointerAuthenticatedChatConnection* SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection) == 8); -typedef struct SignalProvisioningChatConnection SignalProvisioningChatConnection; -typedef SignalProvisioningChatConnection* SignalType_MutPointer_SignalProvisioningChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalProvisioningChatConnection) == 8); -typedef struct { - SignalProvisioningChatConnection* raw; -} SignalMutPointerProvisioningChatConnection; -static_assert_64bit(offsetof(SignalMutPointerProvisioningChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalMutPointerProvisioningChatConnection) == 8); -typedef const SignalMutPointerProvisioningChatConnection* SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection) == 8); -typedef struct SignalUnauthenticatedChatConnection SignalUnauthenticatedChatConnection; -typedef SignalUnauthenticatedChatConnection* SignalType_MutPointer_SignalUnauthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalUnauthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalUnauthenticatedChatConnection) == 8); -typedef struct { - SignalUnauthenticatedChatConnection* raw; -} SignalMutPointerUnauthenticatedChatConnection; -static_assert_64bit(offsetof(SignalMutPointerUnauthenticatedChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerUnauthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalMutPointerUnauthenticatedChatConnection) == 8); -typedef const SignalMutPointerUnauthenticatedChatConnection* SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection) == 8); -typedef struct SignalRegistrationService SignalRegistrationService; -typedef SignalRegistrationService* SignalType_MutPointer_SignalRegistrationService; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalRegistrationService) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalRegistrationService) == 8); -typedef struct { - SignalRegistrationService* raw; -} SignalMutPointerRegistrationService; -static_assert_64bit(offsetof(SignalMutPointerRegistrationService, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerRegistrationService) == 8); -static_assert_64bit(alignof(SignalMutPointerRegistrationService) == 8); -typedef const SignalMutPointerRegistrationService* SignalType_ConstPointer_SignalMutPointerRegistrationService; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerRegistrationService) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerRegistrationService) == 8); -typedef struct SignalBackupRestoreResponse SignalBackupRestoreResponse; -typedef SignalBackupRestoreResponse* SignalType_MutPointer_SignalBackupRestoreResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBackupRestoreResponse) == 8); -typedef struct { - SignalBackupRestoreResponse* raw; -} SignalMutPointerBackupRestoreResponse; -static_assert_64bit(offsetof(SignalMutPointerBackupRestoreResponse, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalMutPointerBackupRestoreResponse) == 8); -typedef const SignalMutPointerBackupRestoreResponse* SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse) == 8); -typedef struct SignalBackupStoreResponse SignalBackupStoreResponse; -typedef SignalBackupStoreResponse* SignalType_MutPointer_SignalBackupStoreResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBackupStoreResponse) == 8); -typedef struct { - SignalBackupStoreResponse* raw; -} SignalMutPointerBackupStoreResponse; -static_assert_64bit(offsetof(SignalMutPointerBackupStoreResponse, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalMutPointerBackupStoreResponse) == 8); -typedef const SignalMutPointerBackupStoreResponse* SignalType_ConstPointer_SignalMutPointerBackupStoreResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerBackupStoreResponse) == 8); -typedef struct SignalRegisterAccountResponse SignalRegisterAccountResponse; -typedef SignalRegisterAccountResponse* SignalType_MutPointer_SignalRegisterAccountResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalRegisterAccountResponse) == 8); -typedef struct { - SignalRegisterAccountResponse* raw; -} SignalMutPointerRegisterAccountResponse; -static_assert_64bit(offsetof(SignalMutPointerRegisterAccountResponse, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalMutPointerRegisterAccountResponse) == 8); -typedef const SignalMutPointerRegisterAccountResponse* SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse) == 8); -typedef struct { - bool present; - const int8_t* first; - SignalType_FixedArray32_uint8_t second; -} SignalOptionalPairOfCStringPtrc_uchar32; -static_assert_64bit(offsetof(SignalOptionalPairOfCStringPtrc_uchar32, present) == 0); -static_assert_64bit(offsetof(SignalOptionalPairOfCStringPtrc_uchar32, first) == 8); -static_assert_64bit(offsetof(SignalOptionalPairOfCStringPtrc_uchar32, second) == 16); -static_assert_64bit(sizeof(SignalOptionalPairOfCStringPtrc_uchar32) == 48); -static_assert_64bit(alignof(SignalOptionalPairOfCStringPtrc_uchar32) == 8); -typedef const SignalOptionalPairOfCStringPtrc_uchar32* SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32) == 8); -typedef struct { - bool present; - SignalType_FixedArray16_uint8_t bytes; -} SignalOptionalUuid; -static_assert_64bit(offsetof(SignalOptionalUuid, present) == 0); -static_assert_64bit(offsetof(SignalOptionalUuid, bytes) == 1); -static_assert_64bit(sizeof(SignalOptionalUuid) == 17); -static_assert_64bit(alignof(SignalOptionalUuid) == 1); -typedef const SignalOptionalUuid* SignalType_ConstPointer_SignalOptionalUuid; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOptionalUuid) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOptionalUuid) == 8); -typedef SignalType_FixedArray17_uint8_t* SignalType_MutPointer_SignalType_FixedArray17_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray17_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray17_uint8_t) == 8); -typedef struct { - SignalType_FixedArray17_uint8_t* base; - size_t length; -} SignalOwnedBufferOfc_uchar17; -static_assert_64bit(offsetof(SignalOwnedBufferOfc_uchar17, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfc_uchar17, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfc_uchar17) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfc_uchar17) == 8); -typedef const SignalOwnedBufferOfc_uchar17* SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17) == 8); -typedef const SignalOwnedBuffer* SignalType_ConstPointer_SignalOwnedBuffer; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBuffer) == 8); -typedef struct { - uint8_t id; - SignalOwnedBuffer encrypted_name; - uint64_t last_seen; - uint16_t registration_id; - SignalOwnedBuffer created_at_ciphertext; -} SignalLinkedDeviceInternalFfiResult; -static_assert_64bit(offsetof(SignalLinkedDeviceInternalFfiResult, id) == 0); -static_assert_64bit(offsetof(SignalLinkedDeviceInternalFfiResult, encrypted_name) == 8); -static_assert_64bit(offsetof(SignalLinkedDeviceInternalFfiResult, last_seen) == 24); -static_assert_64bit(offsetof(SignalLinkedDeviceInternalFfiResult, registration_id) == 32); -static_assert_64bit(offsetof(SignalLinkedDeviceInternalFfiResult, created_at_ciphertext) == 40); -static_assert_64bit(sizeof(SignalLinkedDeviceInternalFfiResult) == 56); -static_assert_64bit(alignof(SignalLinkedDeviceInternalFfiResult) == 8); -typedef SignalLinkedDeviceInternalFfiResult* SignalType_MutPointer_SignalLinkedDeviceInternalFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalLinkedDeviceInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalLinkedDeviceInternalFfiResult) == 8); -typedef struct { - SignalLinkedDeviceInternalFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -typedef const SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult* SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -typedef struct { - const int8_t* first; - const int8_t* second; -} SignalPairOfCStringPtrCStringPtr; -static_assert_64bit(offsetof(SignalPairOfCStringPtrCStringPtr, first) == 0); -static_assert_64bit(offsetof(SignalPairOfCStringPtrCStringPtr, second) == 8); -static_assert_64bit(sizeof(SignalPairOfCStringPtrCStringPtr) == 16); -static_assert_64bit(alignof(SignalPairOfCStringPtrCStringPtr) == 8); -typedef const SignalPairOfCStringPtrCStringPtr* SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr) == 8); -typedef struct { - SignalOwnedBufferOfCStringPtr first; - SignalOwnedBufferOfCStringPtr second; -} SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr; -static_assert_64bit(offsetof(SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, first) == 0); -static_assert_64bit(offsetof(SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, second) == 16); -static_assert_64bit(sizeof(SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 32); -static_assert_64bit(alignof(SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -typedef const SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr* SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -typedef struct { - SignalOwnedBuffer first; - SignalOwnedBuffer second; -} SignalPairOfOwnedBufferOwnedBuffer; -static_assert_64bit(offsetof(SignalPairOfOwnedBufferOwnedBuffer, first) == 0); -static_assert_64bit(offsetof(SignalPairOfOwnedBufferOwnedBuffer, second) == 16); -static_assert_64bit(sizeof(SignalPairOfOwnedBufferOwnedBuffer) == 32); -static_assert_64bit(alignof(SignalPairOfOwnedBufferOwnedBuffer) == 8); -typedef const SignalPairOfOwnedBufferOwnedBuffer* SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer) == 8); -typedef struct { - SignalType_FixedArray16_uint8_t bytes; -} SignalUuid; -static_assert_64bit(offsetof(SignalUuid, bytes) == 0); -static_assert_64bit(sizeof(SignalUuid) == 16); -static_assert_64bit(alignof(SignalUuid) == 1); -typedef const SignalUuid* SignalType_ConstPointer_SignalUuid; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalUuid) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalUuid) == 8); -typedef void* SignalType_MutPointer_void; -static_assert_64bit(sizeof(SignalType_MutPointer_void) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_void) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_void)(SignalType_MutPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_void) == 8); -typedef struct SignalConnectionManager SignalConnectionManager; -typedef const SignalConnectionManager* SignalType_ConstPointer_SignalConnectionManager; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConnectionManager) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConnectionManager) == 8); -typedef SignalType_ConstPointer_SignalConnectionManager (*SignalType_FunctionPointer_SignalType_ConstPointer_SignalConnectionManager_SignalType_MutPointer_void)(SignalType_MutPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_SignalType_ConstPointer_SignalConnectionManager_SignalType_MutPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_SignalType_ConstPointer_SignalConnectionManager_SignalType_MutPointer_void) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_SignalType_ConstPointer_SignalConnectionManager_SignalType_MutPointer_void get_connection_manager; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiConnectChatBridgeStruct; -static_assert_64bit(offsetof(SignalFfiConnectChatBridgeStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiConnectChatBridgeStruct, get_connection_manager) == 8); -static_assert_64bit(offsetof(SignalFfiConnectChatBridgeStruct, destroy) == 16); -static_assert_64bit(sizeof(SignalFfiConnectChatBridgeStruct) == 24); -static_assert_64bit(alignof(SignalFfiConnectChatBridgeStruct) == 8); -typedef const SignalFfiConnectChatBridgeStruct* SignalType_ConstPointer_SignalFfiConnectChatBridgeStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiConnectChatBridgeStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiConnectChatBridgeStruct) == 8); -typedef struct SignalFfiError SignalFfiError; -typedef const SignalFfiError* SignalType_ConstPointer_SignalFfiError; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiError) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiError) == 8); -typedef struct SignalHsmEnclaveClient SignalHsmEnclaveClient; -typedef const SignalHsmEnclaveClient* SignalType_ConstPointer_SignalHsmEnclaveClient; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalHsmEnclaveClient) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalHsmEnclaveClient) == 8); -typedef struct { - uint8_t* base; - size_t length; -} SignalBorrowedMutableBuffer; -static_assert_64bit(offsetof(SignalBorrowedMutableBuffer, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedMutableBuffer, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedMutableBuffer) == 16); -static_assert_64bit(alignof(SignalBorrowedMutableBuffer) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_size_t_SignalBorrowedMutableBuffer)(SignalType_MutPointer_void, SignalType_MutPointer_size_t, SignalBorrowedMutableBuffer); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_size_t_SignalBorrowedMutableBuffer) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_size_t_SignalBorrowedMutableBuffer) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t)(SignalType_MutPointer_void, uint64_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_size_t_SignalBorrowedMutableBuffer read; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t skip; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiSyncInputStreamStruct; -static_assert_64bit(offsetof(SignalFfiSyncInputStreamStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiSyncInputStreamStruct, read) == 8); -static_assert_64bit(offsetof(SignalFfiSyncInputStreamStruct, skip) == 16); -static_assert_64bit(offsetof(SignalFfiSyncInputStreamStruct, destroy) == 24); -static_assert_64bit(sizeof(SignalFfiSyncInputStreamStruct) == 32); -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 SignalMessageBackupKey SignalMessageBackupKey; -typedef const SignalMessageBackupKey* SignalType_ConstPointer_SignalMessageBackupKey; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMessageBackupKey) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMessageBackupKey) == 8); -typedef struct SignalMessageBackupValidationOutcome SignalMessageBackupValidationOutcome; -typedef const SignalMessageBackupValidationOutcome* SignalType_ConstPointer_SignalMessageBackupValidationOutcome; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalMessageBackupValidationOutcome) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalMessageBackupValidationOutcome) == 8); -typedef const SignalCdsiLookup* SignalType_ConstPointer_SignalCdsiLookup; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalCdsiLookup) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalCdsiLookup) == 8); -typedef struct SignalLookupRequest SignalLookupRequest; -typedef const SignalLookupRequest* SignalType_ConstPointer_SignalLookupRequest; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalLookupRequest) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalLookupRequest) == 8); -typedef const SignalAuthenticatedChatConnection* SignalType_ConstPointer_SignalAuthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalAuthenticatedChatConnection) == 8); -static_assert_64bit(sizeof(int64_t) == 8); -static_assert_64bit(alignof(int64_t) == 8); -typedef struct { - int32_t source_attachment_cdn; - const int8_t* source_key; - int64_t object_length; - const SignalType_FixedArray15_uint8_t* media_id; - const SignalType_FixedArray64_uint8_t* encryption_key; -} SignalBridgeCopyBackupMediaItemFfiArg; -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaItemFfiArg, source_attachment_cdn) == 0); -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaItemFfiArg, source_key) == 8); -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaItemFfiArg, object_length) == 16); -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaItemFfiArg, media_id) == 24); -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaItemFfiArg, encryption_key) == 32); -static_assert_64bit(sizeof(SignalBridgeCopyBackupMediaItemFfiArg) == 40); -static_assert_64bit(alignof(SignalBridgeCopyBackupMediaItemFfiArg) == 8); -typedef const SignalBridgeCopyBackupMediaItemFfiArg* SignalType_ConstPointer_SignalBridgeCopyBackupMediaItemFfiArg; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgeCopyBackupMediaItemFfiArg) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgeCopyBackupMediaItemFfiArg) == 8); -typedef struct { - const SignalType_FixedArray15_uint8_t* media_id; - int32_t cdn; -} SignalBridgeDeleteBackupMediaItemFfiArg; -static_assert_64bit(offsetof(SignalBridgeDeleteBackupMediaItemFfiArg, media_id) == 0); -static_assert_64bit(offsetof(SignalBridgeDeleteBackupMediaItemFfiArg, cdn) == 8); -static_assert_64bit(sizeof(SignalBridgeDeleteBackupMediaItemFfiArg) == 16); -static_assert_64bit(alignof(SignalBridgeDeleteBackupMediaItemFfiArg) == 8); -typedef const SignalBridgeDeleteBackupMediaItemFfiArg* SignalType_ConstPointer_SignalBridgeDeleteBackupMediaItemFfiArg; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgeDeleteBackupMediaItemFfiArg) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgeDeleteBackupMediaItemFfiArg) == 8); -typedef struct { - const int8_t* backup_dir; - const int8_t* media_dir; - int64_t used_space; -} SignalBridgeMediaBackupInfoFfiResult; -static_assert_64bit(offsetof(SignalBridgeMediaBackupInfoFfiResult, backup_dir) == 0); -static_assert_64bit(offsetof(SignalBridgeMediaBackupInfoFfiResult, media_dir) == 8); -static_assert_64bit(offsetof(SignalBridgeMediaBackupInfoFfiResult, used_space) == 16); -static_assert_64bit(sizeof(SignalBridgeMediaBackupInfoFfiResult) == 24); -static_assert_64bit(alignof(SignalBridgeMediaBackupInfoFfiResult) == 8); -typedef const SignalBridgeMediaBackupInfoFfiResult* SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult) == 8); -typedef struct { - const int8_t* backup_dir; - int32_t cdn; - const int8_t* backup_name; -} SignalBridgeMessageBackupInfoFfiResult; -static_assert_64bit(offsetof(SignalBridgeMessageBackupInfoFfiResult, backup_dir) == 0); -static_assert_64bit(offsetof(SignalBridgeMessageBackupInfoFfiResult, cdn) == 8); -static_assert_64bit(offsetof(SignalBridgeMessageBackupInfoFfiResult, backup_name) == 16); -static_assert_64bit(sizeof(SignalBridgeMessageBackupInfoFfiResult) == 24); -static_assert_64bit(alignof(SignalBridgeMessageBackupInfoFfiResult) == 8); -typedef const SignalBridgeMessageBackupInfoFfiResult* SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult) == 8); +#include + +#define SignalSVR_KEY_LEN 32 + +#define SignalBACKUP_KEY_LEN 32 + +#define SignalLOCAL_BACKUP_METADATA_KEY_LEN 32 + +#define SignalMEDIA_ID_LEN 15 + +#define SignalBACKUP_FORWARD_SECRECY_TOKEN_LEN 32 + +#define SignalMEDIA_ENCRYPTION_KEY_LEN (32 + 32) + +#define SignalBackupId_LEN 16 + +#define SignalCallLinkSecretParams_ROOT_KEY_MAX_BYTES_FOR_SHO 16 + +#define SignalNUM_AUTH_CRED_ATTRIBUTES 3 + +#define SignalNUM_PROFILE_KEY_CRED_ATTRIBUTES 4 + +#define SignalNUM_RECEIPT_CRED_ATTRIBUTES 2 + +#define SignalPRESENTATION_VERSION_1 0 + +#define SignalPRESENTATION_VERSION_2 1 + +#define SignalPRESENTATION_VERSION_3 2 + +#define SignalPRESENTATION_VERSION_4 3 + +#define SignalAES_KEY_LEN 32 + +#define SignalAESGCM_NONCE_LEN 12 + +#define SignalAESGCM_TAG_LEN 16 + +#define SignalGROUP_MASTER_KEY_LEN 32 + +#define SignalGROUP_SECRET_PARAMS_LEN 289 + +#define SignalGROUP_PUBLIC_PARAMS_LEN 97 + +#define SignalGROUP_IDENTIFIER_LEN 32 + +#define SignalAUTH_CREDENTIAL_LEN 181 + +#define SignalAUTH_CREDENTIAL_PRESENTATION_V2_LEN 461 + +#define SignalAUTH_CREDENTIAL_RESPONSE_LEN 361 + +#define SignalAUTH_CREDENTIAL_WITH_PNI_LEN 265 + +#define SignalAUTH_CREDENTIAL_WITH_PNI_RESPONSE_LEN 425 + +#define SignalPROFILE_KEY_LEN 32 + +#define SignalPROFILE_KEY_CIPHERTEXT_LEN 65 + +#define SignalPROFILE_KEY_COMMITMENT_LEN 97 + +#define SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN 153 + +#define SignalPROFILE_KEY_CREDENTIAL_PRESENTATION_V2_LEN 713 + +#define SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN 329 + +#define SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN 473 + +#define SignalEXPIRING_PROFILE_KEY_CREDENTIAL_RESPONSE_LEN 497 + +#define SignalPROFILE_KEY_VERSION_LEN 32 + +#define SignalPROFILE_KEY_VERSION_ENCODED_LEN 64 + +#define SignalRECEIPT_CREDENTIAL_LEN 129 + +#define SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN 329 + +#define SignalRECEIPT_CREDENTIAL_REQUEST_LEN 97 + +#define SignalRECEIPT_CREDENTIAL_REQUEST_CONTEXT_LEN 177 + +#define SignalRECEIPT_CREDENTIAL_RESPONSE_LEN 409 + +#define SignalRECEIPT_SERIAL_LEN 16 + +#define SignalRESERVED_LEN 1 + +#define SignalSERVER_SECRET_PARAMS_LEN 2721 + +#define SignalSERVER_PUBLIC_PARAMS_LEN 673 + +#define SignalUUID_CIPHERTEXT_LEN 65 + +#define SignalRANDOMNESS_LEN 32 + +#define SignalSIGNATURE_LEN 64 + +#define SignalUUID_LEN 16 + +#define SignalACCESS_KEY_LEN 16 + +/** + * Seconds in a 24-hour cycle (ignoring leap seconds). + */ +#define SignalSECONDS_PER_DAY 86400 + +/** + * The encoded length of a [`FourCC`], in bytes. + */ +#define SignalFourCC_ENCODED_LEN 4 + +enum SignalChallengeOption { + SignalChallengeOptionPushChallenge, + SignalChallengeOptionCaptcha, +}; +typedef uint8_t SignalChallengeOption; + typedef enum { - SignalBridgeCopyBackupMediaResultFfiResultSuccess, - SignalBridgeCopyBackupMediaResultFfiResultSourceNotFound, - SignalBridgeCopyBackupMediaResultFfiResultWrongSourceLength, - SignalBridgeCopyBackupMediaResultFfiResultOutOfSpace, -} SignalBridgeCopyBackupMediaResultFfiResult_Tag; -typedef struct { - int32_t cdn; -} SignalBridgeCopyBackupMediaResultFfiResultSignalSuccess_Body; -typedef struct { - SignalBridgeCopyBackupMediaResultFfiResult_Tag tag; - union { - SignalBridgeCopyBackupMediaResultFfiResultSignalSuccess_Body success; - }; -} SignalBridgeCopyBackupMediaResultFfiResult; -static_assert_64bit(sizeof(SignalBridgeCopyBackupMediaResultFfiResult) == 8); -static_assert_64bit(alignof(SignalBridgeCopyBackupMediaResultFfiResult) == 4); -typedef struct { - SignalType_FixedArray15_uint8_t media_id; - SignalBridgeCopyBackupMediaResultFfiResult result; -} SignalBridgeCopyBackupMediaOutcomeFfiResult; -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaOutcomeFfiResult, media_id) == 0); -static_assert_64bit(offsetof(SignalBridgeCopyBackupMediaOutcomeFfiResult, result) == 16); -static_assert_64bit(sizeof(SignalBridgeCopyBackupMediaOutcomeFfiResult) == 24); -static_assert_64bit(alignof(SignalBridgeCopyBackupMediaOutcomeFfiResult) == 4); -typedef SignalBridgeCopyBackupMediaOutcomeFfiResult* SignalType_MutPointer_SignalBridgeCopyBackupMediaOutcomeFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBridgeCopyBackupMediaOutcomeFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBridgeCopyBackupMediaOutcomeFfiResult) == 8); -typedef struct { - SignalBridgeCopyBackupMediaOutcomeFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult) == 8); -typedef SignalFfiError* SignalType_MutPointer_SignalFfiError; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalFfiError) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalFfiError) == 8); -typedef struct { - SignalFfiError* raw; -} SignalFfiBulkPolledStreamTerminationReason; -static_assert_64bit(offsetof(SignalFfiBulkPolledStreamTerminationReason, raw) == 0); -static_assert_64bit(sizeof(SignalFfiBulkPolledStreamTerminationReason) == 8); -static_assert_64bit(alignof(SignalFfiBulkPolledStreamTerminationReason) == 8); -typedef struct { - SignalOwnedBufferOfMaxAlignedBridgeCopyBackupMediaOutcomeFfiResult chunk; - SignalFfiBulkPolledStreamTerminationReason termination; -} SignalCopyBackupMediaNextChunkFfiResult; -static_assert_64bit(offsetof(SignalCopyBackupMediaNextChunkFfiResult, chunk) == 0); -static_assert_64bit(offsetof(SignalCopyBackupMediaNextChunkFfiResult, termination) == 24); -static_assert_64bit(sizeof(SignalCopyBackupMediaNextChunkFfiResult) == 32); -static_assert_64bit(alignof(SignalCopyBackupMediaNextChunkFfiResult) == 8); -typedef const SignalCopyBackupMediaNextChunkFfiResult* SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult) == 8); -typedef struct SignalCopyBackupMediaStream SignalCopyBackupMediaStream; -typedef const SignalCopyBackupMediaStream* SignalType_ConstPointer_SignalCopyBackupMediaStream; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalCopyBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalCopyBackupMediaStream) == 8); -typedef struct { - SignalType_FixedArray15_uint8_t media_id; - int32_t cdn; -} SignalBridgeDeleteBackupMediaItemFfiResult; -static_assert_64bit(offsetof(SignalBridgeDeleteBackupMediaItemFfiResult, media_id) == 0); -static_assert_64bit(offsetof(SignalBridgeDeleteBackupMediaItemFfiResult, cdn) == 16); -static_assert_64bit(sizeof(SignalBridgeDeleteBackupMediaItemFfiResult) == 20); -static_assert_64bit(alignof(SignalBridgeDeleteBackupMediaItemFfiResult) == 4); -typedef SignalBridgeDeleteBackupMediaItemFfiResult* SignalType_MutPointer_SignalBridgeDeleteBackupMediaItemFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBridgeDeleteBackupMediaItemFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBridgeDeleteBackupMediaItemFfiResult) == 8); -typedef struct { - SignalBridgeDeleteBackupMediaItemFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult) == 8); -typedef struct { - SignalOwnedBufferOfMaxAlignedBridgeDeleteBackupMediaItemFfiResult chunk; - SignalFfiBulkPolledStreamTerminationReason termination; -} SignalDeleteBackupMediaNextChunkFfiResult; -static_assert_64bit(offsetof(SignalDeleteBackupMediaNextChunkFfiResult, chunk) == 0); -static_assert_64bit(offsetof(SignalDeleteBackupMediaNextChunkFfiResult, termination) == 24); -static_assert_64bit(sizeof(SignalDeleteBackupMediaNextChunkFfiResult) == 32); -static_assert_64bit(alignof(SignalDeleteBackupMediaNextChunkFfiResult) == 8); -typedef const SignalDeleteBackupMediaNextChunkFfiResult* SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult) == 8); -typedef struct SignalDeleteBackupMediaStream SignalDeleteBackupMediaStream; -typedef const SignalDeleteBackupMediaStream* SignalType_ConstPointer_SignalDeleteBackupMediaStream; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalDeleteBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalDeleteBackupMediaStream) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void)(SignalType_MutPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError)(SignalType_MutPointer_void, SignalType_MutPointer_SignalFfiError); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalBytestringArray)(SignalType_MutPointer_void, SignalBytestringArray); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalBytestringArray) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalBytestringArray) == 8); -typedef struct SignalServerMessageAck SignalServerMessageAck; -typedef SignalServerMessageAck* SignalType_MutPointer_SignalServerMessageAck; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalServerMessageAck) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalServerMessageAck) == 8); -typedef struct { - SignalServerMessageAck* raw; -} SignalMutPointerServerMessageAck; -static_assert_64bit(offsetof(SignalMutPointerServerMessageAck, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerServerMessageAck) == 8); -static_assert_64bit(alignof(SignalMutPointerServerMessageAck) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_uint64_t_SignalMutPointerServerMessageAck)(SignalType_MutPointer_void, SignalOwnedBuffer, uint64_t, SignalMutPointerServerMessageAck); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_uint64_t_SignalMutPointerServerMessageAck) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_uint64_t_SignalMutPointerServerMessageAck) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_uint64_t_SignalMutPointerServerMessageAck received_incoming_message; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void received_queue_empty; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalBytestringArray received_alerts; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t received_server_timestamp; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError connection_interrupted; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiChatListenerStruct; -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, received_incoming_message) == 8); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, received_queue_empty) == 16); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, received_alerts) == 24); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, received_server_timestamp) == 32); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, connection_interrupted) == 40); -static_assert_64bit(offsetof(SignalFfiChatListenerStruct, destroy) == 48); -static_assert_64bit(sizeof(SignalFfiChatListenerStruct) == 56); -static_assert_64bit(alignof(SignalFfiChatListenerStruct) == 8); -typedef const SignalFfiChatListenerStruct* SignalType_ConstPointer_SignalFfiChatListenerStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiChatListenerStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiChatListenerStruct) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalCStringPtr_SignalMutPointerServerMessageAck)(SignalType_MutPointer_void, SignalCStringPtr, SignalMutPointerServerMessageAck); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalCStringPtr_SignalMutPointerServerMessageAck) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalCStringPtr_SignalMutPointerServerMessageAck) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_SignalMutPointerServerMessageAck)(SignalType_MutPointer_void, SignalOwnedBuffer, SignalMutPointerServerMessageAck); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_SignalMutPointerServerMessageAck) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_SignalMutPointerServerMessageAck) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalCStringPtr_SignalMutPointerServerMessageAck received_address; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_SignalMutPointerServerMessageAck received_envelope; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError connection_interrupted; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiProvisioningListenerStruct; -static_assert_64bit(offsetof(SignalFfiProvisioningListenerStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiProvisioningListenerStruct, received_address) == 8); -static_assert_64bit(offsetof(SignalFfiProvisioningListenerStruct, received_envelope) == 16); -static_assert_64bit(offsetof(SignalFfiProvisioningListenerStruct, connection_interrupted) == 24); -static_assert_64bit(offsetof(SignalFfiProvisioningListenerStruct, destroy) == 32); -static_assert_64bit(sizeof(SignalFfiProvisioningListenerStruct) == 40); -static_assert_64bit(alignof(SignalFfiProvisioningListenerStruct) == 8); -typedef const SignalFfiProvisioningListenerStruct* SignalType_ConstPointer_SignalFfiProvisioningListenerStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiProvisioningListenerStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiProvisioningListenerStruct) == 8); -typedef struct SignalHttpRequest SignalHttpRequest; -typedef const SignalHttpRequest* SignalType_ConstPointer_SignalHttpRequest; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalHttpRequest) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalHttpRequest) == 8); -typedef const SignalProvisioningChatConnection* SignalType_ConstPointer_SignalProvisioningChatConnection; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalProvisioningChatConnection) == 8); -typedef const SignalServerMessageAck* SignalType_ConstPointer_SignalServerMessageAck; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalServerMessageAck) == 8); -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 { - int32_t cdn; - SignalType_FixedArray15_uint8_t media_id; - int64_t object_length; -} SignalListMediaItemFfiResult; -static_assert_64bit(offsetof(SignalListMediaItemFfiResult, cdn) == 0); -static_assert_64bit(offsetof(SignalListMediaItemFfiResult, media_id) == 4); -static_assert_64bit(offsetof(SignalListMediaItemFfiResult, object_length) == 24); -static_assert_64bit(sizeof(SignalListMediaItemFfiResult) == 32); -static_assert_64bit(alignof(SignalListMediaItemFfiResult) == 8); -typedef SignalListMediaItemFfiResult* SignalType_MutPointer_SignalListMediaItemFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalListMediaItemFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalListMediaItemFfiResult) == 8); -typedef struct { - SignalListMediaItemFfiResult* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult) == 8); -typedef struct { - SignalOwnedBufferOfMaxAlignedListMediaItemFfiResult items; - const int8_t* backup_dir; - const int8_t* media_dir; - const int8_t* cursor; -} SignalListMediaResponseFfiResult; -static_assert_64bit(offsetof(SignalListMediaResponseFfiResult, items) == 0); -static_assert_64bit(offsetof(SignalListMediaResponseFfiResult, backup_dir) == 24); -static_assert_64bit(offsetof(SignalListMediaResponseFfiResult, media_dir) == 32); -static_assert_64bit(offsetof(SignalListMediaResponseFfiResult, cursor) == 40); -static_assert_64bit(sizeof(SignalListMediaResponseFfiResult) == 48); -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 SignalRegistrationAccountAttributes SignalRegistrationAccountAttributes; -typedef const SignalRegistrationAccountAttributes* SignalType_ConstPointer_SignalRegistrationAccountAttributes; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegistrationAccountAttributes) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalRegistrationAccountAttributes) == 8); -typedef struct SignalRegisterAccountRequest SignalRegisterAccountRequest; -typedef const SignalRegisterAccountRequest* SignalType_ConstPointer_SignalRegisterAccountRequest; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegisterAccountRequest) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalRegisterAccountRequest) == 8); -typedef const SignalRegistrationService* SignalType_ConstPointer_SignalRegistrationService; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegistrationService) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalRegistrationService) == 8); -typedef struct SignalTokioAsyncContext SignalTokioAsyncContext; -typedef const SignalTokioAsyncContext* SignalType_ConstPointer_SignalTokioAsyncContext; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalTokioAsyncContext) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalTokioAsyncContext) == 8); -typedef bool* SignalType_MutPointer_bool; -static_assert_64bit(sizeof(SignalType_MutPointer_bool) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_bool) == 8); -typedef SignalProtocolAddress* SignalType_MutPointer_SignalProtocolAddress; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalProtocolAddress) == 8); -typedef struct { - SignalProtocolAddress* raw; -} SignalMutPointerProtocolAddress; -static_assert_64bit(offsetof(SignalMutPointerProtocolAddress, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalMutPointerProtocolAddress) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_bool_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey_uint32_t)(SignalType_MutPointer_void, SignalType_MutPointer_bool, SignalMutPointerProtocolAddress, SignalMutPointerPublicKey, uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_bool_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_bool_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey_uint32_t) == 8); -typedef SignalMutPointerPublicKey* SignalType_MutPointer_SignalMutPointerPublicKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPublicKey) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPublicKey_SignalMutPointerProtocolAddress)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerPublicKey, SignalMutPointerProtocolAddress); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPublicKey_SignalMutPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPublicKey_SignalMutPointerProtocolAddress) == 8); -typedef struct SignalPrivateKey SignalPrivateKey; -typedef SignalPrivateKey* SignalType_MutPointer_SignalPrivateKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPrivateKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPrivateKey) == 8); -typedef struct { - SignalPrivateKey* raw; -} SignalMutPointerPrivateKey; -static_assert_64bit(offsetof(SignalMutPointerPrivateKey, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPrivateKey) == 8); -static_assert_64bit(alignof(SignalMutPointerPrivateKey) == 8); -typedef struct { - SignalMutPointerPrivateKey first; - SignalMutPointerPublicKey second; -} SignalPairOfMutPointerPrivateKeyMutPointerPublicKey; -static_assert_64bit(offsetof(SignalPairOfMutPointerPrivateKeyMutPointerPublicKey, first) == 0); -static_assert_64bit(offsetof(SignalPairOfMutPointerPrivateKeyMutPointerPublicKey, second) == 8); -static_assert_64bit(sizeof(SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 16); -static_assert_64bit(alignof(SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 8); -typedef SignalPairOfMutPointerPrivateKeyMutPointerPublicKey* SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey)(SignalType_MutPointer_void, SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey) == 8); -typedef uint32_t* SignalType_MutPointer_uint32_t; -static_assert_64bit(sizeof(SignalType_MutPointer_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint32_t)(SignalType_MutPointer_void, SignalType_MutPointer_uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint8_t_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey)(SignalType_MutPointer_void, SignalType_MutPointer_uint8_t, SignalMutPointerProtocolAddress, SignalMutPointerPublicKey); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint8_t_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint8_t_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey get_local_identity_key_pair; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint32_t get_local_registration_id; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPublicKey_SignalMutPointerProtocolAddress get_identity_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint8_t_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey save_identity_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_bool_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey_uint32_t is_trusted_identity; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiIdentityKeyStoreStruct; -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, get_local_identity_key_pair) == 8); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, get_local_registration_id) == 16); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, get_identity_key) == 24); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, save_identity_key) == 32); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, is_trusted_identity) == 40); -static_assert_64bit(offsetof(SignalFfiIdentityKeyStoreStruct, destroy) == 48); -static_assert_64bit(sizeof(SignalFfiIdentityKeyStoreStruct) == 56); -static_assert_64bit(alignof(SignalFfiIdentityKeyStoreStruct) == 8); -typedef const SignalFfiIdentityKeyStoreStruct* SignalType_ConstPointer_SignalFfiIdentityKeyStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiIdentityKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiIdentityKeyStoreStruct) == 8); -typedef struct SignalKyberPreKeyRecord SignalKyberPreKeyRecord; -typedef SignalKyberPreKeyRecord* SignalType_MutPointer_SignalKyberPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalKyberPreKeyRecord) == 8); -typedef struct { - SignalKyberPreKeyRecord* raw; -} SignalMutPointerKyberPreKeyRecord; -static_assert_64bit(offsetof(SignalMutPointerKyberPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalMutPointerKyberPreKeyRecord) == 8); -typedef SignalMutPointerKyberPreKeyRecord* SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord_uint32_t)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord, uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerKyberPreKeyRecord)(SignalType_MutPointer_void, uint32_t, SignalMutPointerKyberPreKeyRecord); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerKyberPreKeyRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_uint32_t_SignalMutPointerPublicKey)(SignalType_MutPointer_void, uint32_t, uint32_t, SignalMutPointerPublicKey); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_uint32_t_SignalMutPointerPublicKey) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_uint32_t_SignalMutPointerPublicKey) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord_uint32_t load_kyber_pre_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerKyberPreKeyRecord store_kyber_pre_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_uint32_t_SignalMutPointerPublicKey mark_kyber_pre_key_used; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiKyberPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalFfiKyberPreKeyStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiKyberPreKeyStoreStruct, load_kyber_pre_key) == 8); -static_assert_64bit(offsetof(SignalFfiKyberPreKeyStoreStruct, store_kyber_pre_key) == 16); -static_assert_64bit(offsetof(SignalFfiKyberPreKeyStoreStruct, mark_kyber_pre_key_used) == 24); -static_assert_64bit(offsetof(SignalFfiKyberPreKeyStoreStruct, destroy) == 32); -static_assert_64bit(sizeof(SignalFfiKyberPreKeyStoreStruct) == 40); -static_assert_64bit(alignof(SignalFfiKyberPreKeyStoreStruct) == 8); -typedef const SignalFfiKyberPreKeyStoreStruct* SignalType_ConstPointer_SignalFfiKyberPreKeyStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiKyberPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiKyberPreKeyStoreStruct) == 8); -typedef struct SignalPreKeyRecord SignalPreKeyRecord; -typedef SignalPreKeyRecord* SignalType_MutPointer_SignalPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPreKeyRecord) == 8); -typedef struct { - SignalPreKeyRecord* raw; -} SignalMutPointerPreKeyRecord; -static_assert_64bit(offsetof(SignalMutPointerPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalMutPointerPreKeyRecord) == 8); -typedef SignalMutPointerPreKeyRecord* SignalType_MutPointer_SignalMutPointerPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPreKeyRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPreKeyRecord_uint32_t)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerPreKeyRecord, uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPreKeyRecord_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPreKeyRecord_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t)(SignalType_MutPointer_void, uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerPreKeyRecord)(SignalType_MutPointer_void, uint32_t, SignalMutPointerPreKeyRecord); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerPreKeyRecord) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPreKeyRecord_uint32_t load_pre_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerPreKeyRecord store_pre_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t remove_pre_key; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalFfiPreKeyStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiPreKeyStoreStruct, load_pre_key) == 8); -static_assert_64bit(offsetof(SignalFfiPreKeyStoreStruct, store_pre_key) == 16); -static_assert_64bit(offsetof(SignalFfiPreKeyStoreStruct, remove_pre_key) == 24); -static_assert_64bit(offsetof(SignalFfiPreKeyStoreStruct, destroy) == 32); -static_assert_64bit(sizeof(SignalFfiPreKeyStoreStruct) == 40); -static_assert_64bit(alignof(SignalFfiPreKeyStoreStruct) == 8); -typedef const SignalFfiPreKeyStoreStruct* SignalType_ConstPointer_SignalFfiPreKeyStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiPreKeyStoreStruct) == 8); -typedef struct SignalSenderKeyRecord SignalSenderKeyRecord; -typedef SignalSenderKeyRecord* SignalType_MutPointer_SignalSenderKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSenderKeyRecord) == 8); -typedef struct { - SignalSenderKeyRecord* raw; -} SignalMutPointerSenderKeyRecord; -static_assert_64bit(offsetof(SignalMutPointerSenderKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalMutPointerSenderKeyRecord) == 8); -typedef SignalMutPointerSenderKeyRecord* SignalType_MutPointer_SignalMutPointerSenderKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSenderKeyRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSenderKeyRecord_SignalMutPointerProtocolAddress_SignalUuid)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerSenderKeyRecord, SignalMutPointerProtocolAddress, SignalUuid); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSenderKeyRecord_SignalMutPointerProtocolAddress_SignalUuid) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSenderKeyRecord_SignalMutPointerProtocolAddress_SignalUuid) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalUuid_SignalMutPointerSenderKeyRecord)(SignalType_MutPointer_void, SignalMutPointerProtocolAddress, SignalUuid, SignalMutPointerSenderKeyRecord); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalUuid_SignalMutPointerSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalUuid_SignalMutPointerSenderKeyRecord) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSenderKeyRecord_SignalMutPointerProtocolAddress_SignalUuid load_sender_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalUuid_SignalMutPointerSenderKeyRecord store_sender_key; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiSenderKeyStoreStruct; -static_assert_64bit(offsetof(SignalFfiSenderKeyStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiSenderKeyStoreStruct, load_sender_key) == 8); -static_assert_64bit(offsetof(SignalFfiSenderKeyStoreStruct, store_sender_key) == 16); -static_assert_64bit(offsetof(SignalFfiSenderKeyStoreStruct, destroy) == 24); -static_assert_64bit(sizeof(SignalFfiSenderKeyStoreStruct) == 32); -static_assert_64bit(alignof(SignalFfiSenderKeyStoreStruct) == 8); -typedef const SignalFfiSenderKeyStoreStruct* SignalType_ConstPointer_SignalFfiSenderKeyStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiSenderKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiSenderKeyStoreStruct) == 8); -typedef SignalSessionRecord* SignalType_MutPointer_SignalSessionRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSessionRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSessionRecord) == 8); -typedef struct { - SignalSessionRecord* raw; -} SignalMutPointerSessionRecord; -static_assert_64bit(offsetof(SignalMutPointerSessionRecord, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSessionRecord) == 8); -static_assert_64bit(alignof(SignalMutPointerSessionRecord) == 8); -typedef SignalMutPointerSessionRecord* SignalType_MutPointer_SignalMutPointerSessionRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSessionRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSessionRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSessionRecord_SignalMutPointerProtocolAddress)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerSessionRecord, SignalMutPointerProtocolAddress); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSessionRecord_SignalMutPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSessionRecord_SignalMutPointerProtocolAddress) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalMutPointerSessionRecord)(SignalType_MutPointer_void, SignalMutPointerProtocolAddress, SignalMutPointerSessionRecord); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalMutPointerSessionRecord) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalMutPointerSessionRecord) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSessionRecord_SignalMutPointerProtocolAddress load_session; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalMutPointerSessionRecord store_session; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiSessionStoreStruct; -static_assert_64bit(offsetof(SignalFfiSessionStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiSessionStoreStruct, load_session) == 8); -static_assert_64bit(offsetof(SignalFfiSessionStoreStruct, store_session) == 16); -static_assert_64bit(offsetof(SignalFfiSessionStoreStruct, destroy) == 24); -static_assert_64bit(sizeof(SignalFfiSessionStoreStruct) == 32); -static_assert_64bit(alignof(SignalFfiSessionStoreStruct) == 8); -typedef const SignalFfiSessionStoreStruct* SignalType_ConstPointer_SignalFfiSessionStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiSessionStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiSessionStoreStruct) == 8); -typedef struct SignalSignedPreKeyRecord SignalSignedPreKeyRecord; -typedef SignalSignedPreKeyRecord* SignalType_MutPointer_SignalSignedPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSignedPreKeyRecord) == 8); -typedef struct { - SignalSignedPreKeyRecord* raw; -} SignalMutPointerSignedPreKeyRecord; -static_assert_64bit(offsetof(SignalMutPointerSignedPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalMutPointerSignedPreKeyRecord) == 8); -typedef SignalMutPointerSignedPreKeyRecord* SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord_uint32_t)(SignalType_MutPointer_void, SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord, uint32_t); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord_uint32_t) == 8); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerSignedPreKeyRecord)(SignalType_MutPointer_void, uint32_t, SignalMutPointerSignedPreKeyRecord); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerSignedPreKeyRecord) == 8); -typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord_uint32_t load_signed_pre_key; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerSignedPreKeyRecord store_signed_pre_key; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiSignedPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalFfiSignedPreKeyStoreStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiSignedPreKeyStoreStruct, load_signed_pre_key) == 8); -static_assert_64bit(offsetof(SignalFfiSignedPreKeyStoreStruct, store_signed_pre_key) == 16); -static_assert_64bit(offsetof(SignalFfiSignedPreKeyStoreStruct, destroy) == 24); -static_assert_64bit(sizeof(SignalFfiSignedPreKeyStoreStruct) == 32); -static_assert_64bit(alignof(SignalFfiSignedPreKeyStoreStruct) == 8); -typedef const SignalFfiSignedPreKeyStoreStruct* SignalType_ConstPointer_SignalFfiSignedPreKeyStoreStruct; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalFfiSignedPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalFfiSignedPreKeyStoreStruct) == 8); -typedef struct SignalSgxClientState SignalSgxClientState; -typedef const SignalSgxClientState* SignalType_ConstPointer_SignalSgxClientState; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSgxClientState) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSgxClientState) == 8); -typedef struct SignalBridgedStringMap SignalBridgedStringMap; -typedef const SignalBridgedStringMap* SignalType_ConstPointer_SignalBridgedStringMap; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBridgedStringMap) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBridgedStringMap) == 8); -typedef const SignalPrivateKey* SignalType_ConstPointer_SignalPrivateKey; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPrivateKey) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPrivateKey) == 8); -typedef struct SignalChatConnectionInfo SignalChatConnectionInfo; -typedef const SignalChatConnectionInfo* SignalType_ConstPointer_SignalChatConnectionInfo; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalChatConnectionInfo) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalChatConnectionInfo) == 8); -typedef const SignalBackupRestoreResponse* SignalType_ConstPointer_SignalBackupRestoreResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBackupRestoreResponse) == 8); -typedef const SignalBackupStoreResponse* SignalType_ConstPointer_SignalBackupStoreResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalBackupStoreResponse) == 8); -typedef const SignalRegisterAccountResponse* SignalType_ConstPointer_SignalRegisterAccountResponse; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalRegisterAccountResponse) == 8); -typedef struct SignalRegistrationSession SignalRegistrationSession; -typedef const SignalRegistrationSession* SignalType_ConstPointer_SignalRegistrationSession; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalRegistrationSession) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalRegistrationSession) == 8); -typedef struct SignalConnectionProxyConfig SignalConnectionProxyConfig; -typedef const SignalConnectionProxyConfig* SignalType_ConstPointer_SignalConnectionProxyConfig; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalConnectionProxyConfig) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalConnectionProxyConfig) == 8); -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); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalKyberSecretKey) == 8); -typedef struct SignalKyberKeyPair SignalKyberKeyPair; -typedef const SignalKyberKeyPair* SignalType_ConstPointer_SignalKyberKeyPair; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalKyberKeyPair) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalKyberKeyPair) == 8); -typedef struct SignalDecryptionErrorMessage SignalDecryptionErrorMessage; -typedef const SignalDecryptionErrorMessage* SignalType_ConstPointer_SignalDecryptionErrorMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalDecryptionErrorMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalDecryptionErrorMessage) == 8); -typedef struct SignalPlaintextContent SignalPlaintextContent; -typedef const SignalPlaintextContent* SignalType_ConstPointer_SignalPlaintextContent; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPlaintextContent) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPlaintextContent) == 8); -typedef struct SignalPreKeySignalMessage SignalPreKeySignalMessage; -typedef const SignalPreKeySignalMessage* SignalType_ConstPointer_SignalPreKeySignalMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPreKeySignalMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPreKeySignalMessage) == 8); -typedef struct SignalSenderKeyDistributionMessage SignalSenderKeyDistributionMessage; -typedef const SignalSenderKeyDistributionMessage* SignalType_ConstPointer_SignalSenderKeyDistributionMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSenderKeyDistributionMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSenderKeyDistributionMessage) == 8); -typedef struct SignalSenderKeyMessage SignalSenderKeyMessage; -typedef const SignalSenderKeyMessage* SignalType_ConstPointer_SignalSenderKeyMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSenderKeyMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSenderKeyMessage) == 8); -typedef struct SignalSignalMessage SignalSignalMessage; -typedef const SignalSignalMessage* SignalType_ConstPointer_SignalSignalMessage; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSignalMessage) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSignalMessage) == 8); -typedef struct SignalSenderCertificate SignalSenderCertificate; -typedef const SignalSenderCertificate* SignalType_ConstPointer_SignalSenderCertificate; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSenderCertificate) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSenderCertificate) == 8); -typedef struct SignalServerCertificate SignalServerCertificate; -typedef const SignalServerCertificate* SignalType_ConstPointer_SignalServerCertificate; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalServerCertificate) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalServerCertificate) == 8); -typedef struct SignalUnidentifiedSenderMessageContent SignalUnidentifiedSenderMessageContent; -typedef const SignalUnidentifiedSenderMessageContent* SignalType_ConstPointer_SignalUnidentifiedSenderMessageContent; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalUnidentifiedSenderMessageContent) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalUnidentifiedSenderMessageContent) == 8); -typedef const SignalSenderKeyRecord* SignalType_ConstPointer_SignalSenderKeyRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSenderKeyRecord) == 8); -typedef const SignalPreKeyBundle* SignalType_ConstPointer_SignalPreKeyBundle; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPreKeyBundle) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPreKeyBundle) == 8); -typedef const SignalKyberPreKeyRecord* SignalType_ConstPointer_SignalKyberPreKeyRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalKyberPreKeyRecord) == 8); -typedef const SignalPreKeyRecord* SignalType_ConstPointer_SignalPreKeyRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalPreKeyRecord) == 8); -typedef const SignalSignedPreKeyRecord* SignalType_ConstPointer_SignalSignedPreKeyRecord; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalSignedPreKeyRecord) == 8); -typedef const uint32_t* SignalType_ConstPointer_uint32_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_uint32_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_uint32_t) == 8); -typedef const size_t* SignalType_ConstPointer_size_t; -static_assert_64bit(sizeof(SignalType_ConstPointer_size_t) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_size_t) == 8); -typedef struct SignalServerPublicParams SignalServerPublicParams; -typedef const SignalServerPublicParams* SignalType_ConstPointer_SignalServerPublicParams; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalServerPublicParams) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalServerPublicParams) == 8); -typedef struct SignalServerSecretParams SignalServerSecretParams; -typedef const SignalServerSecretParams* SignalType_ConstPointer_SignalServerSecretParams; -static_assert_64bit(sizeof(SignalType_ConstPointer_SignalServerSecretParams) == 8); -static_assert_64bit(alignof(SignalType_ConstPointer_SignalServerSecretParams) == 8); -typedef SignalType_FixedArray129_uint8_t* SignalType_MutPointer_SignalType_FixedArray129_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray129_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray129_uint8_t) == 8); -typedef SignalType_FixedArray153_uint8_t* SignalType_MutPointer_SignalType_FixedArray153_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray153_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray153_uint8_t) == 8); -typedef SignalType_FixedArray15_uint8_t* SignalType_MutPointer_SignalType_FixedArray15_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray15_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray15_uint8_t) == 8); -typedef SignalType_FixedArray16_uint8_t* SignalType_MutPointer_SignalType_FixedArray16_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray16_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray16_uint8_t) == 8); -typedef SignalType_FixedArray177_uint8_t* SignalType_MutPointer_SignalType_FixedArray177_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray177_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray177_uint8_t) == 8); -typedef SignalType_FixedArray289_uint8_t* SignalType_MutPointer_SignalType_FixedArray289_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray289_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray289_uint8_t) == 8); -typedef SignalType_FixedArray329_uint8_t* SignalType_MutPointer_SignalType_FixedArray329_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray329_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray329_uint8_t) == 8); -typedef SignalType_FixedArray32_uint8_t* SignalType_MutPointer_SignalType_FixedArray32_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray32_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray32_uint8_t) == 8); -typedef SignalType_FixedArray409_uint8_t* SignalType_MutPointer_SignalType_FixedArray409_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray409_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray409_uint8_t) == 8); -typedef SignalType_FixedArray473_uint8_t* SignalType_MutPointer_SignalType_FixedArray473_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray473_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray473_uint8_t) == 8); -typedef SignalType_FixedArray497_uint8_t* SignalType_MutPointer_SignalType_FixedArray497_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray497_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray497_uint8_t) == 8); -typedef SignalType_FixedArray64_uint8_t* SignalType_MutPointer_SignalType_FixedArray64_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray64_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray64_uint8_t) == 8); -typedef SignalType_FixedArray65_uint8_t* SignalType_MutPointer_SignalType_FixedArray65_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray65_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray65_uint8_t) == 8); -typedef SignalType_FixedArray97_uint8_t* SignalType_MutPointer_SignalType_FixedArray97_uint8_t; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalType_FixedArray97_uint8_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalType_FixedArray97_uint8_t) == 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); -typedef struct SignalAes256GcmDecryption SignalAes256GcmDecryption; -typedef SignalAes256GcmDecryption* SignalType_MutPointer_SignalAes256GcmDecryption; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalAes256GcmDecryption) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalAes256GcmDecryption) == 8); -typedef struct SignalAes256GcmEncryption SignalAes256GcmEncryption; -typedef SignalAes256GcmEncryption* SignalType_MutPointer_SignalAes256GcmEncryption; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalAes256GcmEncryption) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalAes256GcmEncryption) == 8); -typedef SignalAes256GcmSiv* SignalType_MutPointer_SignalAes256GcmSiv; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalAes256GcmSiv) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalAes256GcmSiv) == 8); -typedef SignalBytestringArray* SignalType_MutPointer_SignalBytestringArray; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBytestringArray) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBytestringArray) == 8); -typedef struct { - uint32_t* base; - size_t length; -} SignalOwnedBufferOfu32; -static_assert_64bit(offsetof(SignalOwnedBufferOfu32, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfu32, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfu32) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfu32) == 8); -typedef struct { - SignalType_FixedArray17_uint8_t account; - SignalOwnedBufferOfu32 missing_devices; - SignalOwnedBufferOfu32 extra_devices; - SignalOwnedBufferOfu32 stale_devices; -} SignalFfiMismatchedDevicesError; -static_assert_64bit(offsetof(SignalFfiMismatchedDevicesError, account) == 0); -static_assert_64bit(offsetof(SignalFfiMismatchedDevicesError, missing_devices) == 24); -static_assert_64bit(offsetof(SignalFfiMismatchedDevicesError, extra_devices) == 40); -static_assert_64bit(offsetof(SignalFfiMismatchedDevicesError, stale_devices) == 56); -static_assert_64bit(sizeof(SignalFfiMismatchedDevicesError) == 72); -static_assert_64bit(alignof(SignalFfiMismatchedDevicesError) == 8); -typedef SignalFfiMismatchedDevicesError* SignalType_MutPointer_SignalFfiMismatchedDevicesError; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalFfiMismatchedDevicesError) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalFfiMismatchedDevicesError) == 8); -static_assert_64bit(sizeof(double) == 8); -static_assert_64bit(alignof(double) == 8); -typedef struct { - const int8_t* id; - bool visible; - double expiration_secs; -} SignalFfiRegisterResponseBadge; -static_assert_64bit(offsetof(SignalFfiRegisterResponseBadge, id) == 0); -static_assert_64bit(offsetof(SignalFfiRegisterResponseBadge, visible) == 8); -static_assert_64bit(offsetof(SignalFfiRegisterResponseBadge, expiration_secs) == 16); -static_assert_64bit(sizeof(SignalFfiRegisterResponseBadge) == 24); -static_assert_64bit(alignof(SignalFfiRegisterResponseBadge) == 8); -typedef SignalFfiRegisterResponseBadge* SignalType_MutPointer_SignalFfiRegisterResponseBadge; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalFfiRegisterResponseBadge) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalFfiRegisterResponseBadge) == 8); -typedef struct { - SignalPinHash* raw; -} SignalMutPointerPinHash; -static_assert_64bit(offsetof(SignalMutPointerPinHash, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPinHash) == 8); -static_assert_64bit(alignof(SignalMutPointerPinHash) == 8); -typedef SignalMutPointerPinHash* SignalType_MutPointer_SignalMutPointerPinHash; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPinHash) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPinHash) == 8); -typedef struct { - SignalAes256GcmDecryption* raw; -} SignalMutPointerAes256GcmDecryption; -static_assert_64bit(offsetof(SignalMutPointerAes256GcmDecryption, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerAes256GcmDecryption) == 8); -static_assert_64bit(alignof(SignalMutPointerAes256GcmDecryption) == 8); -typedef SignalMutPointerAes256GcmDecryption* SignalType_MutPointer_SignalMutPointerAes256GcmDecryption; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerAes256GcmDecryption) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerAes256GcmDecryption) == 8); -typedef struct { - SignalAes256GcmEncryption* raw; -} SignalMutPointerAes256GcmEncryption; -static_assert_64bit(offsetof(SignalMutPointerAes256GcmEncryption, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerAes256GcmEncryption) == 8); -static_assert_64bit(alignof(SignalMutPointerAes256GcmEncryption) == 8); -typedef SignalMutPointerAes256GcmEncryption* SignalType_MutPointer_SignalMutPointerAes256GcmEncryption; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerAes256GcmEncryption) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerAes256GcmEncryption) == 8); -typedef struct { - SignalAes256GcmSiv* raw; -} SignalMutPointerAes256GcmSiv; -static_assert_64bit(offsetof(SignalMutPointerAes256GcmSiv, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerAes256GcmSiv) == 8); -static_assert_64bit(alignof(SignalMutPointerAes256GcmSiv) == 8); -typedef SignalMutPointerAes256GcmSiv* SignalType_MutPointer_SignalMutPointerAes256GcmSiv; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerAes256GcmSiv) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerAes256GcmSiv) == 8); -typedef SignalHsmEnclaveClient* SignalType_MutPointer_SignalHsmEnclaveClient; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalHsmEnclaveClient) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalHsmEnclaveClient) == 8); -typedef struct { - SignalHsmEnclaveClient* raw; -} SignalMutPointerHsmEnclaveClient; -static_assert_64bit(offsetof(SignalMutPointerHsmEnclaveClient, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerHsmEnclaveClient) == 8); -static_assert_64bit(alignof(SignalMutPointerHsmEnclaveClient) == 8); -typedef SignalMutPointerHsmEnclaveClient* SignalType_MutPointer_SignalMutPointerHsmEnclaveClient; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerHsmEnclaveClient) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerHsmEnclaveClient) == 8); -typedef struct SignalIncrementalMac SignalIncrementalMac; -typedef SignalIncrementalMac* SignalType_MutPointer_SignalIncrementalMac; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalIncrementalMac) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalIncrementalMac) == 8); -typedef struct { - SignalIncrementalMac* raw; -} SignalMutPointerIncrementalMac; -static_assert_64bit(offsetof(SignalMutPointerIncrementalMac, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerIncrementalMac) == 8); -static_assert_64bit(alignof(SignalMutPointerIncrementalMac) == 8); -typedef SignalMutPointerIncrementalMac* SignalType_MutPointer_SignalMutPointerIncrementalMac; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerIncrementalMac) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerIncrementalMac) == 8); -typedef struct SignalValidatingMac SignalValidatingMac; -typedef SignalValidatingMac* SignalType_MutPointer_SignalValidatingMac; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalValidatingMac) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalValidatingMac) == 8); -typedef struct { - SignalValidatingMac* raw; -} SignalMutPointerValidatingMac; -static_assert_64bit(offsetof(SignalMutPointerValidatingMac, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerValidatingMac) == 8); -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 SignalMessageBackupKey* SignalType_MutPointer_SignalMessageBackupKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMessageBackupKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMessageBackupKey) == 8); -typedef struct { - SignalMessageBackupKey* raw; -} SignalMutPointerMessageBackupKey; -static_assert_64bit(offsetof(SignalMutPointerMessageBackupKey, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerMessageBackupKey) == 8); -static_assert_64bit(alignof(SignalMutPointerMessageBackupKey) == 8); -typedef SignalMutPointerMessageBackupKey* SignalType_MutPointer_SignalMutPointerMessageBackupKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerMessageBackupKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerMessageBackupKey) == 8); -typedef SignalMessageBackupValidationOutcome* SignalType_MutPointer_SignalMessageBackupValidationOutcome; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMessageBackupValidationOutcome) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMessageBackupValidationOutcome) == 8); -typedef struct { - SignalMessageBackupValidationOutcome* raw; -} SignalMutPointerMessageBackupValidationOutcome; -static_assert_64bit(offsetof(SignalMutPointerMessageBackupValidationOutcome, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerMessageBackupValidationOutcome) == 8); -static_assert_64bit(alignof(SignalMutPointerMessageBackupValidationOutcome) == 8); -typedef SignalMutPointerMessageBackupValidationOutcome* SignalType_MutPointer_SignalMutPointerMessageBackupValidationOutcome; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerMessageBackupValidationOutcome) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerMessageBackupValidationOutcome) == 8); -typedef struct SignalOnlineBackupValidator SignalOnlineBackupValidator; -typedef SignalOnlineBackupValidator* SignalType_MutPointer_SignalOnlineBackupValidator; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOnlineBackupValidator) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOnlineBackupValidator) == 8); -typedef struct { - SignalOnlineBackupValidator* raw; -} SignalMutPointerOnlineBackupValidator; -static_assert_64bit(offsetof(SignalMutPointerOnlineBackupValidator, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerOnlineBackupValidator) == 8); -static_assert_64bit(alignof(SignalMutPointerOnlineBackupValidator) == 8); -typedef SignalMutPointerOnlineBackupValidator* SignalType_MutPointer_SignalMutPointerOnlineBackupValidator; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerOnlineBackupValidator) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerOnlineBackupValidator) == 8); -typedef SignalConnectionManager* SignalType_MutPointer_SignalConnectionManager; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalConnectionManager) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalConnectionManager) == 8); -typedef struct { - SignalConnectionManager* raw; -} SignalMutPointerConnectionManager; -static_assert_64bit(offsetof(SignalMutPointerConnectionManager, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerConnectionManager) == 8); -static_assert_64bit(alignof(SignalMutPointerConnectionManager) == 8); -typedef SignalMutPointerConnectionManager* SignalType_MutPointer_SignalMutPointerConnectionManager; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerConnectionManager) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerConnectionManager) == 8); -typedef SignalLookupRequest* SignalType_MutPointer_SignalLookupRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalLookupRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalLookupRequest) == 8); -typedef struct { - SignalLookupRequest* raw; -} SignalMutPointerLookupRequest; -static_assert_64bit(offsetof(SignalMutPointerLookupRequest, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerLookupRequest) == 8); -static_assert_64bit(alignof(SignalMutPointerLookupRequest) == 8); -typedef SignalMutPointerLookupRequest* SignalType_MutPointer_SignalMutPointerLookupRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerLookupRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerLookupRequest) == 8); -typedef SignalCopyBackupMediaStream* SignalType_MutPointer_SignalCopyBackupMediaStream; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCopyBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCopyBackupMediaStream) == 8); -typedef struct { - SignalCopyBackupMediaStream* raw; -} SignalMutPointerCopyBackupMediaStream; -static_assert_64bit(offsetof(SignalMutPointerCopyBackupMediaStream, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerCopyBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalMutPointerCopyBackupMediaStream) == 8); -typedef SignalMutPointerCopyBackupMediaStream* SignalType_MutPointer_SignalMutPointerCopyBackupMediaStream; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerCopyBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerCopyBackupMediaStream) == 8); -typedef SignalDeleteBackupMediaStream* SignalType_MutPointer_SignalDeleteBackupMediaStream; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalDeleteBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalDeleteBackupMediaStream) == 8); -typedef struct { - SignalDeleteBackupMediaStream* raw; -} SignalMutPointerDeleteBackupMediaStream; -static_assert_64bit(offsetof(SignalMutPointerDeleteBackupMediaStream, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerDeleteBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalMutPointerDeleteBackupMediaStream) == 8); -typedef SignalMutPointerDeleteBackupMediaStream* SignalType_MutPointer_SignalMutPointerDeleteBackupMediaStream; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerDeleteBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerDeleteBackupMediaStream) == 8); -typedef SignalHttpRequest* SignalType_MutPointer_SignalHttpRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalHttpRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalHttpRequest) == 8); -typedef struct { - SignalHttpRequest* raw; -} SignalMutPointerHttpRequest; -static_assert_64bit(offsetof(SignalMutPointerHttpRequest, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerHttpRequest) == 8); -static_assert_64bit(alignof(SignalMutPointerHttpRequest) == 8); -typedef SignalMutPointerHttpRequest* SignalType_MutPointer_SignalMutPointerHttpRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerHttpRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerHttpRequest) == 8); -typedef SignalRegistrationAccountAttributes* SignalType_MutPointer_SignalRegistrationAccountAttributes; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalRegistrationAccountAttributes) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalRegistrationAccountAttributes) == 8); -typedef struct { - SignalRegistrationAccountAttributes* raw; -} SignalMutPointerRegistrationAccountAttributes; -static_assert_64bit(offsetof(SignalMutPointerRegistrationAccountAttributes, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerRegistrationAccountAttributes) == 8); -static_assert_64bit(alignof(SignalMutPointerRegistrationAccountAttributes) == 8); -typedef SignalMutPointerRegistrationAccountAttributes* SignalType_MutPointer_SignalMutPointerRegistrationAccountAttributes; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerRegistrationAccountAttributes) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerRegistrationAccountAttributes) == 8); -typedef SignalRegisterAccountRequest* SignalType_MutPointer_SignalRegisterAccountRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalRegisterAccountRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalRegisterAccountRequest) == 8); -typedef struct { - SignalRegisterAccountRequest* raw; -} SignalMutPointerRegisterAccountRequest; -static_assert_64bit(offsetof(SignalMutPointerRegisterAccountRequest, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerRegisterAccountRequest) == 8); -static_assert_64bit(alignof(SignalMutPointerRegisterAccountRequest) == 8); -typedef SignalMutPointerRegisterAccountRequest* SignalType_MutPointer_SignalMutPointerRegisterAccountRequest; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerRegisterAccountRequest) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerRegisterAccountRequest) == 8); -typedef SignalTokioAsyncContext* SignalType_MutPointer_SignalTokioAsyncContext; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalTokioAsyncContext) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalTokioAsyncContext) == 8); -typedef struct { - SignalTokioAsyncContext* raw; -} SignalMutPointerTokioAsyncContext; -static_assert_64bit(offsetof(SignalMutPointerTokioAsyncContext, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerTokioAsyncContext) == 8); -static_assert_64bit(alignof(SignalMutPointerTokioAsyncContext) == 8); -typedef SignalMutPointerTokioAsyncContext* SignalType_MutPointer_SignalMutPointerTokioAsyncContext; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerTokioAsyncContext) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerTokioAsyncContext) == 8); -typedef SignalSgxClientState* SignalType_MutPointer_SignalSgxClientState; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSgxClientState) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSgxClientState) == 8); -typedef struct { - SignalSgxClientState* raw; -} SignalMutPointerSgxClientState; -static_assert_64bit(offsetof(SignalMutPointerSgxClientState, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSgxClientState) == 8); -static_assert_64bit(alignof(SignalMutPointerSgxClientState) == 8); -typedef SignalMutPointerSgxClientState* SignalType_MutPointer_SignalMutPointerSgxClientState; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSgxClientState) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSgxClientState) == 8); -typedef SignalBridgedStringMap* SignalType_MutPointer_SignalBridgedStringMap; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalBridgedStringMap) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalBridgedStringMap) == 8); -typedef struct { - SignalBridgedStringMap* raw; -} SignalMutPointerBridgedStringMap; -static_assert_64bit(offsetof(SignalMutPointerBridgedStringMap, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerBridgedStringMap) == 8); -static_assert_64bit(alignof(SignalMutPointerBridgedStringMap) == 8); -typedef SignalMutPointerBridgedStringMap* SignalType_MutPointer_SignalMutPointerBridgedStringMap; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerBridgedStringMap) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerBridgedStringMap) == 8); -typedef SignalMutPointerProtocolAddress* SignalType_MutPointer_SignalMutPointerProtocolAddress; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerProtocolAddress) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerProtocolAddress) == 8); -typedef SignalMutPointerPrivateKey* SignalType_MutPointer_SignalMutPointerPrivateKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPrivateKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPrivateKey) == 8); -typedef SignalChatConnectionInfo* SignalType_MutPointer_SignalChatConnectionInfo; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalChatConnectionInfo) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalChatConnectionInfo) == 8); -typedef struct { - SignalChatConnectionInfo* raw; -} SignalMutPointerChatConnectionInfo; -static_assert_64bit(offsetof(SignalMutPointerChatConnectionInfo, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerChatConnectionInfo) == 8); -static_assert_64bit(alignof(SignalMutPointerChatConnectionInfo) == 8); -typedef SignalMutPointerChatConnectionInfo* SignalType_MutPointer_SignalMutPointerChatConnectionInfo; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerChatConnectionInfo) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerChatConnectionInfo) == 8); -typedef SignalRegistrationSession* SignalType_MutPointer_SignalRegistrationSession; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalRegistrationSession) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalRegistrationSession) == 8); -typedef struct { - SignalRegistrationSession* raw; -} SignalMutPointerRegistrationSession; -static_assert_64bit(offsetof(SignalMutPointerRegistrationSession, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerRegistrationSession) == 8); -static_assert_64bit(alignof(SignalMutPointerRegistrationSession) == 8); -typedef SignalMutPointerRegistrationSession* SignalType_MutPointer_SignalMutPointerRegistrationSession; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerRegistrationSession) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerRegistrationSession) == 8); -typedef SignalConnectionProxyConfig* SignalType_MutPointer_SignalConnectionProxyConfig; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalConnectionProxyConfig) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalConnectionProxyConfig) == 8); -typedef struct { - SignalConnectionProxyConfig* raw; -} SignalMutPointerConnectionProxyConfig; -static_assert_64bit(offsetof(SignalMutPointerConnectionProxyConfig, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerConnectionProxyConfig) == 8); -static_assert_64bit(alignof(SignalMutPointerConnectionProxyConfig) == 8); -typedef SignalMutPointerConnectionProxyConfig* SignalType_MutPointer_SignalMutPointerConnectionProxyConfig; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerConnectionProxyConfig) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerConnectionProxyConfig) == 8); -typedef SignalFingerprint* SignalType_MutPointer_SignalFingerprint; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalFingerprint) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalFingerprint) == 8); -typedef struct { - SignalFingerprint* raw; -} SignalMutPointerFingerprint; -static_assert_64bit(offsetof(SignalMutPointerFingerprint, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerFingerprint) == 8); -static_assert_64bit(alignof(SignalMutPointerFingerprint) == 8); -typedef SignalMutPointerFingerprint* SignalType_MutPointer_SignalMutPointerFingerprint; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerFingerprint) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerFingerprint) == 8); -typedef SignalKyberPublicKey* SignalType_MutPointer_SignalKyberPublicKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalKyberPublicKey) == 8); -typedef struct { - SignalKyberPublicKey* raw; -} SignalMutPointerKyberPublicKey; -static_assert_64bit(offsetof(SignalMutPointerKyberPublicKey, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalMutPointerKyberPublicKey) == 8); -typedef SignalMutPointerKyberPublicKey* SignalType_MutPointer_SignalMutPointerKyberPublicKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerKyberPublicKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerKyberPublicKey) == 8); -typedef SignalKyberSecretKey* SignalType_MutPointer_SignalKyberSecretKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalKyberSecretKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalKyberSecretKey) == 8); -typedef struct { - SignalKyberSecretKey* raw; -} SignalMutPointerKyberSecretKey; -static_assert_64bit(offsetof(SignalMutPointerKyberSecretKey, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerKyberSecretKey) == 8); -static_assert_64bit(alignof(SignalMutPointerKyberSecretKey) == 8); -typedef SignalMutPointerKyberSecretKey* SignalType_MutPointer_SignalMutPointerKyberSecretKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerKyberSecretKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerKyberSecretKey) == 8); -typedef SignalKyberKeyPair* SignalType_MutPointer_SignalKyberKeyPair; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalKyberKeyPair) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalKyberKeyPair) == 8); -typedef struct { - SignalKyberKeyPair* raw; -} SignalMutPointerKyberKeyPair; -static_assert_64bit(offsetof(SignalMutPointerKyberKeyPair, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerKyberKeyPair) == 8); -static_assert_64bit(alignof(SignalMutPointerKyberKeyPair) == 8); -typedef SignalMutPointerKyberKeyPair* SignalType_MutPointer_SignalMutPointerKyberKeyPair; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerKyberKeyPair) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerKyberKeyPair) == 8); -typedef SignalCiphertextMessage* SignalType_MutPointer_SignalCiphertextMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCiphertextMessage) == 8); -typedef struct { - SignalCiphertextMessage* raw; -} SignalMutPointerCiphertextMessage; -static_assert_64bit(offsetof(SignalMutPointerCiphertextMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerCiphertextMessage) == 8); -typedef SignalMutPointerCiphertextMessage* SignalType_MutPointer_SignalMutPointerCiphertextMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerCiphertextMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerCiphertextMessage) == 8); -typedef SignalDecryptionErrorMessage* SignalType_MutPointer_SignalDecryptionErrorMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalDecryptionErrorMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalDecryptionErrorMessage) == 8); -typedef struct { - SignalDecryptionErrorMessage* raw; -} SignalMutPointerDecryptionErrorMessage; -static_assert_64bit(offsetof(SignalMutPointerDecryptionErrorMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerDecryptionErrorMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerDecryptionErrorMessage) == 8); -typedef SignalMutPointerDecryptionErrorMessage* SignalType_MutPointer_SignalMutPointerDecryptionErrorMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerDecryptionErrorMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerDecryptionErrorMessage) == 8); -typedef SignalPlaintextContent* SignalType_MutPointer_SignalPlaintextContent; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPlaintextContent) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPlaintextContent) == 8); -typedef struct { - SignalPlaintextContent* raw; -} SignalMutPointerPlaintextContent; -static_assert_64bit(offsetof(SignalMutPointerPlaintextContent, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPlaintextContent) == 8); -static_assert_64bit(alignof(SignalMutPointerPlaintextContent) == 8); -typedef SignalMutPointerPlaintextContent* SignalType_MutPointer_SignalMutPointerPlaintextContent; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPlaintextContent) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPlaintextContent) == 8); -typedef SignalPreKeySignalMessage* SignalType_MutPointer_SignalPreKeySignalMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPreKeySignalMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPreKeySignalMessage) == 8); -typedef struct { - SignalPreKeySignalMessage* raw; -} SignalMutPointerPreKeySignalMessage; -static_assert_64bit(offsetof(SignalMutPointerPreKeySignalMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerPreKeySignalMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerPreKeySignalMessage) == 8); -typedef SignalMutPointerPreKeySignalMessage* SignalType_MutPointer_SignalMutPointerPreKeySignalMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerPreKeySignalMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerPreKeySignalMessage) == 8); -typedef SignalSenderKeyDistributionMessage* SignalType_MutPointer_SignalSenderKeyDistributionMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSenderKeyDistributionMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSenderKeyDistributionMessage) == 8); -typedef struct { - SignalSenderKeyDistributionMessage* raw; -} SignalMutPointerSenderKeyDistributionMessage; -static_assert_64bit(offsetof(SignalMutPointerSenderKeyDistributionMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSenderKeyDistributionMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerSenderKeyDistributionMessage) == 8); -typedef SignalMutPointerSenderKeyDistributionMessage* SignalType_MutPointer_SignalMutPointerSenderKeyDistributionMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSenderKeyDistributionMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSenderKeyDistributionMessage) == 8); -typedef SignalSenderKeyMessage* SignalType_MutPointer_SignalSenderKeyMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSenderKeyMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSenderKeyMessage) == 8); -typedef struct { - SignalSenderKeyMessage* raw; -} SignalMutPointerSenderKeyMessage; -static_assert_64bit(offsetof(SignalMutPointerSenderKeyMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSenderKeyMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerSenderKeyMessage) == 8); -typedef SignalMutPointerSenderKeyMessage* SignalType_MutPointer_SignalMutPointerSenderKeyMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSenderKeyMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSenderKeyMessage) == 8); -typedef SignalSignalMessage* SignalType_MutPointer_SignalSignalMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSignalMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSignalMessage) == 8); -typedef struct { - SignalSignalMessage* raw; -} SignalMutPointerSignalMessage; -static_assert_64bit(offsetof(SignalMutPointerSignalMessage, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSignalMessage) == 8); -static_assert_64bit(alignof(SignalMutPointerSignalMessage) == 8); -typedef SignalMutPointerSignalMessage* SignalType_MutPointer_SignalMutPointerSignalMessage; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSignalMessage) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSignalMessage) == 8); -typedef SignalSenderCertificate* SignalType_MutPointer_SignalSenderCertificate; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalSenderCertificate) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalSenderCertificate) == 8); -typedef struct { - SignalSenderCertificate* raw; -} SignalMutPointerSenderCertificate; -static_assert_64bit(offsetof(SignalMutPointerSenderCertificate, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerSenderCertificate) == 8); -static_assert_64bit(alignof(SignalMutPointerSenderCertificate) == 8); -typedef SignalMutPointerSenderCertificate* SignalType_MutPointer_SignalMutPointerSenderCertificate; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerSenderCertificate) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerSenderCertificate) == 8); -typedef SignalServerCertificate* SignalType_MutPointer_SignalServerCertificate; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalServerCertificate) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalServerCertificate) == 8); -typedef struct { - SignalServerCertificate* raw; -} SignalMutPointerServerCertificate; -static_assert_64bit(offsetof(SignalMutPointerServerCertificate, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerServerCertificate) == 8); -static_assert_64bit(alignof(SignalMutPointerServerCertificate) == 8); -typedef SignalMutPointerServerCertificate* SignalType_MutPointer_SignalMutPointerServerCertificate; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerServerCertificate) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerServerCertificate) == 8); -typedef SignalUnidentifiedSenderMessageContent* SignalType_MutPointer_SignalUnidentifiedSenderMessageContent; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalUnidentifiedSenderMessageContent) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalUnidentifiedSenderMessageContent) == 8); -typedef struct { - SignalUnidentifiedSenderMessageContent* raw; -} SignalMutPointerUnidentifiedSenderMessageContent; -static_assert_64bit(offsetof(SignalMutPointerUnidentifiedSenderMessageContent, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerUnidentifiedSenderMessageContent) == 8); -static_assert_64bit(alignof(SignalMutPointerUnidentifiedSenderMessageContent) == 8); -typedef SignalMutPointerUnidentifiedSenderMessageContent* SignalType_MutPointer_SignalMutPointerUnidentifiedSenderMessageContent; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerUnidentifiedSenderMessageContent) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerUnidentifiedSenderMessageContent) == 8); -typedef struct SignalAes256Ctr32 SignalAes256Ctr32; -typedef SignalAes256Ctr32* SignalType_MutPointer_SignalAes256Ctr32; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalAes256Ctr32) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalAes256Ctr32) == 8); -typedef struct { - SignalAes256Ctr32* raw; -} SignalMutPointerAes256Ctr32; -static_assert_64bit(offsetof(SignalMutPointerAes256Ctr32, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerAes256Ctr32) == 8); -static_assert_64bit(alignof(SignalMutPointerAes256Ctr32) == 8); -typedef SignalMutPointerAes256Ctr32* SignalType_MutPointer_SignalMutPointerAes256Ctr32; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerAes256Ctr32) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerAes256Ctr32) == 8); -typedef SignalServerPublicParams* SignalType_MutPointer_SignalServerPublicParams; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalServerPublicParams) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalServerPublicParams) == 8); -typedef struct { - SignalServerPublicParams* raw; -} SignalMutPointerServerPublicParams; -static_assert_64bit(offsetof(SignalMutPointerServerPublicParams, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerServerPublicParams) == 8); -static_assert_64bit(alignof(SignalMutPointerServerPublicParams) == 8); -typedef SignalMutPointerServerPublicParams* SignalType_MutPointer_SignalMutPointerServerPublicParams; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerServerPublicParams) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerServerPublicParams) == 8); -typedef SignalServerSecretParams* SignalType_MutPointer_SignalServerSecretParams; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalServerSecretParams) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalServerSecretParams) == 8); -typedef struct { - SignalServerSecretParams* raw; -} SignalMutPointerServerSecretParams; -static_assert_64bit(offsetof(SignalMutPointerServerSecretParams, raw) == 0); -static_assert_64bit(sizeof(SignalMutPointerServerSecretParams) == 8); -static_assert_64bit(alignof(SignalMutPointerServerSecretParams) == 8); -typedef SignalMutPointerServerSecretParams* SignalType_MutPointer_SignalMutPointerServerSecretParams; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalMutPointerServerSecretParams) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalMutPointerServerSecretParams) == 8); -typedef SignalOptionalUuid* SignalType_MutPointer_SignalOptionalUuid; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOptionalUuid) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOptionalUuid) == 8); -typedef struct { - SignalFfiMismatchedDevicesError* base; - size_t length; -} SignalOwnedBufferOfFfiMismatchedDevicesError; -static_assert_64bit(offsetof(SignalOwnedBufferOfFfiMismatchedDevicesError, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfFfiMismatchedDevicesError, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfFfiMismatchedDevicesError) == 16); -static_assert_64bit(alignof(SignalOwnedBufferOfFfiMismatchedDevicesError) == 8); -typedef SignalOwnedBufferOfFfiMismatchedDevicesError* SignalType_MutPointer_SignalOwnedBufferOfFfiMismatchedDevicesError; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBufferOfFfiMismatchedDevicesError) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBufferOfFfiMismatchedDevicesError) == 8); -typedef struct { - SignalFfiRegisterResponseBadge* base; - size_t length; -} SignalOwnedBufferOfFfiRegisterResponseBadge; -static_assert_64bit(offsetof(SignalOwnedBufferOfFfiRegisterResponseBadge, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfFfiRegisterResponseBadge, length) == 8); -static_assert_64bit(sizeof(SignalOwnedBufferOfFfiRegisterResponseBadge) == 16); -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 SignalOwnedBuffer* SignalType_MutPointer_SignalOwnedBuffer; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalOwnedBuffer) == 8); -typedef SignalPairOfCStringPtrCStringPtr* SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfCStringPtrCStringPtr) == 8); -typedef struct { - const int8_t* first; - bool second; -} SignalPairOfCStringPtrbool; -static_assert_64bit(offsetof(SignalPairOfCStringPtrbool, first) == 0); -static_assert_64bit(offsetof(SignalPairOfCStringPtrbool, second) == 8); -static_assert_64bit(sizeof(SignalPairOfCStringPtrbool) == 16); -static_assert_64bit(alignof(SignalPairOfCStringPtrbool) == 8); -typedef SignalPairOfCStringPtrbool* SignalType_MutPointer_SignalPairOfCStringPtrbool; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfCStringPtrbool) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfCStringPtrbool) == 8); -typedef struct { - const int8_t* first; - uint32_t second; -} SignalPairOfCStringPtru32; -static_assert_64bit(offsetof(SignalPairOfCStringPtru32, first) == 0); -static_assert_64bit(offsetof(SignalPairOfCStringPtru32, second) == 8); -static_assert_64bit(sizeof(SignalPairOfCStringPtru32) == 16); -static_assert_64bit(alignof(SignalPairOfCStringPtru32) == 8); -typedef SignalPairOfCStringPtru32* SignalType_MutPointer_SignalPairOfCStringPtru32; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfCStringPtru32) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfCStringPtru32) == 8); -typedef struct { - SignalMutPointerPublicKey first; - SignalMutPointerPrivateKey second; -} SignalPairOfMutPointerPublicKeyMutPointerPrivateKey; -static_assert_64bit(offsetof(SignalPairOfMutPointerPublicKeyMutPointerPrivateKey, first) == 0); -static_assert_64bit(offsetof(SignalPairOfMutPointerPublicKeyMutPointerPrivateKey, second) == 8); -static_assert_64bit(sizeof(SignalPairOfMutPointerPublicKeyMutPointerPrivateKey) == 16); -static_assert_64bit(alignof(SignalPairOfMutPointerPublicKeyMutPointerPrivateKey) == 8); -typedef SignalPairOfMutPointerPublicKeyMutPointerPrivateKey* SignalType_MutPointer_SignalPairOfMutPointerPublicKeyMutPointerPrivateKey; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfMutPointerPublicKeyMutPointerPrivateKey) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfMutPointerPublicKeyMutPointerPrivateKey) == 8); -typedef struct { - const int8_t* first; - SignalOwnedBuffer second; -} SignalPairOfCStringPtrOwnedBuffer; -static_assert_64bit(offsetof(SignalPairOfCStringPtrOwnedBuffer, first) == 0); -static_assert_64bit(offsetof(SignalPairOfCStringPtrOwnedBuffer, second) == 8); -static_assert_64bit(sizeof(SignalPairOfCStringPtrOwnedBuffer) == 24); -static_assert_64bit(alignof(SignalPairOfCStringPtrOwnedBuffer) == 8); -typedef struct { - SignalPairOfCStringPtrOwnedBuffer first; - int64_t second; -} SignalPairOfPairOfCStringPtrOwnedBufferi64; -static_assert_64bit(offsetof(SignalPairOfPairOfCStringPtrOwnedBufferi64, first) == 0); -static_assert_64bit(offsetof(SignalPairOfPairOfCStringPtrOwnedBufferi64, second) == 24); -static_assert_64bit(sizeof(SignalPairOfPairOfCStringPtrOwnedBufferi64) == 32); -static_assert_64bit(alignof(SignalPairOfPairOfCStringPtrOwnedBufferi64) == 8); -typedef SignalPairOfPairOfCStringPtrOwnedBufferi64* SignalType_MutPointer_SignalPairOfPairOfCStringPtrOwnedBufferi64; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalPairOfPairOfCStringPtrOwnedBufferi64) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalPairOfPairOfCStringPtrOwnedBufferi64) == 8); -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_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalType_FixedArray32_uint8_t, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalType_FixedArray32_uint8_t_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisec_uchar32; -static_assert_64bit(offsetof(SignalCPromisec_uchar32, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisec_uchar32, context) == 8); -static_assert_64bit(offsetof(SignalCPromisec_uchar32, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisec_uchar32) == 24); -static_assert_64bit(alignof(SignalCPromisec_uchar32) == 8); -typedef SignalCPromisec_uchar32* SignalType_MutPointer_SignalCPromisec_uchar32; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisec_uchar32) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisec_uchar32) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_bool_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_bool, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_bool_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_bool_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_bool_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisebool; -static_assert_64bit(offsetof(SignalCPromisebool, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisebool, context) == 8); -static_assert_64bit(offsetof(SignalCPromisebool, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisebool) == 24); -static_assert_64bit(alignof(SignalCPromisebool) == 8); -typedef SignalCPromisebool* SignalType_MutPointer_SignalCPromisebool; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisebool) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisebool) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCdsiLookupResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalFfiCdsiLookupResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCdsiLookupResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCdsiLookupResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCdsiLookupResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseFfiCdsiLookupResponse; -static_assert_64bit(offsetof(SignalCPromiseFfiCdsiLookupResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseFfiCdsiLookupResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseFfiCdsiLookupResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseFfiCdsiLookupResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseFfiCdsiLookupResponse) == 8); -typedef SignalCPromiseFfiCdsiLookupResponse* SignalType_MutPointer_SignalCPromiseFfiCdsiLookupResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseFfiCdsiLookupResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseFfiCdsiLookupResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiChatResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalFfiChatResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiChatResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiChatResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiChatResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseFfiChatResponse; -static_assert_64bit(offsetof(SignalCPromiseFfiChatResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseFfiChatResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseFfiChatResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseFfiChatResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseFfiChatResponse) == 8); -typedef SignalCPromiseFfiChatResponse* SignalType_MutPointer_SignalCPromiseFfiChatResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseFfiChatResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseFfiChatResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiCheckSvr2CredentialsResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseFfiCheckSvr2CredentialsResponse; -static_assert_64bit(offsetof(SignalCPromiseFfiCheckSvr2CredentialsResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseFfiCheckSvr2CredentialsResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseFfiCheckSvr2CredentialsResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseFfiCheckSvr2CredentialsResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseFfiCheckSvr2CredentialsResponse) == 8); -typedef SignalCPromiseFfiCheckSvr2CredentialsResponse* SignalType_MutPointer_SignalCPromiseFfiCheckSvr2CredentialsResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseFfiCheckSvr2CredentialsResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseFfiCheckSvr2CredentialsResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiPreKeysResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalFfiPreKeysResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiPreKeysResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiPreKeysResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiPreKeysResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseFfiPreKeysResponse; -static_assert_64bit(offsetof(SignalCPromiseFfiPreKeysResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseFfiPreKeysResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseFfiPreKeysResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseFfiPreKeysResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseFfiPreKeysResponse) == 8); -typedef SignalCPromiseFfiPreKeysResponse* SignalType_MutPointer_SignalCPromiseFfiPreKeysResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseFfiPreKeysResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseFfiPreKeysResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiUploadForm_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalFfiUploadForm, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiUploadForm_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiUploadForm_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalFfiUploadForm_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseFfiUploadForm; -static_assert_64bit(offsetof(SignalCPromiseFfiUploadForm, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseFfiUploadForm, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseFfiUploadForm, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseFfiUploadForm) == 24); -static_assert_64bit(alignof(SignalCPromiseFfiUploadForm) == 8); -typedef SignalCPromiseFfiUploadForm* SignalType_MutPointer_SignalCPromiseFfiUploadForm; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseFfiUploadForm) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseFfiUploadForm) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerCdsiLookup_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerCdsiLookup, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerCdsiLookup_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerCdsiLookup_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerCdsiLookup_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerCdsiLookup; -static_assert_64bit(offsetof(SignalCPromiseMutPointerCdsiLookup, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerCdsiLookup, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerCdsiLookup, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerCdsiLookup) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerCdsiLookup) == 8); -typedef SignalCPromiseMutPointerCdsiLookup* SignalType_MutPointer_SignalCPromiseMutPointerCdsiLookup; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerCdsiLookup) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerCdsiLookup) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerAuthenticatedChatConnection_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerAuthenticatedChatConnection; -static_assert_64bit(offsetof(SignalCPromiseMutPointerAuthenticatedChatConnection, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerAuthenticatedChatConnection, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerAuthenticatedChatConnection, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerAuthenticatedChatConnection) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerAuthenticatedChatConnection) == 8); -typedef SignalCPromiseMutPointerAuthenticatedChatConnection* SignalType_MutPointer_SignalCPromiseMutPointerAuthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerAuthenticatedChatConnection) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerProvisioningChatConnection_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerProvisioningChatConnection; -static_assert_64bit(offsetof(SignalCPromiseMutPointerProvisioningChatConnection, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerProvisioningChatConnection, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerProvisioningChatConnection, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerProvisioningChatConnection) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerProvisioningChatConnection) == 8); -typedef SignalCPromiseMutPointerProvisioningChatConnection* SignalType_MutPointer_SignalCPromiseMutPointerProvisioningChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerProvisioningChatConnection) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerUnauthenticatedChatConnection_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerUnauthenticatedChatConnection; -static_assert_64bit(offsetof(SignalCPromiseMutPointerUnauthenticatedChatConnection, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerUnauthenticatedChatConnection, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerUnauthenticatedChatConnection, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerUnauthenticatedChatConnection) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerUnauthenticatedChatConnection) == 8); -typedef SignalCPromiseMutPointerUnauthenticatedChatConnection* SignalType_MutPointer_SignalCPromiseMutPointerUnauthenticatedChatConnection; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerUnauthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerUnauthenticatedChatConnection) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegistrationService_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerRegistrationService, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegistrationService_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegistrationService_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegistrationService_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerRegistrationService; -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegistrationService, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegistrationService, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegistrationService, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerRegistrationService) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerRegistrationService) == 8); -typedef SignalCPromiseMutPointerRegistrationService* SignalType_MutPointer_SignalCPromiseMutPointerRegistrationService; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerRegistrationService) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerRegistrationService) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupRestoreResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerBackupRestoreResponse; -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupRestoreResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupRestoreResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupRestoreResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerBackupRestoreResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerBackupRestoreResponse) == 8); -typedef SignalCPromiseMutPointerBackupRestoreResponse* SignalType_MutPointer_SignalCPromiseMutPointerBackupRestoreResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerBackupRestoreResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupStoreResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerBackupStoreResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupStoreResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupStoreResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerBackupStoreResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerBackupStoreResponse; -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupStoreResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupStoreResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerBackupStoreResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerBackupStoreResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerBackupStoreResponse) == 8); -typedef SignalCPromiseMutPointerBackupStoreResponse* SignalType_MutPointer_SignalCPromiseMutPointerBackupStoreResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerBackupStoreResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalMutPointerRegisterAccountResponse_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseMutPointerRegisterAccountResponse; -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegisterAccountResponse, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegisterAccountResponse, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseMutPointerRegisterAccountResponse, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseMutPointerRegisterAccountResponse) == 24); -static_assert_64bit(alignof(SignalCPromiseMutPointerRegisterAccountResponse) == 8); -typedef SignalCPromiseMutPointerRegisterAccountResponse* SignalType_MutPointer_SignalCPromiseMutPointerRegisterAccountResponse; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseMutPointerRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseMutPointerRegisterAccountResponse) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalPairOfCStringPtrc_uchar32_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOptionalPairOfCStringPtrc_uchar32; -static_assert_64bit(offsetof(SignalCPromiseOptionalPairOfCStringPtrc_uchar32, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOptionalPairOfCStringPtrc_uchar32, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOptionalPairOfCStringPtrc_uchar32, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOptionalPairOfCStringPtrc_uchar32) == 24); -static_assert_64bit(alignof(SignalCPromiseOptionalPairOfCStringPtrc_uchar32) == 8); -typedef SignalCPromiseOptionalPairOfCStringPtrc_uchar32* SignalType_MutPointer_SignalCPromiseOptionalPairOfCStringPtrc_uchar32; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOptionalPairOfCStringPtrc_uchar32) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOptionalPairOfCStringPtrc_uchar32) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalUuid_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOptionalUuid, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalUuid_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalUuid_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOptionalUuid_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOptionalUuid; -static_assert_64bit(offsetof(SignalCPromiseOptionalUuid, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOptionalUuid, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOptionalUuid, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOptionalUuid) == 24); -static_assert_64bit(alignof(SignalCPromiseOptionalUuid) == 8); -typedef SignalCPromiseOptionalUuid* SignalType_MutPointer_SignalCPromiseOptionalUuid; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOptionalUuid) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOptionalUuid) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfc_uchar17_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOwnedBufferOfc_uchar17; -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfc_uchar17, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfc_uchar17, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfc_uchar17, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOwnedBufferOfc_uchar17) == 24); -static_assert_64bit(alignof(SignalCPromiseOwnedBufferOfc_uchar17) == 8); -typedef SignalCPromiseOwnedBufferOfc_uchar17* SignalType_MutPointer_SignalCPromiseOwnedBufferOfc_uchar17; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfc_uchar17) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfc_uchar17) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBuffer_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBuffer, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBuffer_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBuffer_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBuffer_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOwnedBuffer; -static_assert_64bit(offsetof(SignalCPromiseOwnedBuffer, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOwnedBuffer, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOwnedBuffer, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOwnedBuffer) == 24); -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_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult; -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -typedef SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult* SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfCStringPtrCStringPtr_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisePairOfCStringPtrCStringPtr; -static_assert_64bit(offsetof(SignalCPromisePairOfCStringPtrCStringPtr, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisePairOfCStringPtrCStringPtr, context) == 8); -static_assert_64bit(offsetof(SignalCPromisePairOfCStringPtrCStringPtr, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisePairOfCStringPtrCStringPtr) == 24); -static_assert_64bit(alignof(SignalCPromisePairOfCStringPtrCStringPtr) == 8); -typedef SignalCPromisePairOfCStringPtrCStringPtr* SignalType_MutPointer_SignalCPromisePairOfCStringPtrCStringPtr; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisePairOfCStringPtrCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisePairOfCStringPtrCStringPtr) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr; -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, context) == 8); -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 24); -static_assert_64bit(alignof(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -typedef SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr* SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalPairOfOwnedBufferOwnedBuffer_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromisePairOfOwnedBufferOwnedBuffer; -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOwnedBuffer, complete) == 0); -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOwnedBuffer, context) == 8); -static_assert_64bit(offsetof(SignalCPromisePairOfOwnedBufferOwnedBuffer, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromisePairOfOwnedBufferOwnedBuffer) == 24); -static_assert_64bit(alignof(SignalCPromisePairOfOwnedBufferOwnedBuffer) == 8); -typedef SignalCPromisePairOfOwnedBufferOwnedBuffer* SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOwnedBuffer; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOwnedBuffer) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromisePairOfOwnedBufferOwnedBuffer) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalUuid_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalUuid, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalUuid_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalUuid_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalUuid_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseUuid; -static_assert_64bit(offsetof(SignalCPromiseUuid, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseUuid, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseUuid, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseUuid) == 24); -static_assert_64bit(alignof(SignalCPromiseUuid) == 8); -typedef SignalCPromiseUuid* SignalType_MutPointer_SignalCPromiseUuid; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseUuid) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseUuid) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMediaBackupInfoFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseBridgeMediaBackupInfoFfiResult; -static_assert_64bit(offsetof(SignalCPromiseBridgeMediaBackupInfoFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseBridgeMediaBackupInfoFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseBridgeMediaBackupInfoFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseBridgeMediaBackupInfoFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseBridgeMediaBackupInfoFfiResult) == 8); -typedef SignalCPromiseBridgeMediaBackupInfoFfiResult* SignalType_MutPointer_SignalCPromiseBridgeMediaBackupInfoFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseBridgeMediaBackupInfoFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseBridgeMediaBackupInfoFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalBridgeMessageBackupInfoFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseBridgeMessageBackupInfoFfiResult; -static_assert_64bit(offsetof(SignalCPromiseBridgeMessageBackupInfoFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseBridgeMessageBackupInfoFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseBridgeMessageBackupInfoFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseBridgeMessageBackupInfoFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseBridgeMessageBackupInfoFfiResult) == 8); -typedef SignalCPromiseBridgeMessageBackupInfoFfiResult* SignalType_MutPointer_SignalCPromiseBridgeMessageBackupInfoFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseBridgeMessageBackupInfoFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseBridgeMessageBackupInfoFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalCopyBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseCopyBackupMediaNextChunkFfiResult; -static_assert_64bit(offsetof(SignalCPromiseCopyBackupMediaNextChunkFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseCopyBackupMediaNextChunkFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseCopyBackupMediaNextChunkFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseCopyBackupMediaNextChunkFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseCopyBackupMediaNextChunkFfiResult) == 8); -typedef SignalCPromiseCopyBackupMediaNextChunkFfiResult* SignalType_MutPointer_SignalCPromiseCopyBackupMediaNextChunkFfiResult; -static_assert_64bit(sizeof(SignalType_MutPointer_SignalCPromiseCopyBackupMediaNextChunkFfiResult) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_SignalCPromiseCopyBackupMediaNextChunkFfiResult) == 8); -typedef void (*SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalDeleteBackupMediaNextChunkFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseDeleteBackupMediaNextChunkFfiResult; -static_assert_64bit(offsetof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult) == 24); -static_assert_64bit(alignof(SignalCPromiseDeleteBackupMediaNextChunkFfiResult) == 8); -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_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalListMediaResponseFfiResult_SignalType_ConstPointer_void)(SignalType_MutPointer_SignalFfiError, SignalType_ConstPointer_SignalListMediaResponseFfiResult, SignalType_ConstPointer_void); -static_assert_64bit(sizeof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalListMediaResponseFfiResult_SignalType_ConstPointer_void) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalListMediaResponseFfiResult_SignalType_ConstPointer_void) == 8); -typedef struct { - SignalType_FunctionPointer_void_SignalType_MutPointer_SignalFfiError_SignalType_ConstPointer_SignalListMediaResponseFfiResult_SignalType_ConstPointer_void complete; - const void* context; - uint64_t cancellation_id; -} SignalCPromiseListMediaResponseFfiResult; -static_assert_64bit(offsetof(SignalCPromiseListMediaResponseFfiResult, complete) == 0); -static_assert_64bit(offsetof(SignalCPromiseListMediaResponseFfiResult, context) == 8); -static_assert_64bit(offsetof(SignalCPromiseListMediaResponseFfiResult, cancellation_id) == 16); -static_assert_64bit(sizeof(SignalCPromiseListMediaResponseFfiResult) == 24); -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 uint16_t* SignalType_MutPointer_uint16_t; -static_assert_64bit(sizeof(SignalType_MutPointer_uint16_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_uint16_t) == 8); -typedef uint64_t* SignalType_MutPointer_uint64_t; -static_assert_64bit(sizeof(SignalType_MutPointer_uint64_t) == 8); -static_assert_64bit(alignof(SignalType_MutPointer_uint64_t) == 8); + SignalCiphertextMessageTypeWhisper = 2, + SignalCiphertextMessageTypePreKey = 3, + SignalCiphertextMessageTypeSenderKey = 7, + SignalCiphertextMessageTypePlaintext = 8, +} SignalCiphertextMessageType; + typedef enum { - SignalLogLevelError = 1, - SignalLogLevelWarn = 2, - SignalLogLevelInfo = 3, - SignalLogLevelDebug = 4, - SignalLogLevelTrace = 5, -} SignalLogLevel; -static_assert_64bit(sizeof(SignalLogLevel) == 4); -static_assert_64bit(alignof(SignalLogLevel) == 4); -typedef int32_t (*SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalLogLevel_SignalCStringPtr_uint32_t_SignalCStringPtr)(SignalType_MutPointer_void, SignalLogLevel, SignalCStringPtr, uint32_t, SignalCStringPtr); -static_assert_64bit(sizeof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalLogLevel_SignalCStringPtr_uint32_t_SignalCStringPtr) == 8); -static_assert_64bit(alignof(SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalLogLevel_SignalCStringPtr_uint32_t_SignalCStringPtr) == 8); -typedef struct { - const size_t* base; - size_t length; -} SignalBorrowedSliceOfusize; -static_assert_64bit(offsetof(SignalBorrowedSliceOfusize, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfusize, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfusize) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfusize) == 8); -typedef struct { - SignalBorrowedBuffer bytes; - SignalBorrowedSliceOfusize lengths; -} SignalBorrowedBytestringArray; -static_assert_64bit(offsetof(SignalBorrowedBytestringArray, bytes) == 0); -static_assert_64bit(offsetof(SignalBorrowedBytestringArray, lengths) == 16); -static_assert_64bit(sizeof(SignalBorrowedBytestringArray) == 32); -static_assert_64bit(alignof(SignalBorrowedBytestringArray) == 8); -typedef struct { - const SignalType_ConstPointer_SignalType_FixedArray32_uint8_t* base; - size_t length; -} SignalBorrowedSliceOfc_uchar32; -static_assert_64bit(offsetof(SignalBorrowedSliceOfc_uchar32, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfc_uchar32, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfc_uchar32) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfc_uchar32) == 8); -typedef struct { - const SignalBorrowedBuffer* base; - size_t length; -} SignalBorrowedSliceOfBuffers; -static_assert_64bit(offsetof(SignalBorrowedSliceOfBuffers, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfBuffers, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfBuffers) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfBuffers) == 8); -typedef struct { - const SignalConstPointerProtocolAddress* base; - size_t length; -} SignalBorrowedSliceOfConstPointerProtocolAddress; -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerProtocolAddress, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerProtocolAddress, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerProtocolAddress) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerProtocolAddress) == 8); -typedef struct { - const SignalConstPointerPublicKey* base; - size_t length; -} SignalBorrowedSliceOfConstPointerPublicKey; -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerPublicKey, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerPublicKey, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerPublicKey) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerPublicKey) == 8); -typedef struct { - const SignalConstPointerCiphertextMessage* base; - size_t length; -} SignalBorrowedSliceOfConstPointerCiphertextMessage; -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerCiphertextMessage, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerCiphertextMessage, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerCiphertextMessage) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerCiphertextMessage) == 8); -typedef struct { - const SignalConstPointerSessionRecord* base; - size_t length; -} SignalBorrowedSliceOfConstPointerSessionRecord; -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerSessionRecord, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfConstPointerSessionRecord, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfConstPointerSessionRecord) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfConstPointerSessionRecord) == 8); -typedef struct { - const SignalBridgeCopyBackupMediaItemFfiArg* base; - size_t length; -} SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg; -static_assert_64bit(offsetof(SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg) == 8); -typedef struct { - const SignalBridgeDeleteBackupMediaItemFfiArg* base; - size_t length; -} SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg; -static_assert_64bit(offsetof(SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg) == 8); -typedef struct { - const uint32_t* base; - size_t length; -} SignalBorrowedSliceOfu32; -static_assert_64bit(offsetof(SignalBorrowedSliceOfu32, base) == 0); -static_assert_64bit(offsetof(SignalBorrowedSliceOfu32, length) == 8); -static_assert_64bit(sizeof(SignalBorrowedSliceOfu32) == 16); -static_assert_64bit(alignof(SignalBorrowedSliceOfu32) == 8); -typedef struct { - const SignalPinHash* raw; -} SignalConstPointerPinHash; -static_assert_64bit(offsetof(SignalConstPointerPinHash, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPinHash) == 8); -static_assert_64bit(alignof(SignalConstPointerPinHash) == 8); -typedef struct { - const SignalAes256GcmSiv* raw; -} SignalConstPointerAes256GcmSiv; -static_assert_64bit(offsetof(SignalConstPointerAes256GcmSiv, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerAes256GcmSiv) == 8); -static_assert_64bit(alignof(SignalConstPointerAes256GcmSiv) == 8); -typedef struct { - const SignalFfiConnectChatBridgeStruct* raw; -} SignalConstPointerFfiConnectChatBridgeStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiConnectChatBridgeStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiConnectChatBridgeStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiConnectChatBridgeStruct) == 8); -typedef struct { - const SignalHsmEnclaveClient* raw; -} SignalConstPointerHsmEnclaveClient; -static_assert_64bit(offsetof(SignalConstPointerHsmEnclaveClient, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerHsmEnclaveClient) == 8); -static_assert_64bit(alignof(SignalConstPointerHsmEnclaveClient) == 8); -typedef struct { - const SignalFfiSyncInputStreamStruct* raw; -} SignalConstPointerFfiSyncInputStreamStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiSyncInputStreamStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiSyncInputStreamStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiSyncInputStreamStruct) == 8); -typedef struct { - const SignalMessageBackupKey* raw; -} SignalConstPointerMessageBackupKey; -static_assert_64bit(offsetof(SignalConstPointerMessageBackupKey, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerMessageBackupKey) == 8); -static_assert_64bit(alignof(SignalConstPointerMessageBackupKey) == 8); -typedef struct { - const SignalMessageBackupValidationOutcome* raw; -} SignalConstPointerMessageBackupValidationOutcome; -static_assert_64bit(offsetof(SignalConstPointerMessageBackupValidationOutcome, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerMessageBackupValidationOutcome) == 8); -static_assert_64bit(alignof(SignalConstPointerMessageBackupValidationOutcome) == 8); -typedef struct { - const SignalConnectionManager* raw; -} SignalConstPointerConnectionManager; -static_assert_64bit(offsetof(SignalConstPointerConnectionManager, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerConnectionManager) == 8); -static_assert_64bit(alignof(SignalConstPointerConnectionManager) == 8); -typedef struct { - const SignalCdsiLookup* raw; -} SignalConstPointerCdsiLookup; -static_assert_64bit(offsetof(SignalConstPointerCdsiLookup, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerCdsiLookup) == 8); -static_assert_64bit(alignof(SignalConstPointerCdsiLookup) == 8); -typedef struct { - const SignalLookupRequest* raw; -} SignalConstPointerLookupRequest; -static_assert_64bit(offsetof(SignalConstPointerLookupRequest, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerLookupRequest) == 8); -static_assert_64bit(alignof(SignalConstPointerLookupRequest) == 8); -typedef struct { - const SignalAuthenticatedChatConnection* raw; -} SignalConstPointerAuthenticatedChatConnection; -static_assert_64bit(offsetof(SignalConstPointerAuthenticatedChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerAuthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalConstPointerAuthenticatedChatConnection) == 8); -typedef struct { - const SignalCopyBackupMediaStream* raw; -} SignalConstPointerCopyBackupMediaStream; -static_assert_64bit(offsetof(SignalConstPointerCopyBackupMediaStream, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerCopyBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalConstPointerCopyBackupMediaStream) == 8); -typedef struct { - const SignalDeleteBackupMediaStream* raw; -} SignalConstPointerDeleteBackupMediaStream; -static_assert_64bit(offsetof(SignalConstPointerDeleteBackupMediaStream, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerDeleteBackupMediaStream) == 8); -static_assert_64bit(alignof(SignalConstPointerDeleteBackupMediaStream) == 8); -typedef struct { - const SignalFfiChatListenerStruct* raw; -} SignalConstPointerFfiChatListenerStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiChatListenerStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiChatListenerStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiChatListenerStruct) == 8); -typedef struct { - const SignalFfiProvisioningListenerStruct* raw; -} SignalConstPointerFfiProvisioningListenerStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiProvisioningListenerStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiProvisioningListenerStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiProvisioningListenerStruct) == 8); -typedef struct { - const SignalHttpRequest* raw; -} SignalConstPointerHttpRequest; -static_assert_64bit(offsetof(SignalConstPointerHttpRequest, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerHttpRequest) == 8); -static_assert_64bit(alignof(SignalConstPointerHttpRequest) == 8); -typedef struct { - const SignalProvisioningChatConnection* raw; -} SignalConstPointerProvisioningChatConnection; -static_assert_64bit(offsetof(SignalConstPointerProvisioningChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerProvisioningChatConnection) == 8); -static_assert_64bit(alignof(SignalConstPointerProvisioningChatConnection) == 8); -typedef struct { - const SignalServerMessageAck* raw; -} SignalConstPointerServerMessageAck; -static_assert_64bit(offsetof(SignalConstPointerServerMessageAck, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerServerMessageAck) == 8); -static_assert_64bit(alignof(SignalConstPointerServerMessageAck) == 8); -typedef struct { - const SignalUnauthenticatedChatConnection* raw; -} SignalConstPointerUnauthenticatedChatConnection; -static_assert_64bit(offsetof(SignalConstPointerUnauthenticatedChatConnection, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerUnauthenticatedChatConnection) == 8); -static_assert_64bit(alignof(SignalConstPointerUnauthenticatedChatConnection) == 8); -typedef struct { - const SignalRegistrationAccountAttributes* raw; -} SignalConstPointerRegistrationAccountAttributes; -static_assert_64bit(offsetof(SignalConstPointerRegistrationAccountAttributes, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerRegistrationAccountAttributes) == 8); -static_assert_64bit(alignof(SignalConstPointerRegistrationAccountAttributes) == 8); -typedef struct { - const SignalRegisterAccountRequest* raw; -} SignalConstPointerRegisterAccountRequest; -static_assert_64bit(offsetof(SignalConstPointerRegisterAccountRequest, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerRegisterAccountRequest) == 8); -static_assert_64bit(alignof(SignalConstPointerRegisterAccountRequest) == 8); -typedef struct { - const SignalRegistrationService* raw; -} SignalConstPointerRegistrationService; -static_assert_64bit(offsetof(SignalConstPointerRegistrationService, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerRegistrationService) == 8); -static_assert_64bit(alignof(SignalConstPointerRegistrationService) == 8); -typedef struct { - const SignalTokioAsyncContext* raw; -} SignalConstPointerTokioAsyncContext; -static_assert_64bit(offsetof(SignalConstPointerTokioAsyncContext, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerTokioAsyncContext) == 8); -static_assert_64bit(alignof(SignalConstPointerTokioAsyncContext) == 8); -typedef struct { - const SignalFfiIdentityKeyStoreStruct* raw; -} SignalConstPointerFfiIdentityKeyStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiIdentityKeyStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiIdentityKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiIdentityKeyStoreStruct) == 8); -typedef struct { - const SignalFfiKyberPreKeyStoreStruct* raw; -} SignalConstPointerFfiKyberPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiKyberPreKeyStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiKyberPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiKyberPreKeyStoreStruct) == 8); -typedef struct { - const SignalFfiPreKeyStoreStruct* raw; -} SignalConstPointerFfiPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiPreKeyStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiPreKeyStoreStruct) == 8); -typedef struct { - const SignalFfiSenderKeyStoreStruct* raw; -} SignalConstPointerFfiSenderKeyStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiSenderKeyStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiSenderKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiSenderKeyStoreStruct) == 8); -typedef struct { - const SignalFfiSessionStoreStruct* raw; -} SignalConstPointerFfiSessionStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiSessionStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiSessionStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiSessionStoreStruct) == 8); -typedef struct { - const SignalFfiSignedPreKeyStoreStruct* raw; -} SignalConstPointerFfiSignedPreKeyStoreStruct; -static_assert_64bit(offsetof(SignalConstPointerFfiSignedPreKeyStoreStruct, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerFfiSignedPreKeyStoreStruct) == 8); -static_assert_64bit(alignof(SignalConstPointerFfiSignedPreKeyStoreStruct) == 8); -typedef struct { - const SignalSgxClientState* raw; -} SignalConstPointerSgxClientState; -static_assert_64bit(offsetof(SignalConstPointerSgxClientState, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSgxClientState) == 8); -static_assert_64bit(alignof(SignalConstPointerSgxClientState) == 8); -typedef struct { - const SignalBridgedStringMap* raw; -} SignalConstPointerBridgedStringMap; -static_assert_64bit(offsetof(SignalConstPointerBridgedStringMap, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerBridgedStringMap) == 8); -static_assert_64bit(alignof(SignalConstPointerBridgedStringMap) == 8); -typedef struct { - const SignalPrivateKey* raw; -} SignalConstPointerPrivateKey; -static_assert_64bit(offsetof(SignalConstPointerPrivateKey, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPrivateKey) == 8); -static_assert_64bit(alignof(SignalConstPointerPrivateKey) == 8); -typedef struct { - const SignalChatConnectionInfo* raw; -} SignalConstPointerChatConnectionInfo; -static_assert_64bit(offsetof(SignalConstPointerChatConnectionInfo, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerChatConnectionInfo) == 8); -static_assert_64bit(alignof(SignalConstPointerChatConnectionInfo) == 8); -typedef struct { - const SignalBackupRestoreResponse* raw; -} SignalConstPointerBackupRestoreResponse; -static_assert_64bit(offsetof(SignalConstPointerBackupRestoreResponse, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerBackupRestoreResponse) == 8); -static_assert_64bit(alignof(SignalConstPointerBackupRestoreResponse) == 8); -typedef struct { - const SignalBackupStoreResponse* raw; -} SignalConstPointerBackupStoreResponse; -static_assert_64bit(offsetof(SignalConstPointerBackupStoreResponse, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerBackupStoreResponse) == 8); -static_assert_64bit(alignof(SignalConstPointerBackupStoreResponse) == 8); -typedef struct { - const SignalRegisterAccountResponse* raw; -} SignalConstPointerRegisterAccountResponse; -static_assert_64bit(offsetof(SignalConstPointerRegisterAccountResponse, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerRegisterAccountResponse) == 8); -static_assert_64bit(alignof(SignalConstPointerRegisterAccountResponse) == 8); -typedef struct { - const SignalRegistrationSession* raw; -} SignalConstPointerRegistrationSession; -static_assert_64bit(offsetof(SignalConstPointerRegistrationSession, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerRegistrationSession) == 8); -static_assert_64bit(alignof(SignalConstPointerRegistrationSession) == 8); -typedef struct { - const SignalConnectionProxyConfig* raw; -} SignalConstPointerConnectionProxyConfig; -static_assert_64bit(offsetof(SignalConstPointerConnectionProxyConfig, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerConnectionProxyConfig) == 8); -static_assert_64bit(alignof(SignalConstPointerConnectionProxyConfig) == 8); -typedef struct { - const SignalFingerprint* raw; -} SignalConstPointerFingerprint; -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; -static_assert_64bit(offsetof(SignalConstPointerKyberSecretKey, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerKyberSecretKey) == 8); -static_assert_64bit(alignof(SignalConstPointerKyberSecretKey) == 8); -typedef struct { - const SignalKyberKeyPair* raw; -} SignalConstPointerKyberKeyPair; -static_assert_64bit(offsetof(SignalConstPointerKyberKeyPair, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerKyberKeyPair) == 8); -static_assert_64bit(alignof(SignalConstPointerKyberKeyPair) == 8); -typedef struct { - const SignalDecryptionErrorMessage* raw; -} SignalConstPointerDecryptionErrorMessage; -static_assert_64bit(offsetof(SignalConstPointerDecryptionErrorMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerDecryptionErrorMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerDecryptionErrorMessage) == 8); -typedef struct { - const SignalPlaintextContent* raw; -} SignalConstPointerPlaintextContent; -static_assert_64bit(offsetof(SignalConstPointerPlaintextContent, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPlaintextContent) == 8); -static_assert_64bit(alignof(SignalConstPointerPlaintextContent) == 8); -typedef struct { - const SignalPreKeySignalMessage* raw; -} SignalConstPointerPreKeySignalMessage; -static_assert_64bit(offsetof(SignalConstPointerPreKeySignalMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPreKeySignalMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerPreKeySignalMessage) == 8); -typedef struct { - const SignalSenderKeyDistributionMessage* raw; -} SignalConstPointerSenderKeyDistributionMessage; -static_assert_64bit(offsetof(SignalConstPointerSenderKeyDistributionMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSenderKeyDistributionMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerSenderKeyDistributionMessage) == 8); -typedef struct { - const SignalSenderKeyMessage* raw; -} SignalConstPointerSenderKeyMessage; -static_assert_64bit(offsetof(SignalConstPointerSenderKeyMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSenderKeyMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerSenderKeyMessage) == 8); -typedef struct { - const SignalSignalMessage* raw; -} SignalConstPointerSignalMessage; -static_assert_64bit(offsetof(SignalConstPointerSignalMessage, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSignalMessage) == 8); -static_assert_64bit(alignof(SignalConstPointerSignalMessage) == 8); -typedef struct { - const SignalSenderCertificate* raw; -} SignalConstPointerSenderCertificate; -static_assert_64bit(offsetof(SignalConstPointerSenderCertificate, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSenderCertificate) == 8); -static_assert_64bit(alignof(SignalConstPointerSenderCertificate) == 8); -typedef struct { - const SignalServerCertificate* raw; -} SignalConstPointerServerCertificate; -static_assert_64bit(offsetof(SignalConstPointerServerCertificate, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerServerCertificate) == 8); -static_assert_64bit(alignof(SignalConstPointerServerCertificate) == 8); -typedef struct { - const SignalUnidentifiedSenderMessageContent* raw; -} SignalConstPointerUnidentifiedSenderMessageContent; -static_assert_64bit(offsetof(SignalConstPointerUnidentifiedSenderMessageContent, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerUnidentifiedSenderMessageContent) == 8); -static_assert_64bit(alignof(SignalConstPointerUnidentifiedSenderMessageContent) == 8); -typedef struct { - const SignalSenderKeyRecord* raw; -} SignalConstPointerSenderKeyRecord; -static_assert_64bit(offsetof(SignalConstPointerSenderKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSenderKeyRecord) == 8); -static_assert_64bit(alignof(SignalConstPointerSenderKeyRecord) == 8); -typedef struct { - const SignalPreKeyBundle* raw; -} SignalConstPointerPreKeyBundle; -static_assert_64bit(offsetof(SignalConstPointerPreKeyBundle, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPreKeyBundle) == 8); -static_assert_64bit(alignof(SignalConstPointerPreKeyBundle) == 8); -typedef struct { - const SignalKyberPreKeyRecord* raw; -} SignalConstPointerKyberPreKeyRecord; -static_assert_64bit(offsetof(SignalConstPointerKyberPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerKyberPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalConstPointerKyberPreKeyRecord) == 8); -typedef struct { - const SignalPreKeyRecord* raw; -} SignalConstPointerPreKeyRecord; -static_assert_64bit(offsetof(SignalConstPointerPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalConstPointerPreKeyRecord) == 8); -typedef struct { - const SignalSignedPreKeyRecord* raw; -} SignalConstPointerSignedPreKeyRecord; -static_assert_64bit(offsetof(SignalConstPointerSignedPreKeyRecord, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerSignedPreKeyRecord) == 8); -static_assert_64bit(alignof(SignalConstPointerSignedPreKeyRecord) == 8); -typedef struct { - const SignalServerPublicParams* raw; -} SignalConstPointerServerPublicParams; -static_assert_64bit(offsetof(SignalConstPointerServerPublicParams, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerServerPublicParams) == 8); -static_assert_64bit(alignof(SignalConstPointerServerPublicParams) == 8); -typedef struct { - const SignalServerSecretParams* raw; -} SignalConstPointerServerSecretParams; -static_assert_64bit(offsetof(SignalConstPointerServerSecretParams, raw) == 0); -static_assert_64bit(sizeof(SignalConstPointerServerSecretParams) == 8); -static_assert_64bit(alignof(SignalConstPointerServerSecretParams) == 8); + SignalContentHintDefault = 0, + SignalContentHintResendable = 1, + SignalContentHintImplicit = 2, +} SignalContentHint; + +typedef enum { + SignalDirectionSending = 0, + SignalDirectionReceiving = 1, +} SignalDirection; + enum SignalFfiPublicKeyType { SignalFfiPublicKeyTypeECC, SignalFfiPublicKeyTypeKyber, }; typedef uint8_t SignalFfiPublicKeyType; -static_assert_64bit(sizeof(SignalFfiPublicKeyType) == 1); -static_assert_64bit(alignof(SignalFfiPublicKeyType) == 1); -typedef struct { - const int8_t* number; - const int8_t* push_token; - const int8_t* mcc; - const int8_t* mnc; -} SignalFfiRegistrationCreateSessionRequest; -static_assert_64bit(offsetof(SignalFfiRegistrationCreateSessionRequest, number) == 0); -static_assert_64bit(offsetof(SignalFfiRegistrationCreateSessionRequest, push_token) == 8); -static_assert_64bit(offsetof(SignalFfiRegistrationCreateSessionRequest, mcc) == 16); -static_assert_64bit(offsetof(SignalFfiRegistrationCreateSessionRequest, mnc) == 24); -static_assert_64bit(sizeof(SignalFfiRegistrationCreateSessionRequest) == 32); -static_assert_64bit(alignof(SignalFfiRegistrationCreateSessionRequest) == 8); -typedef struct { - uint32_t key_id; - SignalFfiPublicKeyType public_key_type; - const void* public_key; - SignalBorrowedBuffer signature; -} SignalFfiSignedPublicPreKey; -static_assert_64bit(offsetof(SignalFfiSignedPublicPreKey, key_id) == 0); -static_assert_64bit(offsetof(SignalFfiSignedPublicPreKey, public_key_type) == 4); -static_assert_64bit(offsetof(SignalFfiSignedPublicPreKey, public_key) == 8); -static_assert_64bit(offsetof(SignalFfiSignedPublicPreKey, signature) == 16); -static_assert_64bit(sizeof(SignalFfiSignedPublicPreKey) == 32); -static_assert_64bit(alignof(SignalFfiSignedPublicPreKey) == 8); -typedef struct { - bool present; - SignalBorrowedBuffer value; -} SignalOptionalBorrowedSliceOfc_uchar; -static_assert_64bit(offsetof(SignalOptionalBorrowedSliceOfc_uchar, present) == 0); -static_assert_64bit(offsetof(SignalOptionalBorrowedSliceOfc_uchar, value) == 8); -static_assert_64bit(sizeof(SignalOptionalBorrowedSliceOfc_uchar) == 24); -static_assert_64bit(alignof(SignalOptionalBorrowedSliceOfc_uchar) == 8); -typedef struct { - void* base; - size_t length; - size_t size_bytes; -} SignalOwnedBufferOfMaxAlignedc_void; -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedc_void, base) == 0); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedc_void, length) == 8); -static_assert_64bit(offsetof(SignalOwnedBufferOfMaxAlignedc_void, size_bytes) == 16); -static_assert_64bit(sizeof(SignalOwnedBufferOfMaxAlignedc_void) == 24); -static_assert_64bit(alignof(SignalOwnedBufferOfMaxAlignedc_void) == 8); + +/** + * The result of saving a new identity key for a protocol address. + */ +typedef enum { + /** + * The protocol address didn't have an identity key or had the same key. + */ + SignalIdentityChangeNewOrUnchanged, + /** + * The new identity key replaced a different key for the protocol address. + */ + SignalIdentityChangeReplacedExisting, +} SignalIdentityChange; + +typedef enum { + SignalLogLevelError = 1, + SignalLogLevelWarn, + SignalLogLevelInfo, + SignalLogLevelDebug, + SignalLogLevelTrace, +} SignalLogLevel; + typedef enum { SignalErrorCodeUnknownError = 1, SignalErrorCodeInvalidState = 2, @@ -3020,3180 +261,2535 @@ typedef enum { SignalErrorCodeRequestUnauthorized = 220, SignalErrorCodeMismatchedDevices = 221, SignalErrorCodeServiceIdNotFound = 222, - SignalErrorCodeUploadTooLarge = 223, - SignalErrorCodeDeviceIdNotFound = 224, - SignalErrorCodeUsernameNotAvailable = 225, - SignalErrorCodeUsernameNotSet = 226, } SignalErrorCode; -static_assert_64bit(sizeof(SignalErrorCode) == 4); -static_assert_64bit(alignof(SignalErrorCode) == 4); -typedef enum { - SignalChallengeOptionPushChallenge, - SignalChallengeOptionCaptcha, -} SignalChallengeOption; -static_assert_64bit(sizeof(SignalChallengeOption) == 4); -static_assert_64bit(alignof(SignalChallengeOption) == 4); -typedef enum { - SignalIdentityChangeNewOrUnchanged, - SignalIdentityChangeReplacedExisting, -} SignalIdentityChange; -static_assert_64bit(sizeof(SignalIdentityChange) == 4); -static_assert_64bit(alignof(SignalIdentityChange) == 4); + enum SignalSvr2CredentialsResult { SignalSvr2CredentialsResultMatch, SignalSvr2CredentialsResultNoMatch, SignalSvr2CredentialsResultInvalid, }; typedef uint8_t SignalSvr2CredentialsResult; -static_assert_64bit(sizeof(SignalSvr2CredentialsResult) == 1); -static_assert_64bit(alignof(SignalSvr2CredentialsResult) == 1); -typedef enum { - SignalCiphertextMessageTypeWhisper = 2, - SignalCiphertextMessageTypePreKey = 3, - SignalCiphertextMessageTypeSenderKey = 7, - SignalCiphertextMessageTypePlaintext = 8, -} SignalCiphertextMessageType; -static_assert_64bit(sizeof(SignalCiphertextMessageType) == 4); -static_assert_64bit(alignof(SignalCiphertextMessageType) == 4); -typedef enum { - SignalContentHintDefault, - SignalContentHintResendable, - SignalContentHintImplicit, -} SignalContentHint; -static_assert_64bit(sizeof(SignalContentHint) == 4); -static_assert_64bit(alignof(SignalContentHint) == 4); -typedef enum { - SignalDirectionSending, - SignalDirectionReceiving, -} SignalDirection; -static_assert_64bit(sizeof(SignalDirection) == 4); -static_assert_64bit(alignof(SignalDirection) == 4); + +typedef struct SignalAccountAttributes SignalAccountAttributes; + +/** + * A wrapper around [`ctr::Ctr32BE`] that uses a smaller nonce and supports an initial counter. + */ +typedef struct SignalAes256Ctr32 SignalAes256Ctr32; + +typedef struct SignalAes256GcmDecryption SignalAes256GcmDecryption; + +typedef struct SignalAes256GcmEncryption SignalAes256GcmEncryption; + +typedef struct SignalAes256GcmSiv SignalAes256GcmSiv; + +typedef struct SignalAuthenticatedChatConnection SignalAuthenticatedChatConnection; + +typedef struct SignalBackupRestoreResponse SignalBackupRestoreResponse; + +typedef struct SignalBackupStoreResponse SignalBackupStoreResponse; + +typedef struct SignalBridgedStringMap SignalBridgedStringMap; + +typedef struct SignalCdsiLookup SignalCdsiLookup; + +typedef struct SignalCiphertextMessage SignalCiphertextMessage; + +/** + * Information about an established connection. + */ +typedef struct SignalConnectionInfo SignalConnectionInfo; + +typedef struct SignalConnectionManager SignalConnectionManager; + +typedef struct SignalConnectionProxyConfig SignalConnectionProxyConfig; + +typedef struct SignalDecryptionErrorMessage SignalDecryptionErrorMessage; + +typedef struct SignalFingerprint SignalFingerprint; + +typedef struct SignalHsmEnclaveClient SignalHsmEnclaveClient; + +typedef struct SignalHttpRequest SignalHttpRequest; + +typedef struct SignalIncrementalMac SignalIncrementalMac; + +typedef struct SignalKeyPair SignalKeyPair; + +typedef struct SignalKeySecret SignalKeySecret; + +typedef struct SignalKyberPreKeyRecord SignalKyberPreKeyRecord; + +typedef struct SignalLookupRequest SignalLookupRequest; + +typedef struct SignalMessageBackupKey SignalMessageBackupKey; + +typedef struct SignalMessageBackupValidationOutcome SignalMessageBackupValidationOutcome; + +typedef struct SignalOnlineBackupValidator SignalOnlineBackupValidator; + +typedef struct SignalPinHash SignalPinHash; + +typedef struct SignalPlaintextContent SignalPlaintextContent; + +typedef struct SignalPreKeyBundle SignalPreKeyBundle; + +typedef struct SignalPreKeyRecord SignalPreKeyRecord; + +typedef struct SignalPreKeySignalMessage SignalPreKeySignalMessage; + +typedef struct SignalPrivateKey SignalPrivateKey; + +/** + * Represents a unique Signal client instance as `(, )` pair. + */ +typedef struct SignalProtocolAddress SignalProtocolAddress; + +typedef struct SignalProvisioningChatConnection SignalProvisioningChatConnection; + +typedef struct SignalPublicKey SignalPublicKey; + +typedef struct SignalRegisterAccountRequest SignalRegisterAccountRequest; + +typedef struct SignalRegisterAccountResponse SignalRegisterAccountResponse; + +typedef struct SignalRegistrationService SignalRegistrationService; + +typedef struct SignalRegistrationSession SignalRegistrationSession; + +typedef struct SignalSanitizedMetadata SignalSanitizedMetadata; + +typedef struct SignalSenderCertificate SignalSenderCertificate; + +typedef struct SignalSenderKeyDistributionMessage SignalSenderKeyDistributionMessage; + +typedef struct SignalSenderKeyMessage SignalSenderKeyMessage; + +typedef struct SignalSenderKeyRecord SignalSenderKeyRecord; + +typedef struct SignalServerCertificate SignalServerCertificate; + +/** + * Wraps a named type and a single-use guard around [`chat::server_requests::ResponseEnvelopeSender`]. + */ +typedef struct SignalServerMessageAck SignalServerMessageAck; + +typedef struct SignalServerPublicParams SignalServerPublicParams; + +typedef struct SignalServerSecretParams SignalServerSecretParams; + +typedef struct SignalSessionRecord SignalSessionRecord; + +typedef struct SignalSgxClientState SignalSgxClientState; + +/** + * The top-level error type (opaquely) returned to C clients when something goes wrong. + * + * Ideally this would use [ThinBox][], and then we wouldn't need an extra level of indirection when + * returning it to C, but unfortunately that isn't stable yet. + * + * [ThinBox]: https://doc.rust-lang.org/std/boxed/struct.ThinBox.html + */ +typedef struct SignalFfiError SignalFfiError; + +typedef struct SignalMessage SignalMessage; + +typedef struct SignalSignedPreKeyRecord SignalSignedPreKeyRecord; + +typedef struct SignalTokioAsyncContext SignalTokioAsyncContext; + +typedef struct SignalUnauthenticatedChatConnection SignalUnauthenticatedChatConnection; + +typedef struct SignalUnidentifiedSenderMessageContent SignalUnidentifiedSenderMessageContent; + +typedef struct SignalValidatingMac SignalValidatingMac; + typedef struct { - void* ctx; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalLogLevel_SignalCStringPtr_uint32_t_SignalCStringPtr log; - SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void flush; - SignalType_FunctionPointer_void_SignalType_MutPointer_void destroy; -} SignalFfiLoggerStruct; -static_assert_64bit(offsetof(SignalFfiLoggerStruct, ctx) == 0); -static_assert_64bit(offsetof(SignalFfiLoggerStruct, log) == 8); -static_assert_64bit(offsetof(SignalFfiLoggerStruct, flush) == 16); -static_assert_64bit(offsetof(SignalFfiLoggerStruct, destroy) == 24); -static_assert_64bit(sizeof(SignalFfiLoggerStruct) == 32); -static_assert_64bit(alignof(SignalFfiLoggerStruct) == 8); -SignalFfiError* signal_account_entropy_pool_derive_backup_key( - SignalType_FixedArray32_uint8_t* out, - const int8_t* account_entropy -); -SignalFfiError* signal_account_entropy_pool_derive_svr_key( - SignalType_FixedArray32_uint8_t* out, - const int8_t* account_entropy -); -SignalFfiError* signal_account_entropy_pool_generate( - SignalCStringPtr* out -); -SignalFfiError* signal_account_entropy_pool_is_valid( - bool* out, - const int8_t* account_entropy -); -SignalFfiError* signal_address_clone( - SignalMutPointerProtocolAddress* new_obj, - SignalConstPointerProtocolAddress obj -); -SignalFfiError* signal_address_destroy( - SignalMutPointerProtocolAddress p -); -SignalFfiError* signal_address_get_device_id( - uint32_t* out, - SignalConstPointerProtocolAddress obj -); -SignalFfiError* signal_address_get_name( - SignalCStringPtr* out, - SignalConstPointerProtocolAddress obj -); -SignalFfiError* signal_address_new( - SignalMutPointerProtocolAddress* out, - const int8_t* name, - uint32_t device_id -); -SignalFfiError* signal_aes256_ctr32_destroy( - SignalMutPointerAes256Ctr32 p -); -SignalFfiError* signal_aes256_ctr32_new( - SignalMutPointerAes256Ctr32* out, - SignalBorrowedBuffer key, - SignalBorrowedBuffer nonce, - uint32_t initial_ctr -); -SignalFfiError* signal_aes256_ctr32_process( - SignalMutPointerAes256Ctr32 ctr, - SignalBorrowedMutableBuffer data, - uint32_t offset, - uint32_t length -); -SignalFfiError* signal_aes256_gcm_decryption_destroy( - SignalMutPointerAes256GcmDecryption p -); -SignalFfiError* signal_aes256_gcm_decryption_new( - SignalMutPointerAes256GcmDecryption* out, - SignalBorrowedBuffer key, - SignalBorrowedBuffer nonce, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_aes256_gcm_decryption_update( - SignalMutPointerAes256GcmDecryption gcm, - SignalBorrowedMutableBuffer data, - uint32_t offset, - uint32_t length -); -SignalFfiError* signal_aes256_gcm_decryption_verify_tag( - bool* out, - SignalMutPointerAes256GcmDecryption gcm, - SignalBorrowedBuffer tag -); -SignalFfiError* signal_aes256_gcm_encryption_compute_tag( - SignalOwnedBuffer* out, - SignalMutPointerAes256GcmEncryption gcm -); -SignalFfiError* signal_aes256_gcm_encryption_destroy( - SignalMutPointerAes256GcmEncryption p -); -SignalFfiError* signal_aes256_gcm_encryption_new( - SignalMutPointerAes256GcmEncryption* out, - SignalBorrowedBuffer key, - SignalBorrowedBuffer nonce, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_aes256_gcm_encryption_update( - SignalMutPointerAes256GcmEncryption gcm, - SignalBorrowedMutableBuffer data, - uint32_t offset, - uint32_t length -); -SignalFfiError* signal_aes256_gcm_siv_decrypt( - SignalOwnedBuffer* out, - SignalConstPointerAes256GcmSiv aes_gcm_siv, - SignalBorrowedBuffer ctext, - SignalBorrowedBuffer nonce, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_aes256_gcm_siv_destroy( - SignalMutPointerAes256GcmSiv p -); -SignalFfiError* signal_aes256_gcm_siv_encrypt( - SignalOwnedBuffer* out, - SignalConstPointerAes256GcmSiv aes_gcm_siv_obj, - SignalBorrowedBuffer ptext, - SignalBorrowedBuffer nonce, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_aes256_gcm_siv_new( - SignalMutPointerAes256GcmSiv* out, - SignalBorrowedBuffer key -); -SignalFfiError* signal_auth_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_auth_credential_presentation_get_pni_ciphertext( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_auth_credential_presentation_get_redemption_time( - uint64_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_auth_credential_presentation_get_uuid_ciphertext( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_auth_credential_with_pni_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_auth_credential_with_pni_response_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_authenticated_chat_connection_clear_push_token( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_clear_registration_lock( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_connect( - SignalCPromiseMutPointerAuthenticatedChatConnection* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager, - const int8_t* username, - const int8_t* password, - bool receive_stories, - SignalBorrowedBytestringArray languages -); -SignalFfiError* signal_authenticated_chat_connection_delete_username_hash( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_delete_username_link( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_destroy( - SignalMutPointerAuthenticatedChatConnection p -); -SignalFfiError* signal_authenticated_chat_connection_disconnect( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_get_devices( - SignalCPromiseOwnedBufferOfMaxAlignedLinkedDeviceInternalFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_get_upload_form( - SignalCPromiseFfiUploadForm* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint64_t upload_length -); -SignalFfiError* signal_authenticated_chat_connection_info( - SignalMutPointerChatConnectionInfo* out, - SignalConstPointerAuthenticatedChatConnection chat -); -SignalFfiError* signal_authenticated_chat_connection_init_listener( - SignalConstPointerAuthenticatedChatConnection chat, - SignalConstPointerFfiChatListenerStruct listener -); -SignalFfiError* signal_authenticated_chat_connection_preconnect( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager -); -SignalFfiError* signal_authenticated_chat_connection_remove_device( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t device_id -); -SignalFfiError* signal_authenticated_chat_connection_reserve_username_hash( - SignalCPromisec_uchar32* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalBorrowedSliceOfc_uchar32 username_hashes -); -SignalFfiError* signal_authenticated_chat_connection_send( - SignalCPromiseFfiChatResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalConstPointerHttpRequest http_request, - uint32_t timeout_millis -); -SignalFfiError* signal_authenticated_chat_connection_send_message( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const SignalType_FixedArray17_uint8_t* destination, - uint64_t timestamp, - SignalBorrowedSliceOfu32 device_ids, - SignalBorrowedSliceOfu32 registration_ids, - SignalBorrowedSliceOfConstPointerCiphertextMessage contents, - bool online_only, - bool is_urgent -); -SignalFfiError* signal_authenticated_chat_connection_send_raw_grpc( - SignalCPromiseOwnedBuffer* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const int8_t* service, - const int8_t* method, - SignalBorrowedBuffer payload -); -SignalFfiError* signal_authenticated_chat_connection_send_sync_message( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint64_t timestamp, - SignalBorrowedSliceOfu32 device_ids, - SignalBorrowedSliceOfu32 registration_ids, - SignalBorrowedSliceOfConstPointerCiphertextMessage contents, - bool is_urgent -); -SignalFfiError* signal_authenticated_chat_connection_set_device_name( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - uint8_t device_id, - SignalBorrowedBuffer encrypted_name -); -SignalFfiError* signal_authenticated_chat_connection_set_discoverable_by_phone_number( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - bool discoverable -); -SignalFfiError* signal_authenticated_chat_connection_set_push_token_apns( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const int8_t* apns_token -); -SignalFfiError* signal_authenticated_chat_connection_set_registration_lock( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_authenticated_chat_connection_set_registration_recovery_password( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_authenticated_chat_connection_set_username_link( - SignalCPromiseUuid* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerAuthenticatedChatConnection chat, - SignalBorrowedBuffer username_ciphertext, - bool keep_link_handle -); -SignalFfiError* signal_avatar_upload_credential_check_valid_contents( - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_avatar_upload_credential_get_cm( - SignalType_FixedArray32_uint8_t* out, - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_avatar_upload_credential_get_redemption_time( - uint64_t* out, - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_avatar_upload_credential_present_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer credential_bytes, - SignalBorrowedBuffer server_params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_avatar_upload_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_avatar_upload_credential_presentation_get_cm( - SignalType_FixedArray32_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_avatar_upload_credential_presentation_get_redemption_time( - uint64_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_avatar_upload_credential_presentation_verify( - SignalBorrowedBuffer presentation_bytes, - uint64_t current_time, - SignalBorrowedBuffer server_params_bytes -); -SignalFfiError* signal_avatar_upload_credential_request_check_valid_contents( - SignalBorrowedBuffer request_bytes -); -SignalFfiError* signal_avatar_upload_credential_request_context_check_valid_contents( - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_avatar_upload_credential_request_context_get_request( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_avatar_upload_credential_request_context_new( - SignalOwnedBuffer* out, - const SignalType_FixedArray17_uint8_t* aci, - SignalBorrowedBuffer zk_credential_key_pair_bytes, - uint64_t rotation_id, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_avatar_upload_credential_request_context_receive_response( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes, - SignalBorrowedBuffer response_bytes, - uint64_t current_time, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_avatar_upload_credential_request_issue_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer request_bytes, - const SignalType_FixedArray17_uint8_t* aci, - SignalBorrowedBuffer zk_credential_key_pub_bytes, - uint64_t rotation_id, - uint64_t redemption_time, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_avatar_upload_credential_response_check_valid_contents( - SignalBorrowedBuffer response_bytes -); -SignalFfiError* signal_backup_auth_credential_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_backup_auth_credential_get_backup_id( - SignalType_FixedArray16_uint8_t* out, - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_backup_auth_credential_get_backup_level( - uint8_t* out, - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_backup_auth_credential_get_type( - uint8_t* out, - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_backup_auth_credential_present_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer credential_bytes, - SignalBorrowedBuffer server_params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_backup_auth_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_backup_auth_credential_presentation_verify( - SignalBorrowedBuffer presentation_bytes, - uint64_t now, - SignalBorrowedBuffer server_params_bytes -); -SignalFfiError* signal_backup_auth_credential_request_check_valid_contents( - SignalBorrowedBuffer request_bytes -); -SignalFfiError* signal_backup_auth_credential_request_context_check_valid_contents( - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_backup_auth_credential_request_context_get_request( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_backup_auth_credential_request_context_new( - SignalOwnedBuffer* out, - const SignalType_FixedArray32_uint8_t* backup_key, - SignalUuid uuid -); -SignalFfiError* signal_backup_auth_credential_request_context_receive_response( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes, - SignalBorrowedBuffer response_bytes, - uint64_t expected_redemption_time, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_backup_auth_credential_request_issue_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer request_bytes, - uint64_t redemption_time, - uint8_t backup_level, - uint8_t credential_type, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_backup_auth_credential_response_check_valid_contents( - SignalBorrowedBuffer response_bytes -); -SignalFfiError* signal_backup_key_derive_backup_id( - SignalType_FixedArray16_uint8_t* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const SignalType_FixedArray17_uint8_t* aci -); -SignalFfiError* signal_backup_key_derive_ec_key( - SignalMutPointerPrivateKey* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const SignalType_FixedArray17_uint8_t* aci -); -SignalFfiError* signal_backup_key_derive_local_backup_metadata_key( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray32_uint8_t* backup_key -); -SignalFfiError* signal_backup_key_derive_media_encryption_key( - SignalType_FixedArray64_uint8_t* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const SignalType_FixedArray15_uint8_t* media_id -); -SignalFfiError* signal_backup_key_derive_media_id( - SignalType_FixedArray15_uint8_t* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const int8_t* media_name -); -SignalFfiError* signal_backup_key_derive_thumbnail_transit_encryption_key( - SignalType_FixedArray64_uint8_t* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const SignalType_FixedArray15_uint8_t* media_id -); -SignalFfiError* signal_backup_restore_response_destroy( - SignalMutPointerBackupRestoreResponse p -); -SignalFfiError* signal_backup_restore_response_get_forward_secrecy_token( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerBackupRestoreResponse response -); -SignalFfiError* signal_backup_restore_response_get_next_backup_secret_data( - SignalOwnedBuffer* out, - SignalConstPointerBackupRestoreResponse response -); -SignalFfiError* signal_backup_store_response_destroy( - SignalMutPointerBackupStoreResponse p -); -SignalFfiError* signal_backup_store_response_get_forward_secrecy_token( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerBackupStoreResponse response -); -SignalFfiError* signal_backup_store_response_get_next_backup_secret_data( - SignalOwnedBuffer* out, - SignalConstPointerBackupStoreResponse response -); -SignalFfiError* signal_backup_store_response_get_opaque_metadata( - SignalOwnedBuffer* out, - SignalConstPointerBackupStoreResponse response -); -SignalFfiError* signal_bridged_string_map_clone( - SignalMutPointerBridgedStringMap* new_obj, - SignalConstPointerBridgedStringMap obj -); -SignalFfiError* signal_bridged_string_map_destroy( - SignalMutPointerBridgedStringMap p -); -SignalFfiError* signal_bridged_string_map_insert( - SignalMutPointerBridgedStringMap map, - const int8_t* key, - const int8_t* value -); -SignalFfiError* signal_bridged_string_map_new( - SignalMutPointerBridgedStringMap* out, - uint32_t initial_capacity -); -SignalFfiError* signal_call_link_auth_credential_check_valid_contents( - SignalBorrowedBuffer credential_bytes -); -SignalFfiError* signal_call_link_auth_credential_present_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer credential_bytes, - const SignalType_FixedArray17_uint8_t* user_id, - uint64_t redemption_time, - SignalBorrowedBuffer server_params_bytes, - SignalBorrowedBuffer call_link_params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_call_link_auth_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_call_link_auth_credential_presentation_get_user_id( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_call_link_auth_credential_presentation_verify( - SignalBorrowedBuffer presentation_bytes, - uint64_t now, - SignalBorrowedBuffer server_params_bytes, - SignalBorrowedBuffer call_link_params_bytes -); -SignalFfiError* signal_call_link_auth_credential_response_check_valid_contents( - SignalBorrowedBuffer response_bytes -); -SignalFfiError* signal_call_link_auth_credential_response_issue_deterministic( - SignalOwnedBuffer* out, - const SignalType_FixedArray17_uint8_t* user_id, - uint64_t redemption_time, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_call_link_auth_credential_response_receive( - SignalOwnedBuffer* out, - SignalBorrowedBuffer response_bytes, - const SignalType_FixedArray17_uint8_t* user_id, - uint64_t redemption_time, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_call_link_public_params_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_call_link_secret_params_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_call_link_secret_params_decrypt_user_id( - SignalType_FixedArray17_uint8_t* out, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray65_uint8_t* user_id -); -SignalFfiError* signal_call_link_secret_params_derive_from_root_key( - SignalOwnedBuffer* out, - SignalBorrowedBuffer root_key -); -SignalFfiError* signal_call_link_secret_params_encrypt_user_id( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray17_uint8_t* user_id -); -SignalFfiError* signal_call_link_secret_params_get_public_params( - SignalOwnedBuffer* out, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_cds2_client_state_new( - SignalMutPointerSgxClientState* out, - SignalBorrowedBuffer mrenclave, - SignalBorrowedBuffer attestation_msg, - uint64_t current_timestamp -); -SignalFfiError* signal_cdsi_lookup_complete( - SignalCPromiseFfiCdsiLookupResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerCdsiLookup lookup -); -SignalFfiError* signal_cdsi_lookup_destroy( - SignalMutPointerCdsiLookup p -); -SignalFfiError* signal_cdsi_lookup_new( - SignalCPromiseMutPointerCdsiLookup* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager, - const int8_t* username, - const int8_t* password, - SignalConstPointerLookupRequest request -); -SignalFfiError* signal_cdsi_lookup_token( - SignalOwnedBuffer* out, - SignalConstPointerCdsiLookup lookup -); -SignalFfiError* signal_chat_connection_info_description( - SignalCStringPtr* out, - SignalConstPointerChatConnectionInfo connection_info -); -SignalFfiError* signal_chat_connection_info_destroy( - SignalMutPointerChatConnectionInfo p -); -SignalFfiError* signal_chat_connection_info_ip_version( - uint8_t* out, - SignalConstPointerChatConnectionInfo connection_info -); -SignalFfiError* signal_chat_connection_info_local_port( - uint16_t* out, - SignalConstPointerChatConnectionInfo connection_info -); -SignalFfiError* signal_ciphertext_message_destroy( - SignalMutPointerCiphertextMessage p -); -SignalFfiError* signal_ciphertext_message_from_plaintext_content( - SignalMutPointerCiphertextMessage* out, - SignalConstPointerPlaintextContent m -); -SignalFfiError* signal_ciphertext_message_serialize( - SignalOwnedBuffer* out, - SignalConstPointerCiphertextMessage obj -); -SignalFfiError* signal_ciphertext_message_type( - uint8_t* out, - SignalConstPointerCiphertextMessage msg -); -SignalFfiError* signal_connection_manager_clear_proxy( - SignalConstPointerConnectionManager connection_manager -); -SignalFfiError* signal_connection_manager_destroy( - SignalMutPointerConnectionManager p -); -SignalFfiError* signal_connection_manager_new( - SignalMutPointerConnectionManager* out, - uint8_t environment, - const int8_t* user_agent, - SignalMutPointerBridgedStringMap remote_config, - uint8_t build_variant -); -SignalFfiError* signal_connection_manager_on_network_change( - SignalConstPointerConnectionManager connection_manager -); -SignalFfiError* signal_connection_manager_set_censorship_circumvention_enabled( - SignalConstPointerConnectionManager connection_manager, - bool enabled -); -SignalFfiError* signal_connection_manager_set_invalid_proxy( - SignalConstPointerConnectionManager connection_manager -); -SignalFfiError* signal_connection_manager_set_proxy( - SignalConstPointerConnectionManager connection_manager, - SignalConstPointerConnectionProxyConfig proxy -); -SignalFfiError* signal_connection_manager_set_remote_config( - SignalConstPointerConnectionManager connection_manager, - SignalMutPointerBridgedStringMap remote_config, - uint8_t build_variant -); -SignalFfiError* signal_connection_proxy_config_clone( - SignalMutPointerConnectionProxyConfig* new_obj, - SignalConstPointerConnectionProxyConfig obj -); -SignalFfiError* signal_connection_proxy_config_destroy( - SignalMutPointerConnectionProxyConfig p -); -SignalFfiError* signal_connection_proxy_config_new( - SignalMutPointerConnectionProxyConfig* out, - const int8_t* scheme, - const int8_t* host, - int32_t port, - const int8_t* username, - const int8_t* password -); -SignalFfiError* signal_copy_backup_media_stream_cancel( - SignalConstPointerCopyBackupMediaStream stream -); -SignalFfiError* signal_copy_backup_media_stream_destroy( - SignalMutPointerCopyBackupMediaStream p -); -SignalFfiError* signal_copy_backup_media_stream_next( - SignalCPromiseCopyBackupMediaNextChunkFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerCopyBackupMediaStream stream -); -SignalFfiError* signal_create_call_link_credential_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_create_call_link_credential_present_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer credential_bytes, - SignalBorrowedBuffer room_id, - const SignalType_FixedArray17_uint8_t* user_id, - SignalBorrowedBuffer server_params_bytes, - SignalBorrowedBuffer call_link_params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_create_call_link_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_create_call_link_credential_presentation_verify( - SignalBorrowedBuffer presentation_bytes, - SignalBorrowedBuffer room_id, - uint64_t now, - SignalBorrowedBuffer server_params_bytes, - SignalBorrowedBuffer call_link_params_bytes -); -SignalFfiError* signal_create_call_link_credential_request_check_valid_contents( - SignalBorrowedBuffer request_bytes -); -SignalFfiError* signal_create_call_link_credential_request_context_check_valid_contents( - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_create_call_link_credential_request_context_get_request( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes -); -SignalFfiError* signal_create_call_link_credential_request_context_new_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer room_id, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_create_call_link_credential_request_context_receive_response( - SignalOwnedBuffer* out, - SignalBorrowedBuffer context_bytes, - SignalBorrowedBuffer response_bytes, - const SignalType_FixedArray17_uint8_t* user_id, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_create_call_link_credential_request_issue_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer request_bytes, - const SignalType_FixedArray17_uint8_t* user_id, - uint64_t timestamp, - SignalBorrowedBuffer params_bytes, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_create_call_link_credential_response_check_valid_contents( - SignalBorrowedBuffer response_bytes -); -SignalFfiError* signal_decrypt_message( - SignalOwnedBuffer* out, - SignalConstPointerSignalMessage message, - SignalConstPointerProtocolAddress protocol_address, - SignalConstPointerProtocolAddress local_address, - SignalConstPointerFfiSessionStoreStruct session_store, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store -); -SignalFfiError* signal_decrypt_pre_key_message( - SignalOwnedBuffer* out, - SignalConstPointerPreKeySignalMessage message, - SignalConstPointerProtocolAddress protocol_address, - SignalConstPointerProtocolAddress local_address, - SignalConstPointerFfiSessionStoreStruct session_store, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, - SignalConstPointerFfiPreKeyStoreStruct prekey_store, - SignalConstPointerFfiSignedPreKeyStoreStruct signed_prekey_store, - SignalConstPointerFfiKyberPreKeyStoreStruct kyber_prekey_store -); -SignalFfiError* signal_decryption_error_message_clone( - SignalMutPointerDecryptionErrorMessage* new_obj, - SignalConstPointerDecryptionErrorMessage obj -); -SignalFfiError* signal_decryption_error_message_deserialize( - SignalMutPointerDecryptionErrorMessage* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_decryption_error_message_destroy( - SignalMutPointerDecryptionErrorMessage p -); -SignalFfiError* signal_decryption_error_message_extract_from_serialized_content( - SignalMutPointerDecryptionErrorMessage* out, - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_decryption_error_message_for_original_message( - SignalMutPointerDecryptionErrorMessage* out, - SignalBorrowedBuffer original_bytes, - uint8_t original_type, - uint64_t original_timestamp, - uint32_t original_sender_device_id -); -SignalFfiError* signal_decryption_error_message_get_device_id( - uint32_t* out, - SignalConstPointerDecryptionErrorMessage obj -); -SignalFfiError* signal_decryption_error_message_get_ratchet_key( - SignalMutPointerPublicKey* out, - SignalConstPointerDecryptionErrorMessage m -); -SignalFfiError* signal_decryption_error_message_get_timestamp( - uint64_t* out, - SignalConstPointerDecryptionErrorMessage obj -); -SignalFfiError* signal_decryption_error_message_serialize( - SignalOwnedBuffer* out, - SignalConstPointerDecryptionErrorMessage obj -); -SignalFfiError* signal_delete_backup_media_stream_cancel( - SignalConstPointerDeleteBackupMediaStream stream -); -SignalFfiError* signal_delete_backup_media_stream_destroy( - SignalMutPointerDeleteBackupMediaStream p -); -SignalFfiError* signal_delete_backup_media_stream_next( - SignalCPromiseDeleteBackupMediaNextChunkFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerDeleteBackupMediaStream stream -); -SignalFfiError* signal_device_transfer_generate_certificate( - SignalOwnedBuffer* out, - SignalBorrowedBuffer private_key, - const int8_t* name, - uint32_t days_to_expire -); -SignalFfiError* signal_device_transfer_generate_private_key( - SignalOwnedBuffer* out -); -SignalFfiError* signal_device_transfer_generate_private_key_with_format( - SignalOwnedBuffer* out, - uint8_t key_format -); -SignalFfiError* signal_donation_permit_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_donation_permit_derived_key_pair_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_donation_permit_derived_key_pair_for_expiration( - SignalOwnedBuffer* out, - uint64_t timestamp, - SignalConstPointerServerSecretParams root -); -SignalFfiError* signal_donation_permit_expiration( - uint64_t* out, - SignalBorrowedBuffer donation_permit -); -SignalFfiError* signal_donation_permit_request_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_donation_permit_request_context_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_donation_permit_request_context_new_deterministic( - SignalOwnedBuffer* out, - int32_t count, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_donation_permit_request_context_receive( - SignalBytestringArray* out, - SignalBorrowedBuffer context, - SignalBorrowedBuffer response, - SignalConstPointerServerPublicParams public_params, - uint64_t now -); -SignalFfiError* signal_donation_permit_request_context_request( - SignalOwnedBuffer* out, - SignalBorrowedBuffer ctx -); -SignalFfiError* signal_donation_permit_request_len( - int32_t* out, - SignalBorrowedBuffer donation_permit_request -); -SignalFfiError* signal_donation_permit_response_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_donation_permit_response_default_expiration( - uint64_t* out, - uint64_t current_time -); -SignalFfiError* signal_donation_permit_response_get_expiration( - uint64_t* out, - SignalBorrowedBuffer response -); -SignalFfiError* signal_donation_permit_response_issue_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer request, - SignalBorrowedBuffer key_pair, - const SignalType_FixedArray32_uint8_t* seed -); -SignalFfiError* signal_donation_permit_spend_id( - SignalOwnedBuffer* out, - SignalBorrowedBuffer donation_permit -); -SignalFfiError* signal_donation_permit_verify( - SignalBorrowedBuffer permit, - uint64_t now, - SignalBorrowedBuffer key_pair -); -SignalFfiError* signal_encrypt_message( - SignalMutPointerCiphertextMessage* out, - SignalBorrowedBuffer ptext, - SignalConstPointerProtocolAddress protocol_address, - SignalConstPointerProtocolAddress local_address, - SignalConstPointerFfiSessionStoreStruct session_store, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, - uint64_t now -); -void signal_error_free( - SignalFfiError* err -); -SignalFfiError* signal_error_get_address( - SignalMutPointerProtocolAddress* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_invalid_protocol_address( - SignalPairOfCStringPtru32* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_message( - SignalCStringPtr* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_mismatched_device_errors( - SignalOwnedBufferOfFfiMismatchedDevicesError* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_our_fingerprint_version( - uint32_t* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_rate_limit_challenge( - SignalPairOfPairOfCStringPtrOwnedBufferi64* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_registration_error_not_deliverable( - SignalPairOfCStringPtrbool* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_registration_lock( - uint64_t* out_time_remaining_seconds, - SignalPairOfCStringPtrCStringPtr* out_svr2_credentials, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_retry_after_seconds( - uint32_t* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_their_fingerprint_version( - uint32_t* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_tries_remaining( - uint32_t* out, - const SignalFfiError* err -); -uint32_t signal_error_get_type( - const SignalFfiError* err -); -SignalFfiError* signal_error_get_unknown_fields( - SignalBytestringArray* out, - const SignalFfiError* err -); -SignalFfiError* signal_error_get_uuid( - SignalUuid* out, - const SignalFfiError* err -); -SignalFfiError* signal_expiring_profile_key_credential_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_expiring_profile_key_credential_get_expiration_time( - uint64_t* out, - const SignalType_FixedArray153_uint8_t* credential -); -SignalFfiError* signal_expiring_profile_key_credential_response_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_fingerprint_clone( - SignalMutPointerFingerprint* new_obj, - SignalConstPointerFingerprint obj -); -SignalFfiError* signal_fingerprint_compare( - bool* out, - SignalBorrowedBuffer fprint1, - SignalBorrowedBuffer fprint2 -); -SignalFfiError* signal_fingerprint_destroy( - SignalMutPointerFingerprint p -); -SignalFfiError* signal_fingerprint_display_string( - SignalCStringPtr* out, - SignalConstPointerFingerprint obj -); -SignalFfiError* signal_fingerprint_new( - SignalMutPointerFingerprint* out, - uint32_t iterations, - uint32_t version, - SignalBorrowedBuffer local_identifier, - SignalConstPointerPublicKey local_key, - SignalBorrowedBuffer remote_identifier, - SignalConstPointerPublicKey remote_key -); -SignalFfiError* signal_fingerprint_scannable_encoding( - SignalOwnedBuffer* out, - SignalConstPointerFingerprint obj -); -void signal_free_buffer( - const uint8_t* buf, - size_t buf_len -); -void signal_free_bytestring_array( - SignalBytestringArray array -); -void signal_free_list_of_mismatched_device_errors( - SignalOwnedBufferOfFfiMismatchedDevicesError buffer -); -void signal_free_list_of_register_response_badges( - SignalOwnedBufferOfFfiRegisterResponseBadge buffer -); -void signal_free_list_of_service_ids( - SignalOwnedBufferOfc_uchar17 buffer -); -void signal_free_list_of_strings( - SignalOwnedBufferOfCStringPtr buffer -); -void signal_free_lookup_response_entry_list( - SignalOwnedLookupResponseEntryList buffer -); -void signal_free_outer_buffer_list_of_prekey_bundles( - SignalOwnedBufferOfMutPointerPreKeyBundle buffer -); -void signal_free_owned_buffer_of_max_aligned( - SignalOwnedBufferOfMaxAlignedc_void buffer -); -void signal_free_string( - const int8_t* buf -); -SignalFfiError* signal_generic_server_public_params_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_generic_server_secret_params_check_valid_contents( - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_generic_server_secret_params_generate_deterministic( - SignalOwnedBuffer* out, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_generic_server_secret_params_get_public_params( - SignalOwnedBuffer* out, - SignalBorrowedBuffer params_bytes -); -SignalFfiError* signal_group_decrypt_message( - SignalOwnedBuffer* out, - SignalConstPointerProtocolAddress sender, - SignalBorrowedBuffer message, - SignalConstPointerFfiSenderKeyStoreStruct store -); -SignalFfiError* signal_group_encrypt_message( - SignalMutPointerCiphertextMessage* out, - SignalConstPointerProtocolAddress sender, - SignalUuid distribution_id, - SignalBorrowedBuffer message, - SignalConstPointerFfiSenderKeyStoreStruct store -); -SignalFfiError* signal_group_master_key_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_group_public_params_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_group_public_params_get_group_identifier( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray97_uint8_t* group_public_params -); -SignalFfiError* signal_group_secret_params_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_group_secret_params_decrypt_blob_with_padding( - SignalOwnedBuffer* out, - const SignalType_FixedArray289_uint8_t* params, - SignalBorrowedBuffer ciphertext -); -SignalFfiError* signal_group_secret_params_decrypt_profile_key( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params, - const SignalType_FixedArray65_uint8_t* profile_key, - const SignalType_FixedArray17_uint8_t* user_id -); -SignalFfiError* signal_group_secret_params_decrypt_service_id( - SignalType_FixedArray17_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params, - const SignalType_FixedArray65_uint8_t* ciphertext -); -SignalFfiError* signal_group_secret_params_derive_from_master_key( - SignalType_FixedArray289_uint8_t* out, - const SignalType_FixedArray32_uint8_t* master_key -); -SignalFfiError* signal_group_secret_params_encrypt_blob_with_padding_deterministic( - SignalOwnedBuffer* out, - const SignalType_FixedArray289_uint8_t* params, - const SignalType_FixedArray32_uint8_t* randomness, - SignalBorrowedBuffer plaintext, - uint32_t padding_len -); -SignalFfiError* signal_group_secret_params_encrypt_profile_key( - SignalType_FixedArray65_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params, - const SignalType_FixedArray32_uint8_t* profile_key, - const SignalType_FixedArray17_uint8_t* user_id -); -SignalFfiError* signal_group_secret_params_encrypt_service_id( - SignalType_FixedArray65_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params, - const SignalType_FixedArray17_uint8_t* service_id -); -SignalFfiError* signal_group_secret_params_generate_deterministic( - SignalType_FixedArray289_uint8_t* out, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_group_secret_params_get_master_key( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params -); -SignalFfiError* signal_group_secret_params_get_public_params( - SignalType_FixedArray97_uint8_t* out, - const SignalType_FixedArray289_uint8_t* params -); -SignalFfiError* signal_group_send_derived_key_pair_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_group_send_derived_key_pair_for_expiration( - SignalOwnedBuffer* out, - uint64_t expiration, - SignalConstPointerServerSecretParams server_params -); -SignalFfiError* signal_group_send_endorsement_call_link_params_to_token( - SignalOwnedBuffer* out, - SignalBorrowedBuffer endorsement, - SignalBorrowedBuffer call_link_secret_params_serialized -); -SignalFfiError* signal_group_send_endorsement_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_group_send_endorsement_combine( - SignalOwnedBuffer* out, - SignalBorrowedSliceOfBuffers endorsements -); -SignalFfiError* signal_group_send_endorsement_remove( - SignalOwnedBuffer* out, - SignalBorrowedBuffer endorsement, - SignalBorrowedBuffer to_remove -); -SignalFfiError* signal_group_send_endorsement_to_token( - SignalOwnedBuffer* out, - SignalBorrowedBuffer endorsement, - const SignalType_FixedArray289_uint8_t* group_params -); -SignalFfiError* signal_group_send_endorsements_response_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_group_send_endorsements_response_get_expiration( - uint64_t* out, - SignalBorrowedBuffer response_bytes -); -SignalFfiError* signal_group_send_endorsements_response_issue_deterministic( - SignalOwnedBuffer* out, - SignalBorrowedBuffer concatenated_group_member_ciphertexts, - SignalBorrowedBuffer key_pair, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_group_send_endorsements_response_receive_and_combine_with_ciphertexts( - SignalBytestringArray* out, - SignalBorrowedBuffer response_bytes, - SignalBorrowedBuffer concatenated_group_member_ciphertexts, - SignalBorrowedBuffer local_user_ciphertext, - uint64_t now, - SignalConstPointerServerPublicParams server_params -); -SignalFfiError* signal_group_send_endorsements_response_receive_and_combine_with_service_ids( - SignalBytestringArray* out, - SignalBorrowedBuffer response_bytes, - SignalBorrowedBuffer group_members, - const SignalType_FixedArray17_uint8_t* local_user, - uint64_t now, - const SignalType_FixedArray289_uint8_t* group_params, - SignalConstPointerServerPublicParams server_params -); -SignalFfiError* signal_group_send_full_token_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_group_send_full_token_get_expiration( - uint64_t* out, - SignalBorrowedBuffer token -); -SignalFfiError* signal_group_send_full_token_verify( - SignalBorrowedBuffer token, - SignalBorrowedBuffer user_ids, - uint64_t now, - SignalBorrowedBuffer key_pair -); -SignalFfiError* signal_group_send_token_check_valid_contents( - SignalBorrowedBuffer bytes -); -SignalFfiError* signal_group_send_token_to_full_token( - SignalOwnedBuffer* out, - SignalBorrowedBuffer token, - uint64_t expiration -); -SignalFfiError* signal_hex_encode( - SignalBorrowedMutableBuffer output, - SignalBorrowedBuffer input -); -SignalFfiError* signal_hkdf_derive( - SignalBorrowedMutableBuffer output, - SignalBorrowedBuffer ikm, - SignalBorrowedBuffer label, - SignalBorrowedBuffer salt -); -SignalFfiError* signal_hsm_enclave_client_complete_handshake( - SignalMutPointerHsmEnclaveClient cli, - SignalBorrowedBuffer handshake_received -); -SignalFfiError* signal_hsm_enclave_client_destroy( - SignalMutPointerHsmEnclaveClient p -); -SignalFfiError* signal_hsm_enclave_client_established_recv( - SignalOwnedBuffer* out, - SignalMutPointerHsmEnclaveClient cli, - SignalBorrowedBuffer received_ciphertext -); -SignalFfiError* signal_hsm_enclave_client_established_send( - SignalOwnedBuffer* out, - SignalMutPointerHsmEnclaveClient cli, - SignalBorrowedBuffer plaintext_to_send -); -SignalFfiError* signal_hsm_enclave_client_initial_request( - SignalOwnedBuffer* out, - SignalConstPointerHsmEnclaveClient obj -); -SignalFfiError* signal_hsm_enclave_client_new( - SignalMutPointerHsmEnclaveClient* out, - SignalBorrowedBuffer trusted_public_key, - SignalBorrowedBuffer trusted_code_hashes -); -SignalFfiError* signal_http_request_add_header( - SignalConstPointerHttpRequest request, - const int8_t* name, - const int8_t* value -); -SignalFfiError* signal_http_request_destroy( - SignalMutPointerHttpRequest p -); -SignalFfiError* signal_http_request_new_with_body( - SignalMutPointerHttpRequest* out, - const int8_t* method, - const int8_t* path, - SignalBorrowedBuffer body_as_slice -); -SignalFfiError* signal_http_request_new_without_body( - SignalMutPointerHttpRequest* out, - const int8_t* method, - const int8_t* path -); -SignalFfiError* signal_identitykey_verify_alternate_identity( - bool* out, - SignalConstPointerPublicKey public_key, - SignalConstPointerPublicKey other_identity, - SignalBorrowedBuffer signature -); -SignalFfiError* signal_identitykeypair_deserialize( - SignalPairOfMutPointerPublicKeyMutPointerPrivateKey* out, - SignalBorrowedBuffer input -); -SignalFfiError* signal_identitykeypair_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPublicKey public_key, - SignalConstPointerPrivateKey private_key -); -SignalFfiError* signal_identitykeypair_sign_alternate_identity( - SignalOwnedBuffer* out, - SignalConstPointerPublicKey public_key, - SignalConstPointerPrivateKey private_key, - SignalConstPointerPublicKey other_identity -); -SignalFfiError* signal_incremental_mac_calculate_chunk_size( - uint32_t* out, - uint32_t data_size -); -SignalFfiError* signal_incremental_mac_destroy( - SignalMutPointerIncrementalMac p -); -SignalFfiError* signal_incremental_mac_finalize( - SignalOwnedBuffer* out, - SignalMutPointerIncrementalMac mac -); -SignalFfiError* signal_incremental_mac_initialize( - SignalMutPointerIncrementalMac* out, - SignalBorrowedBuffer key, - uint32_t chunk_size -); -SignalFfiError* signal_incremental_mac_update( - SignalOwnedBuffer* out, - SignalMutPointerIncrementalMac mac, - SignalBorrowedBuffer bytes, - uint32_t offset, - uint32_t length -); -bool signal_init_logger( - SignalLogLevel max_level, - SignalFfiLoggerStruct logger -); -SignalFfiError* signal_key_transparency_aci_search_key( - SignalOwnedBuffer* out, - const SignalType_FixedArray17_uint8_t* aci -); -SignalFfiError* signal_key_transparency_check( - SignalCPromisePairOfOwnedBufferOwnedBuffer* promise, - SignalConstPointerTokioAsyncContext async_runtime, - uint8_t environment, - SignalConstPointerUnauthenticatedChatConnection chat_connection, - const SignalType_FixedArray17_uint8_t* aci, - SignalConstPointerPublicKey aci_identity_key, - const int8_t* e164, - SignalOptionalBorrowedSliceOfc_uchar unidentified_access_key, - SignalOptionalBorrowedSliceOfc_uchar username_hash, - SignalOptionalBorrowedSliceOfc_uchar account_data, - SignalOptionalBorrowedSliceOfc_uchar last_distinguished_tree_head, - bool is_self_check, - bool is_e164_discoverable -); -SignalFfiError* signal_key_transparency_e164_search_key( - SignalOwnedBuffer* out, - const int8_t* e164 -); -SignalFfiError* signal_key_transparency_reset_data_field( - SignalOwnedBuffer* out, - SignalBorrowedBuffer account_data, - uint8_t field -); -SignalFfiError* signal_key_transparency_username_hash_search_key( - SignalOwnedBuffer* out, - SignalBorrowedBuffer hash -); -SignalFfiError* signal_kyber_key_pair_clone( - SignalMutPointerKyberKeyPair* new_obj, - SignalConstPointerKyberKeyPair obj -); -SignalFfiError* signal_kyber_key_pair_destroy( - SignalMutPointerKyberKeyPair p -); -SignalFfiError* signal_kyber_key_pair_generate( - SignalMutPointerKyberKeyPair* out -); -SignalFfiError* signal_kyber_key_pair_get_public_key( - SignalMutPointerKyberPublicKey* out, - SignalConstPointerKyberKeyPair key_pair -); -SignalFfiError* signal_kyber_key_pair_get_secret_key( - SignalMutPointerKyberSecretKey* out, - SignalConstPointerKyberKeyPair key_pair -); -SignalFfiError* signal_kyber_pre_key_record_clone( - SignalMutPointerKyberPreKeyRecord* new_obj, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_deserialize( - SignalMutPointerKyberPreKeyRecord* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_kyber_pre_key_record_destroy( - SignalMutPointerKyberPreKeyRecord p -); -SignalFfiError* signal_kyber_pre_key_record_get_id( - uint32_t* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_get_key_pair( - SignalMutPointerKyberKeyPair* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_get_public_key( - SignalMutPointerKyberPublicKey* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_get_secret_key( - SignalMutPointerKyberSecretKey* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_get_signature( - SignalOwnedBuffer* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_get_timestamp( - uint64_t* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_pre_key_record_new( - SignalMutPointerKyberPreKeyRecord* out, - uint32_t id, - uint64_t timestamp, - SignalConstPointerKyberKeyPair key_pair, - SignalBorrowedBuffer signature -); -SignalFfiError* signal_kyber_pre_key_record_serialize( - SignalOwnedBuffer* out, - SignalConstPointerKyberPreKeyRecord obj -); -SignalFfiError* signal_kyber_public_key_clone( - SignalMutPointerKyberPublicKey* new_obj, - SignalConstPointerKyberPublicKey obj -); -SignalFfiError* signal_kyber_public_key_deserialize( - SignalMutPointerKyberPublicKey* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_kyber_public_key_destroy( - SignalMutPointerKyberPublicKey p -); -SignalFfiError* signal_kyber_public_key_equals( - bool* out, - SignalConstPointerKyberPublicKey lhs, - SignalConstPointerKyberPublicKey rhs -); -SignalFfiError* signal_kyber_public_key_serialize( - SignalOwnedBuffer* out, - SignalConstPointerKyberPublicKey obj -); -SignalFfiError* signal_kyber_secret_key_clone( - SignalMutPointerKyberSecretKey* new_obj, - SignalConstPointerKyberSecretKey obj -); -SignalFfiError* signal_kyber_secret_key_deserialize( - SignalMutPointerKyberSecretKey* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_kyber_secret_key_destroy( - SignalMutPointerKyberSecretKey p -); -SignalFfiError* signal_kyber_secret_key_serialize( - SignalOwnedBuffer* out, - SignalConstPointerKyberSecretKey obj -); -SignalFfiError* signal_lookup_request_add_aci_and_access_key( - SignalConstPointerLookupRequest request, - const SignalType_FixedArray17_uint8_t* aci, - SignalBorrowedBuffer access_key -); -SignalFfiError* signal_lookup_request_add_e164( - SignalConstPointerLookupRequest request, - const int8_t* e164 -); -SignalFfiError* signal_lookup_request_add_previous_e164( - SignalConstPointerLookupRequest request, - const int8_t* e164 -); -SignalFfiError* signal_lookup_request_destroy( - SignalMutPointerLookupRequest p -); -SignalFfiError* signal_lookup_request_new( - SignalMutPointerLookupRequest* out -); -SignalFfiError* signal_lookup_request_set_token( - SignalConstPointerLookupRequest request, - SignalBorrowedBuffer token -); -SignalFfiError* signal_message_backup_key_destroy( - SignalMutPointerMessageBackupKey p -); -SignalFfiError* signal_message_backup_key_from_account_entropy_pool( - SignalMutPointerMessageBackupKey* out, - const int8_t* account_entropy, - const SignalType_FixedArray17_uint8_t* aci, - const SignalType_FixedArray32_uint8_t* forward_secrecy_token -); -SignalFfiError* signal_message_backup_key_from_backup_key_and_backup_id( - SignalMutPointerMessageBackupKey* out, - const SignalType_FixedArray32_uint8_t* backup_key, - const SignalType_FixedArray16_uint8_t* backup_id, - const SignalType_FixedArray32_uint8_t* forward_secrecy_token -); -SignalFfiError* signal_message_backup_key_get_aes_key( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerMessageBackupKey key -); -SignalFfiError* signal_message_backup_key_get_hmac_key( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerMessageBackupKey key -); -SignalFfiError* signal_message_backup_validation_outcome_destroy( - SignalMutPointerMessageBackupValidationOutcome p -); -SignalFfiError* signal_message_backup_validation_outcome_get_error_message( - SignalCStringPtr* out, - SignalConstPointerMessageBackupValidationOutcome outcome -); -SignalFfiError* signal_message_backup_validation_outcome_get_unknown_fields( - SignalBytestringArray* out, - SignalConstPointerMessageBackupValidationOutcome outcome -); -SignalFfiError* signal_message_backup_validator_validate( - SignalMutPointerMessageBackupValidationOutcome* out, - SignalConstPointerMessageBackupKey key, - SignalConstPointerFfiSyncInputStreamStruct first_stream, - SignalConstPointerFfiSyncInputStreamStruct second_stream, - uint64_t len, - uint8_t purpose -); -SignalFfiError* signal_message_clone( - SignalMutPointerSignalMessage* new_obj, - SignalConstPointerSignalMessage obj -); -SignalFfiError* signal_message_deserialize( - SignalMutPointerSignalMessage* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_message_destroy( - SignalMutPointerSignalMessage p -); -SignalFfiError* signal_message_get_body( - SignalOwnedBuffer* out, - SignalConstPointerSignalMessage obj -); -SignalFfiError* signal_message_get_counter( - uint32_t* out, - SignalConstPointerSignalMessage obj -); -SignalFfiError* signal_message_get_message_version( - uint32_t* out, - SignalConstPointerSignalMessage obj -); -SignalFfiError* signal_message_get_pq_ratchet( - SignalOwnedBuffer* out, - SignalConstPointerSignalMessage msg -); -SignalFfiError* signal_message_get_sender_ratchet_key( - SignalMutPointerPublicKey* out, - SignalConstPointerSignalMessage m -); -SignalFfiError* signal_message_get_serialized( - SignalOwnedBuffer* out, - SignalConstPointerSignalMessage obj -); -SignalFfiError* signal_message_new( - SignalMutPointerSignalMessage* out, - uint8_t message_version, - SignalBorrowedBuffer mac_key, - SignalConstPointerPublicKey sender_ratchet_key, - uint32_t counter, - uint32_t previous_counter, - SignalBorrowedBuffer ciphertext, - SignalConstPointerPublicKey sender_identity_key, - SignalConstPointerPublicKey receiver_identity_key, - SignalBorrowedBuffer pq_ratchet -); -SignalFfiError* signal_online_backup_validator_add_frame( - SignalMutPointerOnlineBackupValidator backup, - SignalBorrowedBuffer frame -); -SignalFfiError* signal_online_backup_validator_destroy( - SignalMutPointerOnlineBackupValidator p -); -SignalFfiError* signal_online_backup_validator_finalize( - SignalMutPointerOnlineBackupValidator backup -); -SignalFfiError* signal_online_backup_validator_new( - SignalMutPointerOnlineBackupValidator* out, - SignalBorrowedBuffer backup_info_frame, - uint8_t purpose -); -SignalFfiError* signal_pin_hash_access_key( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerPinHash ph -); -SignalFfiError* signal_pin_hash_clone( - SignalMutPointerPinHash* new_obj, - SignalConstPointerPinHash obj -); -SignalFfiError* signal_pin_hash_destroy( - SignalMutPointerPinHash p -); -SignalFfiError* signal_pin_hash_encryption_key( - SignalType_FixedArray32_uint8_t* out, - SignalConstPointerPinHash ph -); -SignalFfiError* signal_pin_hash_from_salt( - SignalMutPointerPinHash* out, - SignalBorrowedBuffer pin, - const SignalType_FixedArray32_uint8_t* salt -); -SignalFfiError* signal_pin_hash_from_username_mrenclave( - SignalMutPointerPinHash* out, - SignalBorrowedBuffer pin, - const int8_t* username, - SignalBorrowedBuffer mrenclave -); -SignalFfiError* signal_pin_local_hash( - SignalCStringPtr* out, - SignalBorrowedBuffer pin -); -SignalFfiError* signal_pin_verify_local_hash( - bool* out, - const int8_t* encoded_hash, - SignalBorrowedBuffer pin -); -SignalFfiError* signal_plaintext_content_clone( - SignalMutPointerPlaintextContent* new_obj, - SignalConstPointerPlaintextContent obj -); -SignalFfiError* signal_plaintext_content_deserialize( - SignalMutPointerPlaintextContent* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_plaintext_content_destroy( - SignalMutPointerPlaintextContent p -); -SignalFfiError* signal_plaintext_content_from_decryption_error_message( - SignalMutPointerPlaintextContent* out, - SignalConstPointerDecryptionErrorMessage m -); -SignalFfiError* signal_plaintext_content_get_body( - SignalOwnedBuffer* out, - SignalConstPointerPlaintextContent obj -); -SignalFfiError* signal_plaintext_content_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPlaintextContent obj -); -SignalFfiError* signal_pre_key_bundle_clone( - SignalMutPointerPreKeyBundle* new_obj, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_destroy( - SignalMutPointerPreKeyBundle p -); -SignalFfiError* signal_pre_key_bundle_get_device_id( - uint32_t* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_identity_key( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeyBundle p -); -SignalFfiError* signal_pre_key_bundle_get_kyber_pre_key_id( - uint32_t* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_kyber_pre_key_public( - SignalMutPointerKyberPublicKey* out, - SignalConstPointerPreKeyBundle bundle -); -SignalFfiError* signal_pre_key_bundle_get_kyber_pre_key_signature( - SignalOwnedBuffer* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_pre_key_id( - uint32_t* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_pre_key_public( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_registration_id( - uint32_t* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_signed_pre_key_id( - uint32_t* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_signed_pre_key_public( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_get_signed_pre_key_signature( - SignalOwnedBuffer* out, - SignalConstPointerPreKeyBundle obj -); -SignalFfiError* signal_pre_key_bundle_new( - SignalMutPointerPreKeyBundle* out, - uint32_t registration_id, - uint32_t device_id, - uint32_t prekey_id, - SignalConstPointerPublicKey prekey, - uint32_t signed_prekey_id, - SignalConstPointerPublicKey signed_prekey, - SignalBorrowedBuffer signed_prekey_signature, - SignalConstPointerPublicKey identity_key, - uint32_t kyber_prekey_id, - SignalConstPointerKyberPublicKey kyber_prekey, - SignalBorrowedBuffer kyber_prekey_signature -); -SignalFfiError* signal_pre_key_record_clone( - SignalMutPointerPreKeyRecord* new_obj, - SignalConstPointerPreKeyRecord obj -); -SignalFfiError* signal_pre_key_record_deserialize( - SignalMutPointerPreKeyRecord* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_pre_key_record_destroy( - SignalMutPointerPreKeyRecord p -); -SignalFfiError* signal_pre_key_record_get_id( - uint32_t* out, - SignalConstPointerPreKeyRecord obj -); -SignalFfiError* signal_pre_key_record_get_private_key( - SignalMutPointerPrivateKey* out, - SignalConstPointerPreKeyRecord obj -); -SignalFfiError* signal_pre_key_record_get_public_key( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeyRecord obj -); -SignalFfiError* signal_pre_key_record_new( - SignalMutPointerPreKeyRecord* out, - uint32_t id, - SignalConstPointerPublicKey pub_key, - SignalConstPointerPrivateKey priv_key -); -SignalFfiError* signal_pre_key_record_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPreKeyRecord obj -); -SignalFfiError* signal_pre_key_signal_message_clone( - SignalMutPointerPreKeySignalMessage* new_obj, - SignalConstPointerPreKeySignalMessage obj -); -SignalFfiError* signal_pre_key_signal_message_deserialize( - SignalMutPointerPreKeySignalMessage* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_pre_key_signal_message_destroy( - SignalMutPointerPreKeySignalMessage p -); -SignalFfiError* signal_pre_key_signal_message_get_base_key( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeySignalMessage m -); -SignalFfiError* signal_pre_key_signal_message_get_identity_key( - SignalMutPointerPublicKey* out, - SignalConstPointerPreKeySignalMessage m -); -SignalFfiError* signal_pre_key_signal_message_get_pre_key_id( - uint32_t* out, - SignalConstPointerPreKeySignalMessage obj -); -SignalFfiError* signal_pre_key_signal_message_get_registration_id( - uint32_t* out, - SignalConstPointerPreKeySignalMessage obj -); -SignalFfiError* signal_pre_key_signal_message_get_signal_message( - SignalMutPointerSignalMessage* out, - SignalConstPointerPreKeySignalMessage m -); -SignalFfiError* signal_pre_key_signal_message_get_signed_pre_key_id( - uint32_t* out, - SignalConstPointerPreKeySignalMessage obj -); -SignalFfiError* signal_pre_key_signal_message_get_version( - uint32_t* out, - SignalConstPointerPreKeySignalMessage obj -); -SignalFfiError* signal_pre_key_signal_message_new( - SignalMutPointerPreKeySignalMessage* out, - uint8_t message_version, - uint32_t registration_id, - uint32_t pre_key_id, - uint32_t signed_pre_key_id, - SignalConstPointerPublicKey base_key, - SignalConstPointerPublicKey identity_key, - SignalConstPointerSignalMessage signal_message -); -SignalFfiError* signal_pre_key_signal_message_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPreKeySignalMessage obj -); -void signal_print_ptr( - const void* p -); -SignalFfiError* signal_privatekey_agree( - SignalOwnedBuffer* out, - SignalConstPointerPrivateKey private_key, - SignalConstPointerPublicKey public_key -); -SignalFfiError* signal_privatekey_clone( - SignalMutPointerPrivateKey* new_obj, - SignalConstPointerPrivateKey obj -); -SignalFfiError* signal_privatekey_deserialize( - SignalMutPointerPrivateKey* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_privatekey_destroy( - SignalMutPointerPrivateKey p -); -SignalFfiError* signal_privatekey_generate( - SignalMutPointerPrivateKey* out -); -SignalFfiError* signal_privatekey_get_public_key( - SignalMutPointerPublicKey* out, - SignalConstPointerPrivateKey k -); -SignalFfiError* signal_privatekey_hpke_open( - SignalOwnedBuffer* out, - SignalConstPointerPrivateKey sk, - SignalBorrowedBuffer ciphertext, - SignalBorrowedBuffer info, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_privatekey_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPrivateKey obj -); -SignalFfiError* signal_privatekey_sign( - SignalOwnedBuffer* out, - SignalConstPointerPrivateKey key, - SignalBorrowedBuffer message -); -SignalFfiError* signal_process_prekey_bundle( - SignalConstPointerPreKeyBundle bundle, - SignalConstPointerProtocolAddress protocol_address, - SignalConstPointerProtocolAddress local_address, - SignalConstPointerFfiSessionStoreStruct session_store, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, - uint64_t now -); -SignalFfiError* signal_process_sender_key_distribution_message( - SignalConstPointerProtocolAddress sender, - SignalConstPointerSenderKeyDistributionMessage sender_key_distribution_message, - SignalConstPointerFfiSenderKeyStoreStruct store -); -SignalFfiError* signal_profile_key_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_profile_key_ciphertext_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_profile_key_commitment_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_profile_key_credential_presentation_check_valid_contents( - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_profile_key_credential_presentation_get_profile_key_ciphertext( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_profile_key_credential_presentation_get_uuid_ciphertext( - SignalType_FixedArray65_uint8_t* out, - SignalBorrowedBuffer presentation_bytes -); -SignalFfiError* signal_profile_key_credential_request_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_profile_key_credential_request_context_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_profile_key_credential_request_context_get_request( - SignalType_FixedArray329_uint8_t* out, - const SignalType_FixedArray473_uint8_t* context -); -SignalFfiError* signal_profile_key_derive_access_key( - SignalType_FixedArray16_uint8_t* out, - const SignalType_FixedArray32_uint8_t* profile_key -); -SignalFfiError* signal_profile_key_get_commitment( - SignalType_FixedArray97_uint8_t* out, - const SignalType_FixedArray32_uint8_t* profile_key, - const SignalType_FixedArray17_uint8_t* user_id -); -SignalFfiError* signal_profile_key_get_profile_key_version( - SignalType_FixedArray64_uint8_t* out, - const SignalType_FixedArray32_uint8_t* profile_key, - const SignalType_FixedArray17_uint8_t* user_id -); -SignalFfiError* signal_provisioning_chat_connection_connect( - SignalCPromiseMutPointerProvisioningChatConnection* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager -); -SignalFfiError* signal_provisioning_chat_connection_destroy( - SignalMutPointerProvisioningChatConnection p -); -SignalFfiError* signal_provisioning_chat_connection_disconnect( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerProvisioningChatConnection chat -); -SignalFfiError* signal_provisioning_chat_connection_info( - SignalMutPointerChatConnectionInfo* out, - SignalConstPointerProvisioningChatConnection chat -); -SignalFfiError* signal_provisioning_chat_connection_init_listener( - SignalConstPointerProvisioningChatConnection chat, - SignalConstPointerFfiProvisioningListenerStruct listener -); -SignalFfiError* signal_publickey_clone( - SignalMutPointerPublicKey* new_obj, - SignalConstPointerPublicKey obj -); -SignalFfiError* signal_publickey_deserialize( - SignalMutPointerPublicKey* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_publickey_destroy( - SignalMutPointerPublicKey p -); -SignalFfiError* signal_publickey_equals( - bool* out, - SignalConstPointerPublicKey lhs, - SignalConstPointerPublicKey rhs -); -SignalFfiError* signal_publickey_get_public_key_bytes( - SignalOwnedBuffer* out, - SignalConstPointerPublicKey obj -); -SignalFfiError* signal_publickey_hpke_seal( - SignalOwnedBuffer* out, - SignalConstPointerPublicKey pk, - SignalBorrowedBuffer plaintext, - SignalBorrowedBuffer info, - SignalBorrowedBuffer associated_data -); -SignalFfiError* signal_publickey_serialize( - SignalOwnedBuffer* out, - SignalConstPointerPublicKey obj -); -SignalFfiError* signal_publickey_verify( - bool* out, - SignalConstPointerPublicKey key, - SignalBorrowedBuffer message, - SignalBorrowedBuffer signature -); -SignalFfiError* signal_receipt_credential_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_receipt_credential_get_receipt_expiration_time( - uint64_t* out, - const SignalType_FixedArray129_uint8_t* receipt_credential -); -SignalFfiError* signal_receipt_credential_get_receipt_level( - uint64_t* out, - const SignalType_FixedArray129_uint8_t* receipt_credential -); -SignalFfiError* signal_receipt_credential_presentation_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_receipt_credential_presentation_get_receipt_expiration_time( - uint64_t* out, - const SignalType_FixedArray329_uint8_t* presentation -); -SignalFfiError* signal_receipt_credential_presentation_get_receipt_level( - uint64_t* out, - const SignalType_FixedArray329_uint8_t* presentation -); -SignalFfiError* signal_receipt_credential_presentation_get_receipt_serial( - SignalType_FixedArray16_uint8_t* out, - const SignalType_FixedArray329_uint8_t* presentation -); -SignalFfiError* signal_receipt_credential_request_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_receipt_credential_request_context_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_receipt_credential_request_context_get_request( - SignalType_FixedArray97_uint8_t* out, - const SignalType_FixedArray177_uint8_t* request_context -); -SignalFfiError* signal_receipt_credential_response_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_register_account_request_create( - SignalMutPointerRegisterAccountRequest* out -); -SignalFfiError* signal_register_account_request_destroy( - SignalMutPointerRegisterAccountRequest p -); -SignalFfiError* signal_register_account_request_set_account_password( - SignalConstPointerRegisterAccountRequest register_account, - const int8_t* account_password -); -SignalFfiError* signal_register_account_request_set_apn_push_token( - SignalConstPointerRegisterAccountRequest register_account, - const int8_t* apn_push_token -); -SignalFfiError* signal_register_account_request_set_identity_pq_last_resort_pre_key( - SignalConstPointerRegisterAccountRequest register_account, - uint8_t identity_type, - SignalFfiSignedPublicPreKey pq_last_resort_pre_key -); -SignalFfiError* signal_register_account_request_set_identity_public_key( - SignalConstPointerRegisterAccountRequest register_account, - uint8_t identity_type, - SignalConstPointerPublicKey identity_key -); -SignalFfiError* signal_register_account_request_set_identity_signed_pre_key( - SignalConstPointerRegisterAccountRequest register_account, - uint8_t identity_type, - SignalFfiSignedPublicPreKey signed_pre_key -); -SignalFfiError* signal_register_account_request_set_skip_device_transfer( - SignalConstPointerRegisterAccountRequest register_account -); -SignalFfiError* signal_register_account_response_destroy( - SignalMutPointerRegisterAccountResponse p -); -SignalFfiError* signal_register_account_response_get_entitlement_backup_expiration_seconds( - uint64_t* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_entitlement_backup_level( - uint64_t* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_entitlement_badges( - SignalOwnedBufferOfFfiRegisterResponseBadge* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_identity( - SignalType_FixedArray17_uint8_t* out, - SignalConstPointerRegisterAccountResponse response, - uint8_t identity_type -); -SignalFfiError* signal_register_account_response_get_number( - SignalCStringPtr* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_reregistration( - bool* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_storage_capable( - bool* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_username_hash( - SignalOwnedBuffer* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_register_account_response_get_username_link_handle( - SignalOptionalUuid* out, - SignalConstPointerRegisterAccountResponse response -); -SignalFfiError* signal_registration_account_attributes_create( - SignalMutPointerRegistrationAccountAttributes* out, - SignalBorrowedBuffer recovery_password, - uint16_t aci_registration_id, - uint16_t pni_registration_id, - const int8_t* registration_lock, - const SignalType_FixedArray16_uint8_t* unidentified_access_key, - bool unrestricted_unidentified_access, - SignalBorrowedBytestringArray capabilities, - bool discoverable_by_phone_number -); -SignalFfiError* signal_registration_account_attributes_destroy( - SignalMutPointerRegistrationAccountAttributes p -); -SignalFfiError* signal_registration_service_check_svr2_credentials( - SignalCPromiseFfiCheckSvr2CredentialsResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - SignalBorrowedBytestringArray svr_tokens -); -SignalFfiError* signal_registration_service_create_session( - SignalCPromiseMutPointerRegistrationService* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalFfiRegistrationCreateSessionRequest create_session, - SignalConstPointerFfiConnectChatBridgeStruct connect_chat -); -SignalFfiError* signal_registration_service_destroy( - SignalMutPointerRegistrationService p -); -SignalFfiError* signal_registration_service_register_account( - SignalCPromiseMutPointerRegisterAccountResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - SignalConstPointerRegisterAccountRequest register_account, - SignalConstPointerRegistrationAccountAttributes account_attributes -); -SignalFfiError* signal_registration_service_registration_session( - SignalMutPointerRegistrationSession* out, - SignalConstPointerRegistrationService service -); -SignalFfiError* signal_registration_service_request_push_challenge( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - const int8_t* push_token -); -SignalFfiError* signal_registration_service_request_verification_code( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - const int8_t* transport, - const int8_t* client, - SignalBorrowedBytestringArray languages -); -SignalFfiError* signal_registration_service_reregister_account( - SignalCPromiseMutPointerRegisterAccountResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerFfiConnectChatBridgeStruct connect_chat, - const int8_t* number, - SignalConstPointerRegisterAccountRequest register_account, - SignalConstPointerRegistrationAccountAttributes account_attributes -); -SignalFfiError* signal_registration_service_resume_session( - SignalCPromiseMutPointerRegistrationService* promise, - SignalConstPointerTokioAsyncContext async_runtime, - const int8_t* session_id, - const int8_t* number, - SignalConstPointerFfiConnectChatBridgeStruct connect_chat -); -SignalFfiError* signal_registration_service_session_id( - SignalCStringPtr* out, - SignalConstPointerRegistrationService service -); -SignalFfiError* signal_registration_service_submit_captcha( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - const int8_t* captcha_value -); -SignalFfiError* signal_registration_service_submit_push_challenge( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - const int8_t* push_challenge -); -SignalFfiError* signal_registration_service_submit_verification_code( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerRegistrationService service, - const int8_t* code -); -SignalFfiError* signal_registration_session_destroy( - SignalMutPointerRegistrationSession p -); -SignalFfiError* signal_registration_session_get_allowed_to_request_code( - bool* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_registration_session_get_next_call_seconds( - uint32_t* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_registration_session_get_next_sms_seconds( - uint32_t* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_registration_session_get_next_verification_attempt_seconds( - uint32_t* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_registration_session_get_requested_information( - SignalOwnedBuffer* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_registration_session_get_verified( - bool* out, - SignalConstPointerRegistrationSession session -); -SignalFfiError* signal_sealed_sender_multi_recipient_encrypt( - SignalOwnedBuffer* out, - SignalBorrowedSliceOfConstPointerProtocolAddress recipients, - SignalBorrowedSliceOfConstPointerSessionRecord recipient_sessions, - SignalBorrowedBuffer excluded_recipients, - SignalConstPointerUnidentifiedSenderMessageContent content, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store -); -SignalFfiError* signal_sealed_sender_multi_recipient_message_for_single_recipient( - SignalOwnedBuffer* out, - SignalBorrowedBuffer encoded_multi_recipient_message -); -SignalFfiError* signal_sealed_session_cipher_decrypt_to_usmc( - SignalMutPointerUnidentifiedSenderMessageContent* out, - SignalBorrowedBuffer ctext, - SignalConstPointerFfiIdentityKeyStoreStruct identity_store -); -SignalFfiError* signal_sealed_session_cipher_encrypt( - SignalOwnedBuffer* out, - SignalConstPointerProtocolAddress destination, - SignalConstPointerUnidentifiedSenderMessageContent content, - SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store -); -SignalFfiError* signal_secure_value_recovery_for_backups_create_new_backup_chain( - SignalOwnedBuffer* out, - uint8_t environment, - const SignalType_FixedArray32_uint8_t* backup_key -); -SignalFfiError* signal_secure_value_recovery_for_backups_remove_backup( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager, - const int8_t* username, - const int8_t* password -); -SignalFfiError* signal_secure_value_recovery_for_backups_restore_backup_from_server( - SignalCPromiseMutPointerBackupRestoreResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - const SignalType_FixedArray32_uint8_t* backup_key, - SignalBorrowedBuffer metadata, - SignalConstPointerConnectionManager connection_manager, - const int8_t* username, - const int8_t* password -); -SignalFfiError* signal_secure_value_recovery_for_backups_store_backup( - SignalCPromiseMutPointerBackupStoreResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - const SignalType_FixedArray32_uint8_t* backup_key, - SignalBorrowedBuffer previous_secret_data, - SignalConstPointerConnectionManager connection_manager, - const int8_t* username, - const int8_t* password -); -SignalFfiError* signal_sender_certificate_clone( - SignalMutPointerSenderCertificate* new_obj, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_deserialize( - SignalMutPointerSenderCertificate* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_sender_certificate_destroy( - SignalMutPointerSenderCertificate p -); -SignalFfiError* signal_sender_certificate_get_certificate( - SignalOwnedBuffer* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_device_id( - uint32_t* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_expiration( - uint64_t* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_key( - SignalMutPointerPublicKey* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_sender_e164( - SignalCStringPtr* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_sender_uuid( - SignalCStringPtr* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_serialized( - SignalOwnedBuffer* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_get_server_certificate( - SignalMutPointerServerCertificate* out, - SignalConstPointerSenderCertificate cert -); -SignalFfiError* signal_sender_certificate_get_signature( - SignalOwnedBuffer* out, - SignalConstPointerSenderCertificate obj -); -SignalFfiError* signal_sender_certificate_new( - SignalMutPointerSenderCertificate* out, - const int8_t* sender_uuid, - const int8_t* sender_e164, - uint32_t sender_device_id, - SignalConstPointerPublicKey sender_key, - uint64_t expiration, - SignalConstPointerServerCertificate signer_cert, - SignalConstPointerPrivateKey signer_key -); -SignalFfiError* signal_sender_certificate_validate( - bool* out, - SignalConstPointerSenderCertificate cert, - SignalBorrowedSliceOfConstPointerPublicKey trust_roots, - uint64_t time -); -SignalFfiError* signal_sender_key_distribution_message_clone( - SignalMutPointerSenderKeyDistributionMessage* new_obj, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_distribution_message_create( - SignalMutPointerSenderKeyDistributionMessage* out, - SignalConstPointerProtocolAddress sender, - SignalUuid distribution_id, - SignalConstPointerFfiSenderKeyStoreStruct store -); -SignalFfiError* signal_sender_key_distribution_message_deserialize( - SignalMutPointerSenderKeyDistributionMessage* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_sender_key_distribution_message_destroy( - SignalMutPointerSenderKeyDistributionMessage p -); -SignalFfiError* signal_sender_key_distribution_message_get_chain_id( - uint32_t* out, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_distribution_message_get_chain_key( - SignalOwnedBuffer* out, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_distribution_message_get_distribution_id( - SignalUuid* out, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_distribution_message_get_iteration( - uint32_t* out, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_distribution_message_get_signature_key( - SignalMutPointerPublicKey* out, - SignalConstPointerSenderKeyDistributionMessage m -); -SignalFfiError* signal_sender_key_distribution_message_new( - SignalMutPointerSenderKeyDistributionMessage* out, - uint8_t message_version, - SignalUuid distribution_id, - uint32_t chain_id, - uint32_t iteration, - SignalBorrowedBuffer chainkey, - SignalConstPointerPublicKey pk -); -SignalFfiError* signal_sender_key_distribution_message_serialize( - SignalOwnedBuffer* out, - SignalConstPointerSenderKeyDistributionMessage obj -); -SignalFfiError* signal_sender_key_message_clone( - SignalMutPointerSenderKeyMessage* new_obj, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_deserialize( - SignalMutPointerSenderKeyMessage* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_sender_key_message_destroy( - SignalMutPointerSenderKeyMessage p -); -SignalFfiError* signal_sender_key_message_get_chain_id( - uint32_t* out, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_get_cipher_text( - SignalOwnedBuffer* out, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_get_distribution_id( - SignalUuid* out, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_get_iteration( - uint32_t* out, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_new( - SignalMutPointerSenderKeyMessage* out, - uint8_t message_version, - SignalUuid distribution_id, - uint32_t chain_id, - uint32_t iteration, - SignalBorrowedBuffer ciphertext, - SignalConstPointerPrivateKey pk -); -SignalFfiError* signal_sender_key_message_serialize( - SignalOwnedBuffer* out, - SignalConstPointerSenderKeyMessage obj -); -SignalFfiError* signal_sender_key_message_verify_signature( - bool* out, - SignalConstPointerSenderKeyMessage skm, - SignalConstPointerPublicKey pubkey -); -SignalFfiError* signal_sender_key_record_clone( - SignalMutPointerSenderKeyRecord* new_obj, - SignalConstPointerSenderKeyRecord obj -); -SignalFfiError* signal_sender_key_record_deserialize( - SignalMutPointerSenderKeyRecord* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_sender_key_record_destroy( - SignalMutPointerSenderKeyRecord p -); -SignalFfiError* signal_sender_key_record_serialize( - SignalOwnedBuffer* out, - SignalConstPointerSenderKeyRecord obj -); -SignalFfiError* signal_server_certificate_clone( - SignalMutPointerServerCertificate* new_obj, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_deserialize( - SignalMutPointerServerCertificate* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_server_certificate_destroy( - SignalMutPointerServerCertificate p -); -SignalFfiError* signal_server_certificate_get_certificate( - SignalOwnedBuffer* out, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_get_key( - SignalMutPointerPublicKey* out, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_get_key_id( - uint32_t* out, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_get_serialized( - SignalOwnedBuffer* out, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_get_signature( - SignalOwnedBuffer* out, - SignalConstPointerServerCertificate obj -); -SignalFfiError* signal_server_certificate_new( - SignalMutPointerServerCertificate* out, - uint32_t key_id, - SignalConstPointerPublicKey server_key, - SignalConstPointerPrivateKey trust_root -); -SignalFfiError* signal_server_message_ack_destroy( - SignalMutPointerServerMessageAck p -); -SignalFfiError* signal_server_message_ack_send( - SignalConstPointerServerMessageAck ack -); -SignalFfiError* signal_server_public_params_create_auth_credential_with_pni_presentation_deterministic( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray289_uint8_t* group_secret_params, - SignalBorrowedBuffer auth_credential_with_pni_bytes -); -SignalFfiError* signal_server_public_params_create_expiring_profile_key_credential_presentation_deterministic( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray289_uint8_t* group_secret_params, - const SignalType_FixedArray153_uint8_t* profile_key_credential -); -SignalFfiError* signal_server_public_params_create_profile_key_credential_request_context_deterministic( - SignalType_FixedArray473_uint8_t* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray17_uint8_t* user_id, - const SignalType_FixedArray32_uint8_t* profile_key -); -SignalFfiError* signal_server_public_params_create_receipt_credential_presentation_deterministic( - SignalType_FixedArray329_uint8_t* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray129_uint8_t* receipt_credential -); -SignalFfiError* signal_server_public_params_create_receipt_credential_request_context_deterministic( - SignalType_FixedArray177_uint8_t* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray16_uint8_t* receipt_serial -); -SignalFfiError* signal_server_public_params_deserialize( - SignalMutPointerServerPublicParams* out, - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_server_public_params_destroy( - SignalMutPointerServerPublicParams p -); -SignalFfiError* signal_server_public_params_get_endorsement_public_key( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams params -); -SignalFfiError* signal_server_public_params_receive_auth_credential_with_pni_as_service_id( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams params, - const SignalType_FixedArray17_uint8_t* aci, - const SignalType_FixedArray17_uint8_t* pni, - uint64_t redemption_time, - SignalBorrowedBuffer auth_credential_with_pni_response_bytes -); -SignalFfiError* signal_server_public_params_receive_auth_credential_zkc_without_pni( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams params, - const SignalType_FixedArray17_uint8_t* aci, - SignalBorrowedBuffer salt, - uint64_t redemption_time, - SignalBorrowedBuffer auth_credential_with_pni_response_bytes -); -SignalFfiError* signal_server_public_params_receive_expiring_profile_key_credential( - SignalType_FixedArray153_uint8_t* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray473_uint8_t* request_context, - const SignalType_FixedArray497_uint8_t* response, - uint64_t current_time_in_seconds -); -SignalFfiError* signal_server_public_params_receive_receipt_credential( - SignalType_FixedArray129_uint8_t* out, - SignalConstPointerServerPublicParams server_public_params, - const SignalType_FixedArray177_uint8_t* request_context, - const SignalType_FixedArray409_uint8_t* response -); -SignalFfiError* signal_server_public_params_serialize( - SignalOwnedBuffer* out, - SignalConstPointerServerPublicParams handle -); -SignalFfiError* signal_server_public_params_verify_signature( - SignalConstPointerServerPublicParams server_public_params, - SignalBorrowedBuffer message, - const SignalType_FixedArray64_uint8_t* notary_signature -); -SignalFfiError* signal_server_secret_params_deserialize( - SignalMutPointerServerSecretParams* out, - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_server_secret_params_destroy( - SignalMutPointerServerSecretParams p -); -SignalFfiError* signal_server_secret_params_generate_deterministic( - SignalMutPointerServerSecretParams* out, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_server_secret_params_get_public_params( - SignalMutPointerServerPublicParams* out, - SignalConstPointerServerSecretParams params -); -SignalFfiError* signal_server_secret_params_issue_auth_credential_with_pni_zkc_deterministic( - SignalOwnedBuffer* out, - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray17_uint8_t* aci, - const SignalType_FixedArray17_uint8_t* pni, - uint64_t redemption_time -); -SignalFfiError* signal_server_secret_params_issue_auth_credential_zkc_without_pni_deterministic( - SignalOwnedBuffer* out, - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray17_uint8_t* aci, - SignalBorrowedBuffer salt, - uint64_t redemption_time -); -SignalFfiError* signal_server_secret_params_issue_expiring_profile_key_credential_deterministic( - SignalType_FixedArray497_uint8_t* out, - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray329_uint8_t* request, - const SignalType_FixedArray17_uint8_t* user_id, - const SignalType_FixedArray97_uint8_t* commitment, - uint64_t expiration_in_seconds -); -SignalFfiError* signal_server_secret_params_issue_receipt_credential_deterministic( - SignalType_FixedArray409_uint8_t* out, - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray32_uint8_t* randomness, - const SignalType_FixedArray97_uint8_t* request, - uint64_t receipt_expiration_time, - uint64_t receipt_level -); -SignalFfiError* signal_server_secret_params_serialize( - SignalOwnedBuffer* out, - SignalConstPointerServerSecretParams handle -); -SignalFfiError* signal_server_secret_params_sign_deterministic( - SignalType_FixedArray64_uint8_t* out, - SignalConstPointerServerSecretParams params, - const SignalType_FixedArray32_uint8_t* randomness, - SignalBorrowedBuffer message -); -SignalFfiError* signal_server_secret_params_verify_auth_credential_presentation( - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray97_uint8_t* group_public_params, - SignalBorrowedBuffer presentation_bytes, - uint64_t current_time_in_seconds -); -SignalFfiError* signal_server_secret_params_verify_profile_key_credential_presentation( - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray97_uint8_t* group_public_params, - SignalBorrowedBuffer presentation_bytes, - uint64_t current_time_in_seconds -); -SignalFfiError* signal_server_secret_params_verify_receipt_credential_presentation( - SignalConstPointerServerSecretParams server_secret_params, - const SignalType_FixedArray329_uint8_t* presentation -); -SignalFfiError* signal_service_id_parse_from_service_id_binary( - SignalType_FixedArray17_uint8_t* out, - SignalBorrowedBuffer input -); -SignalFfiError* signal_service_id_parse_from_service_id_string( - SignalType_FixedArray17_uint8_t* out, - const int8_t* input -); -SignalFfiError* signal_service_id_service_id_binary( - SignalOwnedBuffer* out, - const SignalType_FixedArray17_uint8_t* value -); -SignalFfiError* signal_service_id_service_id_log( - SignalCStringPtr* out, - const SignalType_FixedArray17_uint8_t* value -); -SignalFfiError* signal_service_id_service_id_string( - SignalCStringPtr* out, - const SignalType_FixedArray17_uint8_t* value -); -SignalFfiError* signal_session_record_archive_current_state( - SignalMutPointerSessionRecord session_record -); -SignalFfiError* signal_session_record_clone( - SignalMutPointerSessionRecord* new_obj, - SignalConstPointerSessionRecord obj -); -SignalFfiError* signal_session_record_current_ratchet_key_matches( - bool* out, - SignalConstPointerSessionRecord s, - SignalConstPointerPublicKey key -); -SignalFfiError* signal_session_record_deserialize( - SignalMutPointerSessionRecord* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_session_record_destroy( - SignalMutPointerSessionRecord p -); -SignalFfiError* signal_session_record_get_local_registration_id( - uint32_t* out, - SignalConstPointerSessionRecord obj -); -SignalFfiError* signal_session_record_get_remote_registration_id( - uint32_t* out, - SignalConstPointerSessionRecord obj -); -SignalFfiError* signal_session_record_has_usable_sender_chain( - bool* out, - SignalConstPointerSessionRecord s, - uint64_t now -); -SignalFfiError* signal_session_record_serialize( - SignalOwnedBuffer* out, - SignalConstPointerSessionRecord obj -); -SignalFfiError* signal_sgx_client_state_complete_handshake( - SignalMutPointerSgxClientState cli, - SignalBorrowedBuffer handshake_received -); -SignalFfiError* signal_sgx_client_state_destroy( - SignalMutPointerSgxClientState p -); -SignalFfiError* signal_sgx_client_state_established_recv( - SignalOwnedBuffer* out, - SignalMutPointerSgxClientState cli, - SignalBorrowedBuffer received_ciphertext -); -SignalFfiError* signal_sgx_client_state_established_send( - SignalOwnedBuffer* out, - SignalMutPointerSgxClientState cli, - SignalBorrowedBuffer plaintext_to_send -); -SignalFfiError* signal_sgx_client_state_initial_request( - SignalOwnedBuffer* out, - SignalConstPointerSgxClientState obj -); -SignalFfiError* signal_signed_pre_key_record_clone( - SignalMutPointerSignedPreKeyRecord* new_obj, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_deserialize( - SignalMutPointerSignedPreKeyRecord* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_signed_pre_key_record_destroy( - SignalMutPointerSignedPreKeyRecord p -); -SignalFfiError* signal_signed_pre_key_record_get_id( - uint32_t* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_get_private_key( - SignalMutPointerPrivateKey* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_get_public_key( - SignalMutPointerPublicKey* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_get_signature( - SignalOwnedBuffer* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_get_timestamp( - uint64_t* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_signed_pre_key_record_new( - SignalMutPointerSignedPreKeyRecord* out, - uint32_t id, - uint64_t timestamp, - SignalConstPointerPublicKey pub_key, - SignalConstPointerPrivateKey priv_key, - SignalBorrowedBuffer signature -); -SignalFfiError* signal_signed_pre_key_record_serialize( - SignalOwnedBuffer* out, - SignalConstPointerSignedPreKeyRecord obj -); -SignalFfiError* signal_svr2_client_new( - SignalMutPointerSgxClientState* out, - SignalBorrowedBuffer mrenclave, - SignalBorrowedBuffer attestation_msg, - uint64_t current_timestamp -); -SignalFfiError* signal_svr_key_derive_logging_key( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_svr_key_derive_registration_lock( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_svr_key_derive_registration_recovery_password( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_svr_key_derive_storage_service_key( - SignalType_FixedArray32_uint8_t* out, - const SignalType_FixedArray32_uint8_t* svr_key -); -SignalFfiError* signal_tokio_async_context_cancel( - SignalConstPointerTokioAsyncContext context, - uint64_t raw_cancellation_id -); -SignalFfiError* signal_tokio_async_context_destroy( - SignalMutPointerTokioAsyncContext p -); -SignalFfiError* signal_tokio_async_context_new( - SignalMutPointerTokioAsyncContext* out -); -SignalFfiError* signal_unauthenticated_chat_connection_account_exists( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray17_uint8_t* account -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_copy_media( - SignalMutPointerCopyBackupMediaStream* out, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - SignalBorrowedSliceOfBridgeCopyBackupMediaItemFfiArg items, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_delete_all( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_delete_media( - SignalMutPointerDeleteBackupMediaStream* out, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - SignalBorrowedSliceOfBridgeDeleteBackupMediaItemFfiArg items, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_cdn_credentials( - SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int32_t cdn, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_media_backup_info( - SignalCPromiseBridgeMediaBackupInfoFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_media_upload_form( - SignalCPromiseFfiUploadForm* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - uint64_t upload_size, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_message_backup_info( - SignalCPromiseBridgeMessageBackupInfoFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_svrb_credentials( - SignalCPromisePairOfCStringPtrCStringPtr* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_get_upload_form( - SignalCPromiseFfiUploadForm* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - uint64_t upload_size, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_list_media( - SignalCPromiseListMediaResponseFfiResult* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - const int8_t* cursor, - int32_t limit, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_refresh( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_backup_set_public_key( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer credential, - SignalBorrowedBuffer server_keys, - SignalConstPointerPrivateKey signing_key, - int64_t rng -); -SignalFfiError* signal_unauthenticated_chat_connection_connect( - SignalCPromiseMutPointerUnauthenticatedChatConnection* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerConnectionManager connection_manager, - SignalBorrowedBytestringArray languages -); -SignalFfiError* signal_unauthenticated_chat_connection_destroy( - SignalMutPointerUnauthenticatedChatConnection p -); -SignalFfiError* signal_unauthenticated_chat_connection_disconnect( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat -); -SignalFfiError* signal_unauthenticated_chat_connection_get_pre_keys_access_key_auth( - SignalCPromiseFfiPreKeysResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray16_uint8_t* auth, - const SignalType_FixedArray17_uint8_t* target, - int32_t device -); -SignalFfiError* signal_unauthenticated_chat_connection_get_pre_keys_group_auth( - SignalCPromiseFfiPreKeysResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer auth, - const SignalType_FixedArray17_uint8_t* target, - int32_t device -); -SignalFfiError* signal_unauthenticated_chat_connection_get_pre_keys_unrestricted_auth( - SignalCPromiseFfiPreKeysResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray17_uint8_t* target, - int32_t device -); -SignalFfiError* signal_unauthenticated_chat_connection_info( - SignalMutPointerChatConnectionInfo* out, - SignalConstPointerUnauthenticatedChatConnection chat -); -SignalFfiError* signal_unauthenticated_chat_connection_init_listener( - SignalConstPointerUnauthenticatedChatConnection chat, - SignalConstPointerFfiChatListenerStruct listener -); -SignalFfiError* signal_unauthenticated_chat_connection_look_up_username_hash( - SignalCPromiseOptionalUuid* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer hash -); -SignalFfiError* signal_unauthenticated_chat_connection_look_up_username_link( - SignalCPromiseOptionalPairOfCStringPtrc_uchar32* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalUuid uuid, - SignalBorrowedBuffer entropy -); -SignalFfiError* signal_unauthenticated_chat_connection_send( - SignalCPromiseFfiChatResponse* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalConstPointerHttpRequest http_request, - uint32_t timeout_millis -); -SignalFfiError* signal_unauthenticated_chat_connection_send_message( - SignalCPromisebool* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const SignalType_FixedArray17_uint8_t* destination, - uint64_t timestamp, - SignalBorrowedSliceOfu32 device_ids, - SignalBorrowedSliceOfu32 registration_ids, - SignalBorrowedSliceOfBuffers contents, - uint8_t auth_kind, - SignalOptionalBorrowedSliceOfc_uchar auth_buffer, - bool online_only, - bool is_urgent -); -SignalFfiError* signal_unauthenticated_chat_connection_send_multi_recipient_message( - SignalCPromiseOwnedBufferOfc_uchar17* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - SignalBorrowedBuffer payload, - uint64_t timestamp, - SignalBorrowedBuffer auth, - bool online_only, - bool is_urgent -); -SignalFfiError* signal_unauthenticated_chat_connection_send_raw_grpc( - SignalCPromiseOwnedBuffer* promise, - SignalConstPointerTokioAsyncContext async_runtime, - SignalConstPointerUnauthenticatedChatConnection chat, - const int8_t* service, - const int8_t* method, - SignalBorrowedBuffer payload -); -SignalFfiError* signal_unidentified_sender_message_content_deserialize( - SignalMutPointerUnidentifiedSenderMessageContent* out, - SignalBorrowedBuffer data -); -SignalFfiError* signal_unidentified_sender_message_content_destroy( - SignalMutPointerUnidentifiedSenderMessageContent p -); -SignalFfiError* signal_unidentified_sender_message_content_get_content_hint( - uint32_t* out, - SignalConstPointerUnidentifiedSenderMessageContent m -); -SignalFfiError* signal_unidentified_sender_message_content_get_contents( - SignalOwnedBuffer* out, - SignalConstPointerUnidentifiedSenderMessageContent obj -); -SignalFfiError* signal_unidentified_sender_message_content_get_group_id_or_empty( - SignalOwnedBuffer* out, - SignalConstPointerUnidentifiedSenderMessageContent m -); -SignalFfiError* signal_unidentified_sender_message_content_get_msg_type( - uint8_t* out, - SignalConstPointerUnidentifiedSenderMessageContent m -); -SignalFfiError* signal_unidentified_sender_message_content_get_sender_cert( - SignalMutPointerSenderCertificate* out, - SignalConstPointerUnidentifiedSenderMessageContent m -); -SignalFfiError* signal_unidentified_sender_message_content_new( - SignalMutPointerUnidentifiedSenderMessageContent* out, - SignalConstPointerCiphertextMessage message, - SignalConstPointerSenderCertificate sender, - uint32_t content_hint, - SignalBorrowedBuffer group_id -); -SignalFfiError* signal_unidentified_sender_message_content_new_from_content_and_type( - SignalMutPointerUnidentifiedSenderMessageContent* out, - SignalBorrowedBuffer message_content, - uint8_t message_type, - SignalConstPointerSenderCertificate sender, - uint32_t content_hint, - SignalBorrowedBuffer group_id -); -SignalFfiError* signal_unidentified_sender_message_content_serialize( - SignalOwnedBuffer* out, - SignalConstPointerUnidentifiedSenderMessageContent obj -); -SignalFfiError* signal_username_candidates_from( - SignalBytestringArray* out, - const int8_t* nickname, - uint32_t min_len, - uint32_t max_len -); -SignalFfiError* signal_username_hash( - SignalType_FixedArray32_uint8_t* out, - const int8_t* username -); -SignalFfiError* signal_username_hash_from_parts( - SignalType_FixedArray32_uint8_t* out, - const int8_t* nickname, - const int8_t* discriminator, - uint32_t min_len, - uint32_t max_len -); -SignalFfiError* signal_username_link_create( - SignalOwnedBuffer* out, - const int8_t* username, - SignalBorrowedBuffer entropy -); -SignalFfiError* signal_username_link_decrypt_username( - SignalCStringPtr* out, - SignalBorrowedBuffer entropy, - SignalBorrowedBuffer encrypted_username -); -SignalFfiError* signal_username_proof( - SignalOwnedBuffer* out, - const int8_t* username, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_username_verify( - SignalBorrowedBuffer proof, - SignalBorrowedBuffer hash -); -SignalFfiError* signal_uuid_ciphertext_check_valid_contents( - SignalBorrowedBuffer buffer -); -SignalFfiError* signal_validating_mac_destroy( - SignalMutPointerValidatingMac p -); -SignalFfiError* signal_validating_mac_finalize( - int32_t* out, - SignalMutPointerValidatingMac mac -); -SignalFfiError* signal_validating_mac_initialize( - SignalMutPointerValidatingMac* out, - SignalBorrowedBuffer key, - uint32_t chunk_size, - SignalBorrowedBuffer digests -); -SignalFfiError* signal_validating_mac_update( - int32_t* out, - SignalMutPointerValidatingMac mac, - SignalBorrowedBuffer bytes, - uint32_t offset, - uint32_t length -); -SignalFfiError* signal_zk_credential_key_pair_check_valid_contents( - SignalBorrowedBuffer key_pair_bytes -); -SignalFfiError* signal_zk_credential_key_pair_generate_deterministic( - SignalOwnedBuffer* out, - const SignalType_FixedArray32_uint8_t* randomness -); -SignalFfiError* signal_zk_credential_key_pair_get_public_key( - SignalOwnedBuffer* out, - SignalBorrowedBuffer key_pair_bytes -); -SignalFfiError* signal_zk_credential_public_key_check_valid_contents( - SignalBorrowedBuffer public_key_bytes -); -typedef SignalBytestringArray SignalStringArray; -typedef SignalCPromiseOptionalPairOfCStringPtrc_uchar32 SignalCPromiseOptionalPairOfCStringPtru832; -typedef SignalCPromiseOwnedBuffer SignalCPromiseOwnedBufferOfc_uchar; -typedef SignalCPromiseOwnedBufferOfc_uchar17 SignalCPromiseOwnedBufferOfServiceIdFixedWidthBinaryBytes; -typedef SignalCPromisePairOfOwnedBufferOwnedBuffer SignalCPromisePairOfOwnedBufferOfc_ucharOwnedBufferOfc_uchar; -typedef SignalConstPointerFfiSyncInputStreamStruct SignalConstPointerFfiInputStreamStruct; -typedef SignalFfiIdentityKeyStoreStruct SignalIdentityKeyStore; -typedef SignalFfiKyberPreKeyStoreStruct SignalKyberPreKeyStore; -typedef SignalFfiPreKeyStoreStruct SignalPreKeyStore; -typedef SignalFfiSenderKeyStoreStruct SignalSenderKeyStore; -typedef SignalFfiSessionStoreStruct SignalSessionStore; -typedef SignalFfiSignedPreKeyStoreStruct SignalSignedPreKeyStore; -typedef SignalFfiSyncInputStreamStruct SignalFfiInputStreamStruct; -typedef SignalFfiSyncInputStreamStruct SignalInputStream; -typedef SignalFfiSyncInputStreamStruct SignalSyncInputStream; -typedef SignalOptionalPairOfCStringPtrc_uchar32 SignalOptionalPairOfCStringPtru832; -typedef SignalOwnedBufferOfc_uchar17 SignalOwnedBufferOfServiceIdFixedWidthBinaryBytes; -typedef SignalOwnedLookupResponseEntryList SignalOwnedBufferOfFfiCdsiLookupResponseEntry; -typedef SignalPairOfOwnedBufferOwnedBuffer SignalPairOfOwnedBufferOfc_ucharOwnedBufferOfc_uchar; -typedef SignalRegistrationAccountAttributes SignalRegistrationAccountAttributes; -typedef SignalType_FixedArray16_uint8_t SignalReceiptSerialBytes; -typedef SignalType_FixedArray16_uint8_t SignalUidBytes; -typedef SignalType_FixedArray16_uint8_t SignalUnidentifiedAccessKey; -typedef SignalType_FixedArray17_uint8_t SignalServiceIdFixedWidthBinaryBytes; -typedef SignalType_FixedArray32_uint8_t SignalAesKeyBytes; -typedef SignalType_FixedArray32_uint8_t SignalBackupKeyBytes; -typedef SignalType_FixedArray32_uint8_t SignalGroupIdentifierBytes; -typedef SignalType_FixedArray32_uint8_t SignalGroupMasterKeyBytes; -typedef SignalType_FixedArray32_uint8_t SignalProfileKeyBytes; -typedef SignalType_FixedArray32_uint8_t SignalProfileKeyVersionBytes; -typedef SignalType_FixedArray32_uint8_t SignalRandomnessBytes; -typedef SignalType_FixedArray64_uint8_t SignalNotarySignatureBytes; -typedef SignalType_FixedArray64_uint8_t SignalProfileKeyVersionEncodedBytes; -typedef SignalType_FixedArray64_uint8_t SignalSignatureBytes; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void SignalFfiChatListenerReceivedQueueEmpty; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void SignalFfiLoggerFlush; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalBytestringArray SignalFfiChatListenerReceivedAlerts; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalCStringPtr_SignalMutPointerServerMessageAck SignalFfiProvisioningListenerReceivedAddress; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalLogLevel_SignalCStringPtr_uint32_t_SignalCStringPtr SignalFfiLoggerLog; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalMutPointerSessionRecord SignalFfiSessionStoreStoreSession; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalMutPointerProtocolAddress_SignalUuid_SignalMutPointerSenderKeyRecord SignalFfiSenderKeyStoreStoreSenderKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_SignalMutPointerServerMessageAck SignalFfiProvisioningListenerReceivedEnvelope; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalOwnedBuffer_uint64_t_SignalMutPointerServerMessageAck SignalFfiChatListenerReceivedIncomingMessage; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError SignalFfiChatListenerConnectionInterrupted; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalFfiError SignalFfiProvisioningListenerConnectionInterrupted; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerKyberPreKeyRecord_uint32_t SignalFfiKyberPreKeyStoreLoadKyberPreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPreKeyRecord_uint32_t SignalFfiPreKeyStoreLoadPreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerPublicKey_SignalMutPointerProtocolAddress SignalFfiIdentityKeyStoreGetIdentityKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSenderKeyRecord_SignalMutPointerProtocolAddress_SignalUuid SignalFfiSenderKeyStoreLoadSenderKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSessionRecord_SignalMutPointerProtocolAddress SignalFfiSessionStoreLoadSession; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalMutPointerSignedPreKeyRecord_uint32_t SignalFfiSignedPreKeyStoreLoadSignedPreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_SignalPairOfMutPointerPrivateKeyMutPointerPublicKey SignalFfiIdentityKeyStoreGetLocalIdentityKeyPair; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_bool_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey_uint32_t SignalFfiIdentityKeyStoreIsTrustedIdentity; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_size_t_SignalBorrowedMutableBuffer SignalFfiSyncInputStreamRead; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint32_t SignalFfiIdentityKeyStoreGetLocalRegistrationId; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_SignalType_MutPointer_uint8_t_SignalMutPointerProtocolAddress_SignalMutPointerPublicKey SignalFfiIdentityKeyStoreSaveIdentityKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t SignalFfiPreKeyStoreRemovePreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerKyberPreKeyRecord SignalFfiKyberPreKeyStoreStoreKyberPreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerPreKeyRecord SignalFfiPreKeyStoreStorePreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_SignalMutPointerSignedPreKeyRecord SignalFfiSignedPreKeyStoreStoreSignedPreKey; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint32_t_uint32_t_SignalMutPointerPublicKey SignalFfiKyberPreKeyStoreMarkKyberPreKeyUsed; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t SignalFfiChatListenerReceivedServerTimestamp; -typedef SignalType_FunctionPointer_int32_t_SignalType_MutPointer_void_uint64_t SignalFfiSyncInputStreamSkip; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiChatListenerDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiIdentityKeyStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiKyberPreKeyStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiLoggerDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiPreKeyStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiProvisioningListenerDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiSenderKeyStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiSessionStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiSignedPreKeyStoreDestroy; -typedef SignalType_FunctionPointer_void_SignalType_MutPointer_void SignalFfiSyncInputStreamDestroy; + SignalProtocolAddress *raw; +} SignalMutPointerProtocolAddress; + +typedef struct { + const SignalProtocolAddress *raw; +} SignalConstPointerProtocolAddress; + +typedef struct { + SignalAes256Ctr32 *raw; +} SignalMutPointerAes256Ctr32; + +typedef struct { + const unsigned char *base; + size_t length; +} SignalBorrowedBuffer; + +typedef struct { + unsigned char *base; + size_t length; +} SignalBorrowedMutableBuffer; + +typedef struct { + SignalAes256GcmDecryption *raw; +} SignalMutPointerAes256GcmDecryption; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + unsigned char *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBuffer; + +typedef struct { + SignalAes256GcmEncryption *raw; +} SignalMutPointerAes256GcmEncryption; + +typedef struct { + const SignalAes256GcmSiv *raw; +} SignalConstPointerAes256GcmSiv; + +typedef struct { + SignalAes256GcmSiv *raw; +} SignalMutPointerAes256GcmSiv; + +typedef struct { + SignalAuthenticatedChatConnection *raw; +} SignalMutPointerAuthenticatedChatConnection; + typedef uint64_t SignalCancellationId; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerAuthenticatedChatConnection *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerAuthenticatedChatConnection; + +typedef struct { + const SignalTokioAsyncContext *raw; +} SignalConstPointerTokioAsyncContext; + +typedef struct { + const SignalConnectionManager *raw; +} SignalConstPointerConnectionManager; + +typedef struct { + const size_t *base; + size_t length; +} SignalBorrowedSliceOfusize; + +typedef struct { + SignalBorrowedBuffer bytes; + SignalBorrowedSliceOfusize lengths; +} SignalBorrowedBytestringArray; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const bool *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromisebool; + +typedef struct { + const SignalAuthenticatedChatConnection *raw; +} SignalConstPointerAuthenticatedChatConnection; + +typedef SignalConnectionInfo SignalChatConnectionInfo; + +typedef struct { + SignalChatConnectionInfo *raw; +} SignalMutPointerChatConnectionInfo; + +typedef struct { + SignalServerMessageAck *raw; +} SignalMutPointerServerMessageAck; + +typedef int (*SignalFfiChatListenerReceivedIncomingMessage)(void *ctx, SignalOwnedBuffer envelope, uint64_t timestamp, SignalMutPointerServerMessageAck ack); + +typedef int (*SignalFfiChatListenerReceivedQueueEmpty)(void *ctx); + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + size_t *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfusize; + +typedef struct { + SignalOwnedBuffer bytes; + SignalOwnedBufferOfusize lengths; +} SignalBytestringArray; + +typedef SignalBytestringArray SignalStringArray; + +typedef int (*SignalFfiChatListenerReceivedAlerts)(void *ctx, SignalStringArray alerts); + +typedef int (*SignalFfiChatListenerConnectionInterrupted)(void *ctx, SignalFfiError *disconnect_cause); + +typedef void (*SignalFfiChatListenerDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiChatListenerReceivedIncomingMessage received_incoming_message; + SignalFfiChatListenerReceivedQueueEmpty received_queue_empty; + SignalFfiChatListenerReceivedAlerts received_alerts; + SignalFfiChatListenerConnectionInterrupted connection_interrupted; + SignalFfiChatListenerDestroy destroy; +} SignalFfiChatListenerStruct; + +typedef struct { + const SignalFfiChatListenerStruct *raw; +} SignalConstPointerFfiChatListenerStruct; + +/** + * A type alias to be used with [`OwnedBufferOf`], so that `OwnedBufferOf` and + * `OwnedBufferOf<*const c_char>` get distinct names. + */ +typedef const char *SignalCStringPtr; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalCStringPtr *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfCStringPtr; + +typedef struct { + uint16_t status; + const char *message; + SignalOwnedBufferOfCStringPtr headers; + SignalOwnedBuffer body; +} SignalFfiChatResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalFfiChatResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseFfiChatResponse; + +typedef struct { + const SignalHttpRequest *raw; +} SignalConstPointerHttpRequest; + +/** + * A wrapper type for raw UUIDs, because C treats arrays specially in argument position. + */ +typedef struct { + uint8_t bytes[16]; +} SignalUuid; + +/** + * The fixed-width binary representation of a ServiceId. + * + * Rarely used. The variable-width format that privileges ACIs is preferred. + */ +typedef uint8_t SignalServiceIdFixedWidthBinaryBytes[17]; + +typedef struct { + SignalPrivateKey *raw; +} SignalMutPointerPrivateKey; + +typedef struct { + SignalBackupRestoreResponse *raw; +} SignalMutPointerBackupRestoreResponse; + +typedef struct { + const SignalBackupRestoreResponse *raw; +} SignalConstPointerBackupRestoreResponse; + +typedef struct { + SignalBackupStoreResponse *raw; +} SignalMutPointerBackupStoreResponse; + +typedef struct { + const SignalBackupStoreResponse *raw; +} SignalConstPointerBackupStoreResponse; + +typedef struct { + SignalBridgedStringMap *raw; +} SignalMutPointerBridgedStringMap; + +typedef struct { + const SignalBridgedStringMap *raw; +} SignalConstPointerBridgedStringMap; + +typedef struct { + SignalSgxClientState *raw; +} SignalMutPointerSgxClientState; + +typedef struct { + /** + * Telephone number, as an unformatted e164. + */ + uint64_t e164; + uint8_t rawAciUuid[16]; + uint8_t rawPniUuid[16]; +} SignalFfiCdsiLookupResponseEntry; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalFfiCdsiLookupResponseEntry *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfFfiCdsiLookupResponseEntry; + +typedef struct { + SignalOwnedBufferOfFfiCdsiLookupResponseEntry entries; + int32_t debug_permits_used; +} SignalFfiCdsiLookupResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalFfiCdsiLookupResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseFfiCdsiLookupResponse; + +typedef struct { + const SignalCdsiLookup *raw; +} SignalConstPointerCdsiLookup; + +typedef struct { + SignalCdsiLookup *raw; +} SignalMutPointerCdsiLookup; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerCdsiLookup *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerCdsiLookup; + +typedef struct { + const SignalLookupRequest *raw; +} SignalConstPointerLookupRequest; + +typedef struct { + const SignalChatConnectionInfo *raw; +} SignalConstPointerChatConnectionInfo; + +typedef struct { + SignalCiphertextMessage *raw; +} SignalMutPointerCiphertextMessage; + +typedef struct { + const SignalPlaintextContent *raw; +} SignalConstPointerPlaintextContent; + +typedef struct { + const SignalCiphertextMessage *raw; +} SignalConstPointerCiphertextMessage; + +typedef struct { + SignalConnectionInfo *raw; +} SignalMutPointerConnectionInfo; + +typedef struct { + SignalConnectionManager *raw; +} SignalMutPointerConnectionManager; + +typedef struct { + const SignalConnectionProxyConfig *raw; +} SignalConstPointerConnectionProxyConfig; + +typedef struct { + SignalConnectionProxyConfig *raw; +} SignalMutPointerConnectionProxyConfig; + +typedef struct { + const SignalMessage *raw; +} SignalConstPointerSignalMessage; + +typedef struct { + SignalSessionRecord *raw; +} SignalMutPointerSessionRecord; + +typedef int (*SignalFfiBridgeSessionStoreLoadSession)(void *ctx, SignalMutPointerSessionRecord *out, SignalMutPointerProtocolAddress address); + +typedef int (*SignalFfiBridgeSessionStoreStoreSession)(void *ctx, SignalMutPointerProtocolAddress address, SignalMutPointerSessionRecord record); + +typedef void (*SignalFfiBridgeSessionStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeSessionStoreLoadSession load_session; + SignalFfiBridgeSessionStoreStoreSession store_session; + SignalFfiBridgeSessionStoreDestroy destroy; +} SignalFfiBridgeSessionStoreStruct; + +typedef SignalFfiBridgeSessionStoreStruct SignalSessionStore; + +typedef struct { + const SignalSessionStore *raw; +} SignalConstPointerFfiSessionStoreStruct; + +typedef struct { + SignalPublicKey *raw; +} SignalMutPointerPublicKey; + +typedef struct { + SignalMutPointerPrivateKey first; + SignalMutPointerPublicKey second; +} SignalPairOfMutPointerPrivateKeyMutPointerPublicKey; + +typedef int (*SignalFfiBridgeIdentityKeyStoreGetLocalIdentityKeyPair)(void *ctx, SignalPairOfMutPointerPrivateKeyMutPointerPublicKey *out); + +typedef int (*SignalFfiBridgeIdentityKeyStoreGetLocalRegistrationId)(void *ctx, uint32_t *out); + +typedef int (*SignalFfiBridgeIdentityKeyStoreGetIdentityKey)(void *ctx, SignalMutPointerPublicKey *out, SignalMutPointerProtocolAddress address); + +typedef int (*SignalFfiBridgeIdentityKeyStoreSaveIdentityKey)(void *ctx, uint8_t *out, SignalMutPointerProtocolAddress address, SignalMutPointerPublicKey public_key); + +typedef int (*SignalFfiBridgeIdentityKeyStoreIsTrustedIdentity)(void *ctx, bool *out, SignalMutPointerProtocolAddress address, SignalMutPointerPublicKey public_key, uint32_t direction); + +typedef void (*SignalFfiBridgeIdentityKeyStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeIdentityKeyStoreGetLocalIdentityKeyPair get_local_identity_key_pair; + SignalFfiBridgeIdentityKeyStoreGetLocalRegistrationId get_local_registration_id; + SignalFfiBridgeIdentityKeyStoreGetIdentityKey get_identity_key; + SignalFfiBridgeIdentityKeyStoreSaveIdentityKey save_identity_key; + SignalFfiBridgeIdentityKeyStoreIsTrustedIdentity is_trusted_identity; + SignalFfiBridgeIdentityKeyStoreDestroy destroy; +} SignalFfiBridgeIdentityKeyStoreStruct; + +typedef SignalFfiBridgeIdentityKeyStoreStruct SignalIdentityKeyStore; + +typedef struct { + const SignalIdentityKeyStore *raw; +} SignalConstPointerFfiIdentityKeyStoreStruct; + +typedef struct { + const SignalPreKeySignalMessage *raw; +} SignalConstPointerPreKeySignalMessage; + +typedef struct { + SignalPreKeyRecord *raw; +} SignalMutPointerPreKeyRecord; + +typedef int (*SignalFfiBridgePreKeyStoreLoadPreKey)(void *ctx, SignalMutPointerPreKeyRecord *out, uint32_t id); + +typedef int (*SignalFfiBridgePreKeyStoreStorePreKey)(void *ctx, uint32_t id, SignalMutPointerPreKeyRecord record); + +typedef int (*SignalFfiBridgePreKeyStoreRemovePreKey)(void *ctx, uint32_t id); + +typedef void (*SignalFfiBridgePreKeyStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgePreKeyStoreLoadPreKey load_pre_key; + SignalFfiBridgePreKeyStoreStorePreKey store_pre_key; + SignalFfiBridgePreKeyStoreRemovePreKey remove_pre_key; + SignalFfiBridgePreKeyStoreDestroy destroy; +} SignalFfiBridgePreKeyStoreStruct; + +typedef SignalFfiBridgePreKeyStoreStruct SignalPreKeyStore; + +typedef struct { + const SignalPreKeyStore *raw; +} SignalConstPointerFfiPreKeyStoreStruct; + +typedef struct { + SignalSignedPreKeyRecord *raw; +} SignalMutPointerSignedPreKeyRecord; + +typedef int (*SignalFfiBridgeSignedPreKeyStoreLoadSignedPreKey)(void *ctx, SignalMutPointerSignedPreKeyRecord *out, uint32_t id); + +typedef int (*SignalFfiBridgeSignedPreKeyStoreStoreSignedPreKey)(void *ctx, uint32_t id, SignalMutPointerSignedPreKeyRecord record); + +typedef void (*SignalFfiBridgeSignedPreKeyStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeSignedPreKeyStoreLoadSignedPreKey load_signed_pre_key; + SignalFfiBridgeSignedPreKeyStoreStoreSignedPreKey store_signed_pre_key; + SignalFfiBridgeSignedPreKeyStoreDestroy destroy; +} SignalFfiBridgeSignedPreKeyStoreStruct; + +typedef SignalFfiBridgeSignedPreKeyStoreStruct SignalSignedPreKeyStore; + +typedef struct { + const SignalSignedPreKeyStore *raw; +} SignalConstPointerFfiSignedPreKeyStoreStruct; + +typedef struct { + SignalKyberPreKeyRecord *raw; +} SignalMutPointerKyberPreKeyRecord; + +typedef int (*SignalFfiBridgeKyberPreKeyStoreLoadKyberPreKey)(void *ctx, SignalMutPointerKyberPreKeyRecord *out, uint32_t id); + +typedef int (*SignalFfiBridgeKyberPreKeyStoreStoreKyberPreKey)(void *ctx, uint32_t id, SignalMutPointerKyberPreKeyRecord record); + +typedef int (*SignalFfiBridgeKyberPreKeyStoreMarkKyberPreKeyUsed)(void *ctx, uint32_t id, uint32_t ec_prekey_id, SignalMutPointerPublicKey base_key); + +typedef void (*SignalFfiBridgeKyberPreKeyStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeKyberPreKeyStoreLoadKyberPreKey load_kyber_pre_key; + SignalFfiBridgeKyberPreKeyStoreStoreKyberPreKey store_kyber_pre_key; + SignalFfiBridgeKyberPreKeyStoreMarkKyberPreKeyUsed mark_kyber_pre_key_used; + SignalFfiBridgeKyberPreKeyStoreDestroy destroy; +} SignalFfiBridgeKyberPreKeyStoreStruct; + +typedef SignalFfiBridgeKyberPreKeyStoreStruct SignalKyberPreKeyStore; + +typedef struct { + const SignalKyberPreKeyStore *raw; +} SignalConstPointerFfiKyberPreKeyStoreStruct; + +typedef struct { + SignalDecryptionErrorMessage *raw; +} SignalMutPointerDecryptionErrorMessage; + +typedef struct { + const SignalDecryptionErrorMessage *raw; +} SignalConstPointerDecryptionErrorMessage; + +/** + * Like [`std::panic::AssertUnwindSafe`], but FFI-compatible. + */ +typedef const SignalFfiError *SignalUnwindSafeArgSignalFfiError; + +typedef struct { + const char *first; + uint32_t second; +} SignalPairOfc_charu32; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + uint32_t *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfu32; + +typedef struct { + SignalServiceIdFixedWidthBinaryBytes account; + SignalOwnedBufferOfu32 missing_devices; + SignalOwnedBufferOfu32 extra_devices; + SignalOwnedBufferOfu32 stale_devices; +} SignalFfiMismatchedDevicesError; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalFfiMismatchedDevicesError *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfFfiMismatchedDevicesError; + +typedef struct { + const char *first; + SignalOwnedBuffer second; +} SignalPairOfc_charOwnedBufferOfc_uchar; + +typedef struct { + const char *first; + bool second; +} SignalPairOfc_charbool; + +typedef struct { + SignalFingerprint *raw; +} SignalMutPointerFingerprint; + +typedef struct { + const SignalFingerprint *raw; +} SignalConstPointerFingerprint; + +typedef struct { + const SignalPublicKey *raw; +} SignalConstPointerPublicKey; + +typedef struct { + /** + * The badge ID. + */ + const char *id; + /** + * Whether the badge is currently configured to be visible. + */ + bool visible; + /** + * When the badge expires. + */ + double expiration_secs; +} SignalFfiRegisterResponseBadge; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalFfiRegisterResponseBadge *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfFfiRegisterResponseBadge; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalServiceIdFixedWidthBinaryBytes *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfServiceIdFixedWidthBinaryBytes; + +typedef struct { + SignalPreKeyBundle *raw; +} SignalMutPointerPreKeyBundle; + +/** + * A representation of a array allocated on the Rust heap for use in C code. + */ +typedef struct { + SignalMutPointerPreKeyBundle *base; + /** + * The number of elements in the buffer (not necessarily the number of bytes). + */ + size_t length; +} SignalOwnedBufferOfMutPointerPreKeyBundle; + +typedef struct { + SignalSenderKeyRecord *raw; +} SignalMutPointerSenderKeyRecord; + +typedef int (*SignalFfiBridgeSenderKeyStoreLoadSenderKey)(void *ctx, SignalMutPointerSenderKeyRecord *out, SignalMutPointerProtocolAddress sender, SignalUuid distribution_id); + +typedef int (*SignalFfiBridgeSenderKeyStoreStoreSenderKey)(void *ctx, SignalMutPointerProtocolAddress sender, SignalUuid distribution_id, SignalMutPointerSenderKeyRecord record); + +typedef void (*SignalFfiBridgeSenderKeyStoreDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeSenderKeyStoreLoadSenderKey load_sender_key; + SignalFfiBridgeSenderKeyStoreStoreSenderKey store_sender_key; + SignalFfiBridgeSenderKeyStoreDestroy destroy; +} SignalFfiBridgeSenderKeyStoreStruct; + +typedef SignalFfiBridgeSenderKeyStoreStruct SignalSenderKeyStore; + +typedef struct { + const SignalSenderKeyStore *raw; +} SignalConstPointerFfiSenderKeyStoreStruct; + +typedef struct { + const SignalServerSecretParams *raw; +} SignalConstPointerServerSecretParams; + +typedef struct { + const SignalBorrowedBuffer *base; + size_t length; +} SignalBorrowedSliceOfBuffers; + +typedef struct { + const SignalServerPublicParams *raw; +} SignalConstPointerServerPublicParams; + +typedef struct { + SignalHsmEnclaveClient *raw; +} SignalMutPointerHsmEnclaveClient; + +typedef struct { + const SignalHsmEnclaveClient *raw; +} SignalConstPointerHsmEnclaveClient; + +typedef struct { + SignalHttpRequest *raw; +} SignalMutPointerHttpRequest; + +typedef struct { + SignalMutPointerPublicKey first; + SignalMutPointerPrivateKey second; +} SignalPairOfMutPointerPublicKeyMutPointerPrivateKey; + +typedef struct { + const SignalPrivateKey *raw; +} SignalConstPointerPrivateKey; + +typedef struct { + SignalIncrementalMac *raw; +} SignalMutPointerIncrementalMac; + +typedef void (*SignalLogCallback)(void *ctx, SignalLogLevel level, const char *file, uint32_t line, const char *message); + +typedef void (*SignalLogFlushCallback)(void *ctx); + +typedef struct { + void *ctx; + SignalLogCallback log; + SignalLogFlushCallback flush; +} SignalFfiLogger; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalOwnedBuffer *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseOwnedBufferOfc_uchar; + +typedef struct { + const SignalUnauthenticatedChatConnection *raw; +} SignalConstPointerUnauthenticatedChatConnection; + +typedef struct { + bool present; + SignalBorrowedBuffer value; +} SignalOptionalBorrowedSliceOfc_uchar; + +typedef SignalKeyPair SignalKyberKeyPair; + +typedef struct { + SignalKyberKeyPair *raw; +} SignalMutPointerKyberKeyPair; + +typedef struct { + const SignalKyberKeyPair *raw; +} SignalConstPointerKyberKeyPair; + +typedef SignalPublicKey SignalKyberPublicKey; + +typedef struct { + SignalKyberPublicKey *raw; +} SignalMutPointerKyberPublicKey; + +/** + * A KEM secret key with the ability to decapsulate a shared secret. + */ +typedef SignalKeySecret SignalSecretKey; + +typedef SignalSecretKey SignalKyberSecretKey; + +typedef struct { + SignalKyberSecretKey *raw; +} SignalMutPointerKyberSecretKey; + +typedef struct { + const SignalKyberPreKeyRecord *raw; +} SignalConstPointerKyberPreKeyRecord; + +typedef struct { + const SignalKyberPublicKey *raw; +} SignalConstPointerKyberPublicKey; + +typedef struct { + const SignalKyberSecretKey *raw; +} SignalConstPointerKyberSecretKey; + +typedef struct { + SignalLookupRequest *raw; +} SignalMutPointerLookupRequest; + +typedef struct { + SignalMessageBackupKey *raw; +} SignalMutPointerMessageBackupKey; + +typedef struct { + const SignalMessageBackupKey *raw; +} SignalConstPointerMessageBackupKey; + +typedef struct { + SignalMessageBackupValidationOutcome *raw; +} SignalMutPointerMessageBackupValidationOutcome; + +typedef struct { + const SignalMessageBackupValidationOutcome *raw; +} SignalConstPointerMessageBackupValidationOutcome; + +typedef int (*SignalFfiBridgeInputStreamRead)(void *ctx, size_t *out, SignalBorrowedMutableBuffer buf); + +typedef int (*SignalFfiBridgeInputStreamSkip)(void *ctx, uint64_t amount); + +typedef void (*SignalFfiBridgeInputStreamDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiBridgeInputStreamRead read; + SignalFfiBridgeInputStreamSkip skip; + SignalFfiBridgeInputStreamDestroy destroy; +} SignalFfiBridgeInputStreamStruct; + +typedef SignalFfiBridgeInputStreamStruct SignalInputStream; + +typedef struct { + const SignalInputStream *raw; +} SignalConstPointerFfiInputStreamStruct; + +typedef struct { + SignalMessage *raw; +} SignalMutPointerSignalMessage; + +typedef struct { + SignalSanitizedMetadata *raw; +} SignalMutPointerSanitizedMetadata; + +typedef struct { + SignalOnlineBackupValidator *raw; +} SignalMutPointerOnlineBackupValidator; + +typedef struct { + const SignalPinHash *raw; +} SignalConstPointerPinHash; + +typedef struct { + SignalPinHash *raw; +} SignalMutPointerPinHash; + +typedef struct { + SignalPlaintextContent *raw; +} SignalMutPointerPlaintextContent; + +typedef struct { + const SignalPreKeyBundle *raw; +} SignalConstPointerPreKeyBundle; + +typedef struct { + const SignalPreKeyRecord *raw; +} SignalConstPointerPreKeyRecord; + +typedef struct { + SignalPreKeySignalMessage *raw; +} SignalMutPointerPreKeySignalMessage; + +typedef struct { + const SignalSenderKeyDistributionMessage *raw; +} SignalConstPointerSenderKeyDistributionMessage; + +typedef struct { + SignalProvisioningChatConnection *raw; +} SignalMutPointerProvisioningChatConnection; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerProvisioningChatConnection *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerProvisioningChatConnection; + +typedef struct { + const SignalProvisioningChatConnection *raw; +} SignalConstPointerProvisioningChatConnection; + +typedef int (*SignalFfiProvisioningListenerReceivedAddress)(void *ctx, const char *address, SignalMutPointerServerMessageAck send_ack); + +typedef int (*SignalFfiProvisioningListenerReceivedEnvelope)(void *ctx, SignalOwnedBuffer envelope, SignalMutPointerServerMessageAck send_ack); + +typedef int (*SignalFfiProvisioningListenerConnectionInterrupted)(void *ctx, SignalFfiError *disconnect_cause); + +typedef void (*SignalFfiProvisioningListenerDestroy)(void *ctx); + +typedef struct { + void *ctx; + SignalFfiProvisioningListenerReceivedAddress received_address; + SignalFfiProvisioningListenerReceivedEnvelope received_envelope; + SignalFfiProvisioningListenerConnectionInterrupted connection_interrupted; + SignalFfiProvisioningListenerDestroy destroy; +} SignalFfiProvisioningListenerStruct; + +typedef struct { + const SignalFfiProvisioningListenerStruct *raw; +} SignalConstPointerFfiProvisioningListenerStruct; + +typedef struct { + SignalRegisterAccountRequest *raw; +} SignalMutPointerRegisterAccountRequest; + +typedef struct { + const SignalRegisterAccountRequest *raw; +} SignalConstPointerRegisterAccountRequest; + +typedef struct { + uint32_t key_id; + SignalFfiPublicKeyType public_key_type; + const void *public_key; + SignalBorrowedBuffer signature; +} SignalFfiSignedPublicPreKey; + +typedef struct { + SignalRegisterAccountResponse *raw; +} SignalMutPointerRegisterAccountResponse; + +typedef struct { + const SignalRegisterAccountResponse *raw; +} SignalConstPointerRegisterAccountResponse; + +typedef struct { + bool present; + uint8_t bytes[16]; +} SignalOptionalUuid; + +typedef SignalAccountAttributes SignalRegistrationAccountAttributes; + +typedef struct { + SignalRegistrationAccountAttributes *raw; +} SignalMutPointerRegistrationAccountAttributes; + +typedef struct { + /** + * Bridged as a string of bytes, but each entry is a UTF-8 `String` key + * concatenated with a byte for the value. + */ + SignalBytestringArray entries; +} SignalFfiCheckSvr2CredentialsResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalFfiCheckSvr2CredentialsResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseFfiCheckSvr2CredentialsResponse; + +typedef struct { + const SignalRegistrationService *raw; +} SignalConstPointerRegistrationService; + +typedef struct { + SignalRegistrationService *raw; +} SignalMutPointerRegistrationService; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerRegistrationService *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerRegistrationService; + +typedef struct { + const char *number; + const char *push_token; + const char *mcc; + const char *mnc; +} SignalFfiRegistrationCreateSessionRequest; + +typedef const SignalConnectionManager *(*SignalGetConnectChatConnectionManager)(void *ctx); + +typedef void (*SignalDestroyConnectChatBridge)(void *ctx); + +/** + * A ref-counting pointer to a [`ConnectionManager`] and a callback to + * decrement the count. + */ +typedef struct { + void *ctx; + SignalGetConnectChatConnectionManager get_connection_manager; + SignalDestroyConnectChatBridge destroy; +} SignalFfiConnectChatBridgeStruct; + +typedef struct { + const SignalFfiConnectChatBridgeStruct *raw; +} SignalConstPointerFfiConnectChatBridgeStruct; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerRegisterAccountResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerRegisterAccountResponse; + +typedef struct { + const SignalRegistrationAccountAttributes *raw; +} SignalConstPointerRegistrationAccountAttributes; + +typedef struct { + SignalRegistrationSession *raw; +} SignalMutPointerRegistrationSession; + +typedef struct { + const SignalRegistrationSession *raw; +} SignalConstPointerRegistrationSession; + +typedef struct { + const SignalSanitizedMetadata *raw; +} SignalConstPointerSanitizedMetadata; + +typedef struct { + const SignalConstPointerProtocolAddress *base; + size_t length; +} SignalBorrowedSliceOfConstPointerProtocolAddress; + +typedef struct { + const SignalSessionRecord *raw; +} SignalConstPointerSessionRecord; + +typedef struct { + const SignalConstPointerSessionRecord *base; + size_t length; +} SignalBorrowedSliceOfConstPointerSessionRecord; + +typedef struct { + const SignalUnidentifiedSenderMessageContent *raw; +} SignalConstPointerUnidentifiedSenderMessageContent; + +typedef struct { + SignalUnidentifiedSenderMessageContent *raw; +} SignalMutPointerUnidentifiedSenderMessageContent; + +typedef uint8_t SignalBackupKeyBytes[SignalBACKUP_KEY_LEN]; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerBackupRestoreResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerBackupRestoreResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerBackupStoreResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerBackupStoreResponse; + +typedef struct { + SignalSenderCertificate *raw; +} SignalMutPointerSenderCertificate; + +typedef struct { + const SignalSenderCertificate *raw; +} SignalConstPointerSenderCertificate; + +typedef struct { + SignalServerCertificate *raw; +} SignalMutPointerServerCertificate; + +typedef struct { + const SignalServerCertificate *raw; +} SignalConstPointerServerCertificate; + +typedef struct { + const SignalConstPointerPublicKey *base; + size_t length; +} SignalBorrowedSliceOfConstPointerPublicKey; + +typedef struct { + SignalSenderKeyDistributionMessage *raw; +} SignalMutPointerSenderKeyDistributionMessage; + +typedef struct { + SignalSenderKeyMessage *raw; +} SignalMutPointerSenderKeyMessage; + +typedef struct { + const SignalSenderKeyMessage *raw; +} SignalConstPointerSenderKeyMessage; + +typedef struct { + const SignalSenderKeyRecord *raw; +} SignalConstPointerSenderKeyRecord; + +typedef struct { + const SignalServerMessageAck *raw; +} SignalConstPointerServerMessageAck; + +typedef struct { + SignalServerPublicParams *raw; +} SignalMutPointerServerPublicParams; + +typedef struct { + SignalServerSecretParams *raw; +} SignalMutPointerServerSecretParams; + +typedef struct { + const SignalSgxClientState *raw; +} SignalConstPointerSgxClientState; + +typedef struct { + const SignalSignedPreKeyRecord *raw; +} SignalConstPointerSignedPreKeyRecord; + +typedef struct { + SignalTokioAsyncContext *raw; +} SignalMutPointerTokioAsyncContext; + +typedef struct { + SignalUnauthenticatedChatConnection *raw; +} SignalMutPointerUnauthenticatedChatConnection; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalMutPointerUnauthenticatedChatConnection *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseMutPointerUnauthenticatedChatConnection; + +typedef struct { + SignalMutPointerPublicKey identity_key; + SignalOwnedBufferOfMutPointerPreKeyBundle pre_key_bundles; +} SignalFfiPreKeysResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalFfiPreKeysResponse *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseFfiPreKeysResponse; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalOptionalUuid *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseOptionalUuid; + +typedef struct { + bool present; + const char *first; + uint8_t second[32]; +} SignalOptionalPairOfc_charu832; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalOptionalPairOfc_charu832 *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseOptionalPairOfc_charu832; + +/** + * A C callback used to report the results of Rust futures. + * + * cbindgen will produce independent C types like `SignalCPromisei32` and + * `SignalCPromiseProtocolAddress`. + * + * This derives Copy because it behaves like a C type; nevertheless, a promise should still only be + * completed once. + */ +typedef struct { + void (*complete)(SignalFfiError *error, const SignalOwnedBufferOfServiceIdFixedWidthBinaryBytes *result, const void *context); + const void *context; + SignalCancellationId cancellation_id; +} SignalCPromiseOwnedBufferOfServiceIdFixedWidthBinaryBytes; + +typedef struct { + SignalValidatingMac *raw; +} SignalMutPointerValidatingMac; + +typedef SignalFfiBridgeInputStreamStruct SignalFfiBridgeSyncInputStreamStruct; + +typedef SignalFfiBridgeSyncInputStreamStruct SignalSyncInputStream; + +typedef struct { + const SignalSyncInputStream *raw; +} SignalConstPointerFfiSyncInputStreamStruct; + +typedef uint8_t SignalRandomnessBytes[SignalRANDOMNESS_LEN]; + +typedef uint8_t SignalUnidentifiedAccessKey[SignalACCESS_KEY_LEN]; + + + +SignalFfiError *signal_account_entropy_pool_derive_backup_key(uint8_t (*out)[SignalBACKUP_KEY_LEN], const char *account_entropy); + +SignalFfiError *signal_account_entropy_pool_derive_svr_key(uint8_t (*out)[SignalSVR_KEY_LEN], const char *account_entropy); + +SignalFfiError *signal_account_entropy_pool_generate(const char **out); + +SignalFfiError *signal_account_entropy_pool_is_valid(bool *out, const char *account_entropy); + +SignalFfiError *signal_address_clone(SignalMutPointerProtocolAddress *new_obj, SignalConstPointerProtocolAddress obj); + +SignalFfiError *signal_address_destroy(SignalMutPointerProtocolAddress p); + +SignalFfiError *signal_address_get_device_id(uint32_t *out, SignalConstPointerProtocolAddress obj); + +SignalFfiError *signal_address_get_name(const char **out, SignalConstPointerProtocolAddress obj); + +SignalFfiError *signal_address_new(SignalMutPointerProtocolAddress *out, const char *name, uint32_t device_id); + +SignalFfiError *signal_aes256_ctr32_destroy(SignalMutPointerAes256Ctr32 p); + +SignalFfiError *signal_aes256_ctr32_new(SignalMutPointerAes256Ctr32 *out, SignalBorrowedBuffer key, SignalBorrowedBuffer nonce, uint32_t initial_ctr); + +SignalFfiError *signal_aes256_ctr32_process(SignalMutPointerAes256Ctr32 ctr, SignalBorrowedMutableBuffer data, uint32_t offset, uint32_t length); + +SignalFfiError *signal_aes256_gcm_decryption_destroy(SignalMutPointerAes256GcmDecryption p); + +SignalFfiError *signal_aes256_gcm_decryption_new(SignalMutPointerAes256GcmDecryption *out, SignalBorrowedBuffer key, SignalBorrowedBuffer nonce, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_aes256_gcm_decryption_update(SignalMutPointerAes256GcmDecryption gcm, SignalBorrowedMutableBuffer data, uint32_t offset, uint32_t length); + +SignalFfiError *signal_aes256_gcm_decryption_verify_tag(bool *out, SignalMutPointerAes256GcmDecryption gcm, SignalBorrowedBuffer tag); + +SignalFfiError *signal_aes256_gcm_encryption_compute_tag(SignalOwnedBuffer *out, SignalMutPointerAes256GcmEncryption gcm); + +SignalFfiError *signal_aes256_gcm_encryption_destroy(SignalMutPointerAes256GcmEncryption p); + +SignalFfiError *signal_aes256_gcm_encryption_new(SignalMutPointerAes256GcmEncryption *out, SignalBorrowedBuffer key, SignalBorrowedBuffer nonce, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_aes256_gcm_encryption_update(SignalMutPointerAes256GcmEncryption gcm, SignalBorrowedMutableBuffer data, uint32_t offset, uint32_t length); + +SignalFfiError *signal_aes256_gcm_siv_decrypt(SignalOwnedBuffer *out, SignalConstPointerAes256GcmSiv aes_gcm_siv, SignalBorrowedBuffer ctext, SignalBorrowedBuffer nonce, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_aes256_gcm_siv_destroy(SignalMutPointerAes256GcmSiv p); + +SignalFfiError *signal_aes256_gcm_siv_encrypt(SignalOwnedBuffer *out, SignalConstPointerAes256GcmSiv aes_gcm_siv_obj, SignalBorrowedBuffer ptext, SignalBorrowedBuffer nonce, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_aes256_gcm_siv_new(SignalMutPointerAes256GcmSiv *out, SignalBorrowedBuffer key); + +SignalFfiError *signal_auth_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_auth_credential_presentation_get_pni_ciphertext(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_auth_credential_presentation_get_redemption_time(uint64_t *out, SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_auth_credential_presentation_get_uuid_ciphertext(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_auth_credential_with_pni_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_auth_credential_with_pni_response_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_authenticated_chat_connection_connect(SignalCPromiseMutPointerAuthenticatedChatConnection *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, const char *username, const char *password, bool receive_stories, SignalBorrowedBytestringArray languages); + +SignalFfiError *signal_authenticated_chat_connection_destroy(SignalMutPointerAuthenticatedChatConnection p); + +SignalFfiError *signal_authenticated_chat_connection_disconnect(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat); + +SignalFfiError *signal_authenticated_chat_connection_info(SignalMutPointerChatConnectionInfo *out, SignalConstPointerAuthenticatedChatConnection chat); + +SignalFfiError *signal_authenticated_chat_connection_init_listener(SignalConstPointerAuthenticatedChatConnection chat, SignalConstPointerFfiChatListenerStruct listener); + +SignalFfiError *signal_authenticated_chat_connection_preconnect(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager); + +SignalFfiError *signal_authenticated_chat_connection_send(SignalCPromiseFfiChatResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, SignalConstPointerHttpRequest http_request, uint32_t timeout_millis); + +SignalFfiError *signal_backup_auth_credential_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_backup_auth_credential_get_backup_id(uint8_t (*out)[16], SignalBorrowedBuffer credential_bytes); + +SignalFfiError *signal_backup_auth_credential_get_backup_level(uint8_t *out, SignalBorrowedBuffer credential_bytes); + +SignalFfiError *signal_backup_auth_credential_get_type(uint8_t *out, SignalBorrowedBuffer credential_bytes); + +SignalFfiError *signal_backup_auth_credential_present_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer credential_bytes, SignalBorrowedBuffer server_params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_backup_auth_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_backup_auth_credential_presentation_verify(SignalBorrowedBuffer presentation_bytes, uint64_t now, SignalBorrowedBuffer server_params_bytes); + +SignalFfiError *signal_backup_auth_credential_request_check_valid_contents(SignalBorrowedBuffer request_bytes); + +SignalFfiError *signal_backup_auth_credential_request_context_check_valid_contents(SignalBorrowedBuffer context_bytes); + +SignalFfiError *signal_backup_auth_credential_request_context_get_request(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes); + +SignalFfiError *signal_backup_auth_credential_request_context_new(SignalOwnedBuffer *out, const uint8_t (*backup_key)[32], SignalUuid uuid); + +SignalFfiError *signal_backup_auth_credential_request_context_receive_response(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes, SignalBorrowedBuffer response_bytes, uint64_t expected_redemption_time, SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_backup_auth_credential_request_issue_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer request_bytes, uint64_t redemption_time, uint8_t backup_level, uint8_t credential_type, SignalBorrowedBuffer params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_backup_auth_credential_response_check_valid_contents(SignalBorrowedBuffer response_bytes); + +SignalFfiError *signal_backup_key_derive_backup_id(uint8_t (*out)[16], const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN], const SignalServiceIdFixedWidthBinaryBytes *aci); + +SignalFfiError *signal_backup_key_derive_ec_key(SignalMutPointerPrivateKey *out, const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN], const SignalServiceIdFixedWidthBinaryBytes *aci); + +SignalFfiError *signal_backup_key_derive_local_backup_metadata_key(uint8_t (*out)[SignalLOCAL_BACKUP_METADATA_KEY_LEN], const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN]); + +SignalFfiError *signal_backup_key_derive_media_encryption_key(uint8_t (*out)[SignalMEDIA_ENCRYPTION_KEY_LEN], const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN], const uint8_t (*media_id)[SignalMEDIA_ID_LEN]); + +SignalFfiError *signal_backup_key_derive_media_id(uint8_t (*out)[SignalMEDIA_ID_LEN], const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN], const char *media_name); + +SignalFfiError *signal_backup_key_derive_thumbnail_transit_encryption_key(uint8_t (*out)[SignalMEDIA_ENCRYPTION_KEY_LEN], const uint8_t (*backup_key)[SignalBACKUP_KEY_LEN], const uint8_t (*media_id)[SignalMEDIA_ID_LEN]); + +SignalFfiError *signal_backup_restore_response_destroy(SignalMutPointerBackupRestoreResponse p); + +SignalFfiError *signal_backup_restore_response_get_forward_secrecy_token(uint8_t (*out)[SignalBACKUP_FORWARD_SECRECY_TOKEN_LEN], SignalConstPointerBackupRestoreResponse response); + +SignalFfiError *signal_backup_restore_response_get_next_backup_secret_data(SignalOwnedBuffer *out, SignalConstPointerBackupRestoreResponse response); + +SignalFfiError *signal_backup_store_response_destroy(SignalMutPointerBackupStoreResponse p); + +SignalFfiError *signal_backup_store_response_get_forward_secrecy_token(uint8_t (*out)[SignalBACKUP_FORWARD_SECRECY_TOKEN_LEN], SignalConstPointerBackupStoreResponse response); + +SignalFfiError *signal_backup_store_response_get_next_backup_secret_data(SignalOwnedBuffer *out, SignalConstPointerBackupStoreResponse response); + +SignalFfiError *signal_backup_store_response_get_opaque_metadata(SignalOwnedBuffer *out, SignalConstPointerBackupStoreResponse response); + +SignalFfiError *signal_bridged_string_map_clone(SignalMutPointerBridgedStringMap *new_obj, SignalConstPointerBridgedStringMap obj); + +SignalFfiError *signal_bridged_string_map_destroy(SignalMutPointerBridgedStringMap p); + +SignalFfiError *signal_bridged_string_map_insert(SignalMutPointerBridgedStringMap map, const char *key, const char *value); + +SignalFfiError *signal_bridged_string_map_new(SignalMutPointerBridgedStringMap *out, uint32_t initial_capacity); + +SignalFfiError *signal_call_link_auth_credential_check_valid_contents(SignalBorrowedBuffer credential_bytes); + +SignalFfiError *signal_call_link_auth_credential_present_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer credential_bytes, const SignalServiceIdFixedWidthBinaryBytes *user_id, uint64_t redemption_time, SignalBorrowedBuffer server_params_bytes, SignalBorrowedBuffer call_link_params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_call_link_auth_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_call_link_auth_credential_presentation_get_user_id(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_call_link_auth_credential_presentation_verify(SignalBorrowedBuffer presentation_bytes, uint64_t now, SignalBorrowedBuffer server_params_bytes, SignalBorrowedBuffer call_link_params_bytes); + +SignalFfiError *signal_call_link_auth_credential_response_check_valid_contents(SignalBorrowedBuffer response_bytes); + +SignalFfiError *signal_call_link_auth_credential_response_issue_deterministic(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *user_id, uint64_t redemption_time, SignalBorrowedBuffer params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_call_link_auth_credential_response_receive(SignalOwnedBuffer *out, SignalBorrowedBuffer response_bytes, const SignalServiceIdFixedWidthBinaryBytes *user_id, uint64_t redemption_time, SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_call_link_public_params_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_call_link_secret_params_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_call_link_secret_params_decrypt_user_id(SignalServiceIdFixedWidthBinaryBytes *out, SignalBorrowedBuffer params_bytes, const unsigned char (*user_id)[SignalUUID_CIPHERTEXT_LEN]); + +SignalFfiError *signal_call_link_secret_params_derive_from_root_key(SignalOwnedBuffer *out, SignalBorrowedBuffer root_key); + +SignalFfiError *signal_call_link_secret_params_encrypt_user_id(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], SignalBorrowedBuffer params_bytes, const SignalServiceIdFixedWidthBinaryBytes *user_id); + +SignalFfiError *signal_call_link_secret_params_get_public_params(SignalOwnedBuffer *out, SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_cds2_client_state_new(SignalMutPointerSgxClientState *out, SignalBorrowedBuffer mrenclave, SignalBorrowedBuffer attestation_msg, uint64_t current_timestamp); + +SignalFfiError *signal_cdsi_lookup_complete(SignalCPromiseFfiCdsiLookupResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerCdsiLookup lookup); + +SignalFfiError *signal_cdsi_lookup_destroy(SignalMutPointerCdsiLookup p); + +SignalFfiError *signal_cdsi_lookup_new(SignalCPromiseMutPointerCdsiLookup *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, const char *username, const char *password, SignalConstPointerLookupRequest request); + +SignalFfiError *signal_cdsi_lookup_token(SignalOwnedBuffer *out, SignalConstPointerCdsiLookup lookup); + +SignalFfiError *signal_chat_connection_info_description(const char **out, SignalConstPointerChatConnectionInfo connection_info); + +SignalFfiError *signal_chat_connection_info_ip_version(uint8_t *out, SignalConstPointerChatConnectionInfo connection_info); + +SignalFfiError *signal_chat_connection_info_local_port(uint16_t *out, SignalConstPointerChatConnectionInfo connection_info); + +SignalFfiError *signal_ciphertext_message_destroy(SignalMutPointerCiphertextMessage p); + +SignalFfiError *signal_ciphertext_message_from_plaintext_content(SignalMutPointerCiphertextMessage *out, SignalConstPointerPlaintextContent m); + +SignalFfiError *signal_ciphertext_message_serialize(SignalOwnedBuffer *out, SignalConstPointerCiphertextMessage obj); + +SignalFfiError *signal_ciphertext_message_type(uint8_t *out, SignalConstPointerCiphertextMessage msg); + +SignalFfiError *signal_connection_info_destroy(SignalMutPointerConnectionInfo p); + +SignalFfiError *signal_connection_manager_clear_proxy(SignalConstPointerConnectionManager connection_manager); + +SignalFfiError *signal_connection_manager_destroy(SignalMutPointerConnectionManager p); + +SignalFfiError *signal_connection_manager_new(SignalMutPointerConnectionManager *out, uint8_t environment, const char *user_agent, SignalMutPointerBridgedStringMap remote_config, uint8_t build_variant); + +SignalFfiError *signal_connection_manager_on_network_change(SignalConstPointerConnectionManager connection_manager); + +SignalFfiError *signal_connection_manager_set_censorship_circumvention_enabled(SignalConstPointerConnectionManager connection_manager, bool enabled); + +SignalFfiError *signal_connection_manager_set_invalid_proxy(SignalConstPointerConnectionManager connection_manager); + +SignalFfiError *signal_connection_manager_set_proxy(SignalConstPointerConnectionManager connection_manager, SignalConstPointerConnectionProxyConfig proxy); + +SignalFfiError *signal_connection_manager_set_remote_config(SignalConstPointerConnectionManager connection_manager, SignalMutPointerBridgedStringMap remote_config, uint8_t build_variant); + +SignalFfiError *signal_connection_proxy_config_clone(SignalMutPointerConnectionProxyConfig *new_obj, SignalConstPointerConnectionProxyConfig obj); + +SignalFfiError *signal_connection_proxy_config_destroy(SignalMutPointerConnectionProxyConfig p); + +SignalFfiError *signal_connection_proxy_config_new(SignalMutPointerConnectionProxyConfig *out, const char *scheme, const char *host, int32_t port, const char *username, const char *password); + +SignalFfiError *signal_create_call_link_credential_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_create_call_link_credential_present_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer credential_bytes, SignalBorrowedBuffer room_id, const SignalServiceIdFixedWidthBinaryBytes *user_id, SignalBorrowedBuffer server_params_bytes, SignalBorrowedBuffer call_link_params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_create_call_link_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_create_call_link_credential_presentation_verify(SignalBorrowedBuffer presentation_bytes, SignalBorrowedBuffer room_id, uint64_t now, SignalBorrowedBuffer server_params_bytes, SignalBorrowedBuffer call_link_params_bytes); + +SignalFfiError *signal_create_call_link_credential_request_check_valid_contents(SignalBorrowedBuffer request_bytes); + +SignalFfiError *signal_create_call_link_credential_request_context_check_valid_contents(SignalBorrowedBuffer context_bytes); + +SignalFfiError *signal_create_call_link_credential_request_context_get_request(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes); + +SignalFfiError *signal_create_call_link_credential_request_context_new_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer room_id, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_create_call_link_credential_request_context_receive_response(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes, SignalBorrowedBuffer response_bytes, const SignalServiceIdFixedWidthBinaryBytes *user_id, SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_create_call_link_credential_request_issue_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer request_bytes, const SignalServiceIdFixedWidthBinaryBytes *user_id, uint64_t timestamp, SignalBorrowedBuffer params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_create_call_link_credential_response_check_valid_contents(SignalBorrowedBuffer response_bytes); + +SignalFfiError *signal_decrypt_message(SignalOwnedBuffer *out, SignalConstPointerSignalMessage message, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store); + +SignalFfiError *signal_decrypt_pre_key_message(SignalOwnedBuffer *out, SignalConstPointerPreKeySignalMessage message, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, SignalConstPointerFfiPreKeyStoreStruct prekey_store, SignalConstPointerFfiSignedPreKeyStoreStruct signed_prekey_store, SignalConstPointerFfiKyberPreKeyStoreStruct kyber_prekey_store); + +SignalFfiError *signal_decryption_error_message_clone(SignalMutPointerDecryptionErrorMessage *new_obj, SignalConstPointerDecryptionErrorMessage obj); + +SignalFfiError *signal_decryption_error_message_deserialize(SignalMutPointerDecryptionErrorMessage *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_decryption_error_message_destroy(SignalMutPointerDecryptionErrorMessage p); + +SignalFfiError *signal_decryption_error_message_extract_from_serialized_content(SignalMutPointerDecryptionErrorMessage *out, SignalBorrowedBuffer bytes); + +SignalFfiError *signal_decryption_error_message_for_original_message(SignalMutPointerDecryptionErrorMessage *out, SignalBorrowedBuffer original_bytes, uint8_t original_type, uint64_t original_timestamp, uint32_t original_sender_device_id); + +SignalFfiError *signal_decryption_error_message_get_device_id(uint32_t *out, SignalConstPointerDecryptionErrorMessage obj); + +SignalFfiError *signal_decryption_error_message_get_ratchet_key(SignalMutPointerPublicKey *out, SignalConstPointerDecryptionErrorMessage m); + +SignalFfiError *signal_decryption_error_message_get_timestamp(uint64_t *out, SignalConstPointerDecryptionErrorMessage obj); + +SignalFfiError *signal_decryption_error_message_serialize(SignalOwnedBuffer *out, SignalConstPointerDecryptionErrorMessage obj); + +SignalFfiError *signal_device_transfer_generate_certificate(SignalOwnedBuffer *out, SignalBorrowedBuffer private_key, const char *name, uint32_t days_to_expire); + +SignalFfiError *signal_device_transfer_generate_private_key(SignalOwnedBuffer *out); + +SignalFfiError *signal_device_transfer_generate_private_key_with_format(SignalOwnedBuffer *out, uint8_t key_format); + +SignalFfiError *signal_encrypt_message(SignalMutPointerCiphertextMessage *out, SignalBorrowedBuffer ptext, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, uint64_t now); + +void signal_error_free(SignalFfiError *err); + +SignalFfiError *signal_error_get_address(SignalMutPointerProtocolAddress *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_invalid_protocol_address(SignalPairOfc_charu32 *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_message(const char **out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_mismatched_device_errors(SignalOwnedBufferOfFfiMismatchedDevicesError *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_our_fingerprint_version(uint32_t *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_rate_limit_challenge(SignalPairOfc_charOwnedBufferOfc_uchar *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_registration_error_not_deliverable(SignalPairOfc_charbool *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_registration_lock(uint64_t *out_time_remaining_seconds, const char **out_svr2_username, const char **out_svr2_password, const SignalFfiError *err); + +SignalFfiError *signal_error_get_retry_after_seconds(uint32_t *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_their_fingerprint_version(uint32_t *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_tries_remaining(uint32_t *out, SignalUnwindSafeArgSignalFfiError err); + +uint32_t signal_error_get_type(const SignalFfiError *err); + +SignalFfiError *signal_error_get_unknown_fields(SignalStringArray *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_error_get_uuid(SignalUuid *out, SignalUnwindSafeArgSignalFfiError err); + +SignalFfiError *signal_expiring_profile_key_credential_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_expiring_profile_key_credential_get_expiration_time(uint64_t *out, const unsigned char (*credential)[SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN]); + +SignalFfiError *signal_expiring_profile_key_credential_response_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_fingerprint_clone(SignalMutPointerFingerprint *new_obj, SignalConstPointerFingerprint obj); + +SignalFfiError *signal_fingerprint_compare(bool *out, SignalBorrowedBuffer fprint1, SignalBorrowedBuffer fprint2); + +SignalFfiError *signal_fingerprint_destroy(SignalMutPointerFingerprint p); + +SignalFfiError *signal_fingerprint_display_string(const char **out, SignalConstPointerFingerprint obj); + +SignalFfiError *signal_fingerprint_new(SignalMutPointerFingerprint *out, uint32_t iterations, uint32_t version, SignalBorrowedBuffer local_identifier, SignalConstPointerPublicKey local_key, SignalBorrowedBuffer remote_identifier, SignalConstPointerPublicKey remote_key); + +SignalFfiError *signal_fingerprint_scannable_encoding(SignalOwnedBuffer *out, SignalConstPointerFingerprint obj); + +void signal_free_buffer(const unsigned char *buf, size_t buf_len); + +void signal_free_bytestring_array(SignalBytestringArray array); + +void signal_free_list_of_mismatched_device_errors(SignalOwnedBufferOfFfiMismatchedDevicesError buffer); + +void signal_free_list_of_register_response_badges(SignalOwnedBufferOfFfiRegisterResponseBadge buffer); + +void signal_free_list_of_service_ids(SignalOwnedBufferOfServiceIdFixedWidthBinaryBytes buffer); + +void signal_free_list_of_strings(SignalOwnedBufferOfCStringPtr buffer); + +void signal_free_lookup_response_entry_list(SignalOwnedBufferOfFfiCdsiLookupResponseEntry buffer); + +/** + * This frees a buffer of PreKeyBundle pointers, and _does not_ free the + * pointers within the buffer. This _only_ frees the buffer containing + * the pointers. + */ +void signal_free_outer_buffer_list_of_prekey_bundles(SignalOwnedBufferOfMutPointerPreKeyBundle buffer); + +void signal_free_string(const char *buf); + +SignalFfiError *signal_generic_server_public_params_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_generic_server_secret_params_check_valid_contents(SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_generic_server_secret_params_generate_deterministic(SignalOwnedBuffer *out, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_generic_server_secret_params_get_public_params(SignalOwnedBuffer *out, SignalBorrowedBuffer params_bytes); + +SignalFfiError *signal_group_decrypt_message(SignalOwnedBuffer *out, SignalConstPointerProtocolAddress sender, SignalBorrowedBuffer message, SignalConstPointerFfiSenderKeyStoreStruct store); + +SignalFfiError *signal_group_encrypt_message(SignalMutPointerCiphertextMessage *out, SignalConstPointerProtocolAddress sender, SignalUuid distribution_id, SignalBorrowedBuffer message, SignalConstPointerFfiSenderKeyStoreStruct store); + +SignalFfiError *signal_group_master_key_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_group_public_params_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_group_public_params_get_group_identifier(uint8_t (*out)[SignalGROUP_IDENTIFIER_LEN], const unsigned char (*group_public_params)[SignalGROUP_PUBLIC_PARAMS_LEN]); + +SignalFfiError *signal_group_secret_params_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_group_secret_params_decrypt_blob_with_padding(SignalOwnedBuffer *out, const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], SignalBorrowedBuffer ciphertext); + +SignalFfiError *signal_group_secret_params_decrypt_profile_key(unsigned char (*out)[SignalPROFILE_KEY_LEN], const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], const unsigned char (*profile_key)[SignalPROFILE_KEY_CIPHERTEXT_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id); + +SignalFfiError *signal_group_secret_params_decrypt_service_id(SignalServiceIdFixedWidthBinaryBytes *out, const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], const unsigned char (*ciphertext)[SignalUUID_CIPHERTEXT_LEN]); + +SignalFfiError *signal_group_secret_params_derive_from_master_key(unsigned char (*out)[SignalGROUP_SECRET_PARAMS_LEN], const unsigned char (*master_key)[SignalGROUP_MASTER_KEY_LEN]); + +SignalFfiError *signal_group_secret_params_encrypt_blob_with_padding_deterministic(SignalOwnedBuffer *out, const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], const uint8_t (*randomness)[SignalRANDOMNESS_LEN], SignalBorrowedBuffer plaintext, uint32_t padding_len); + +SignalFfiError *signal_group_secret_params_encrypt_profile_key(unsigned char (*out)[SignalPROFILE_KEY_CIPHERTEXT_LEN], const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], const unsigned char (*profile_key)[SignalPROFILE_KEY_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id); + +SignalFfiError *signal_group_secret_params_encrypt_service_id(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN], const SignalServiceIdFixedWidthBinaryBytes *service_id); + +SignalFfiError *signal_group_secret_params_generate_deterministic(unsigned char (*out)[SignalGROUP_SECRET_PARAMS_LEN], const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_group_secret_params_get_master_key(unsigned char (*out)[SignalGROUP_MASTER_KEY_LEN], const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN]); + +SignalFfiError *signal_group_secret_params_get_public_params(unsigned char (*out)[SignalGROUP_PUBLIC_PARAMS_LEN], const unsigned char (*params)[SignalGROUP_SECRET_PARAMS_LEN]); + +SignalFfiError *signal_group_send_derived_key_pair_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_group_send_derived_key_pair_for_expiration(SignalOwnedBuffer *out, uint64_t expiration, SignalConstPointerServerSecretParams server_params); + +SignalFfiError *signal_group_send_endorsement_call_link_params_to_token(SignalOwnedBuffer *out, SignalBorrowedBuffer endorsement, SignalBorrowedBuffer call_link_secret_params_serialized); + +SignalFfiError *signal_group_send_endorsement_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_group_send_endorsement_combine(SignalOwnedBuffer *out, SignalBorrowedSliceOfBuffers endorsements); + +SignalFfiError *signal_group_send_endorsement_remove(SignalOwnedBuffer *out, SignalBorrowedBuffer endorsement, SignalBorrowedBuffer to_remove); + +SignalFfiError *signal_group_send_endorsement_to_token(SignalOwnedBuffer *out, SignalBorrowedBuffer endorsement, const unsigned char (*group_params)[SignalGROUP_SECRET_PARAMS_LEN]); + +SignalFfiError *signal_group_send_endorsements_response_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_group_send_endorsements_response_get_expiration(uint64_t *out, SignalBorrowedBuffer response_bytes); + +SignalFfiError *signal_group_send_endorsements_response_issue_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer concatenated_group_member_ciphertexts, SignalBorrowedBuffer key_pair, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_group_send_endorsements_response_receive_and_combine_with_ciphertexts(SignalBytestringArray *out, SignalBorrowedBuffer response_bytes, SignalBorrowedBuffer concatenated_group_member_ciphertexts, SignalBorrowedBuffer local_user_ciphertext, uint64_t now, SignalConstPointerServerPublicParams server_params); + +SignalFfiError *signal_group_send_endorsements_response_receive_and_combine_with_service_ids(SignalBytestringArray *out, SignalBorrowedBuffer response_bytes, SignalBorrowedBuffer group_members, const SignalServiceIdFixedWidthBinaryBytes *local_user, uint64_t now, const unsigned char (*group_params)[SignalGROUP_SECRET_PARAMS_LEN], SignalConstPointerServerPublicParams server_params); + +SignalFfiError *signal_group_send_full_token_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_group_send_full_token_get_expiration(uint64_t *out, SignalBorrowedBuffer token); + +SignalFfiError *signal_group_send_full_token_verify(SignalBorrowedBuffer token, SignalBorrowedBuffer user_ids, uint64_t now, SignalBorrowedBuffer key_pair); + +SignalFfiError *signal_group_send_token_check_valid_contents(SignalBorrowedBuffer bytes); + +SignalFfiError *signal_group_send_token_to_full_token(SignalOwnedBuffer *out, SignalBorrowedBuffer token, uint64_t expiration); + +SignalFfiError *signal_hex_encode(SignalBorrowedMutableBuffer output, SignalBorrowedBuffer input); + +SignalFfiError *signal_hkdf_derive(SignalBorrowedMutableBuffer output, SignalBorrowedBuffer ikm, SignalBorrowedBuffer label, SignalBorrowedBuffer salt); + +SignalFfiError *signal_hsm_enclave_client_complete_handshake(SignalMutPointerHsmEnclaveClient cli, SignalBorrowedBuffer handshake_received); + +SignalFfiError *signal_hsm_enclave_client_destroy(SignalMutPointerHsmEnclaveClient p); + +SignalFfiError *signal_hsm_enclave_client_established_recv(SignalOwnedBuffer *out, SignalMutPointerHsmEnclaveClient cli, SignalBorrowedBuffer received_ciphertext); + +SignalFfiError *signal_hsm_enclave_client_established_send(SignalOwnedBuffer *out, SignalMutPointerHsmEnclaveClient cli, SignalBorrowedBuffer plaintext_to_send); + +SignalFfiError *signal_hsm_enclave_client_initial_request(SignalOwnedBuffer *out, SignalConstPointerHsmEnclaveClient obj); + +SignalFfiError *signal_hsm_enclave_client_new(SignalMutPointerHsmEnclaveClient *out, SignalBorrowedBuffer trusted_public_key, SignalBorrowedBuffer trusted_code_hashes); + +SignalFfiError *signal_http_request_add_header(SignalConstPointerHttpRequest request, const char *name, const char *value); + +SignalFfiError *signal_http_request_destroy(SignalMutPointerHttpRequest p); + +SignalFfiError *signal_http_request_new_with_body(SignalMutPointerHttpRequest *out, const char *method, const char *path, SignalBorrowedBuffer body_as_slice); + +SignalFfiError *signal_http_request_new_without_body(SignalMutPointerHttpRequest *out, const char *method, const char *path); + +SignalFfiError *signal_identitykey_verify_alternate_identity(bool *out, SignalConstPointerPublicKey public_key, SignalConstPointerPublicKey other_identity, SignalBorrowedBuffer signature); + +SignalFfiError *signal_identitykeypair_deserialize(SignalPairOfMutPointerPublicKeyMutPointerPrivateKey *out, SignalBorrowedBuffer input); + +SignalFfiError *signal_identitykeypair_serialize(SignalOwnedBuffer *out, SignalConstPointerPublicKey public_key, SignalConstPointerPrivateKey private_key); + +SignalFfiError *signal_identitykeypair_sign_alternate_identity(SignalOwnedBuffer *out, SignalConstPointerPublicKey public_key, SignalConstPointerPrivateKey private_key, SignalConstPointerPublicKey other_identity); + +SignalFfiError *signal_incremental_mac_calculate_chunk_size(uint32_t *out, uint32_t data_size); + +SignalFfiError *signal_incremental_mac_destroy(SignalMutPointerIncrementalMac p); + +SignalFfiError *signal_incremental_mac_finalize(SignalOwnedBuffer *out, SignalMutPointerIncrementalMac mac); + +SignalFfiError *signal_incremental_mac_initialize(SignalMutPointerIncrementalMac *out, SignalBorrowedBuffer key, uint32_t chunk_size); + +SignalFfiError *signal_incremental_mac_update(SignalOwnedBuffer *out, SignalMutPointerIncrementalMac mac, SignalBorrowedBuffer bytes, uint32_t offset, uint32_t length); + +bool signal_init_logger(SignalLogLevel max_level, SignalFfiLogger logger); + +SignalFfiError *signal_key_transparency_aci_search_key(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *aci); + +SignalFfiError *signal_key_transparency_distinguished(SignalCPromiseOwnedBufferOfc_uchar *promise, SignalConstPointerTokioAsyncContext async_runtime, uint8_t environment, SignalConstPointerUnauthenticatedChatConnection chat_connection, SignalOptionalBorrowedSliceOfc_uchar last_distinguished_tree_head); + +SignalFfiError *signal_key_transparency_e164_search_key(SignalOwnedBuffer *out, const char *e164); + +SignalFfiError *signal_key_transparency_monitor(SignalCPromiseOwnedBufferOfc_uchar *promise, SignalConstPointerTokioAsyncContext async_runtime, uint8_t environment, SignalConstPointerUnauthenticatedChatConnection chat_connection, const SignalServiceIdFixedWidthBinaryBytes *aci, SignalConstPointerPublicKey aci_identity_key, const char *e164, SignalOptionalBorrowedSliceOfc_uchar unidentified_access_key, SignalOptionalBorrowedSliceOfc_uchar username_hash, SignalOptionalBorrowedSliceOfc_uchar account_data, SignalBorrowedBuffer last_distinguished_tree_head, bool is_self_monitor); + +SignalFfiError *signal_key_transparency_search(SignalCPromiseOwnedBufferOfc_uchar *promise, SignalConstPointerTokioAsyncContext async_runtime, uint8_t environment, SignalConstPointerUnauthenticatedChatConnection chat_connection, const SignalServiceIdFixedWidthBinaryBytes *aci, SignalConstPointerPublicKey aci_identity_key, const char *e164, SignalOptionalBorrowedSliceOfc_uchar unidentified_access_key, SignalOptionalBorrowedSliceOfc_uchar username_hash, SignalOptionalBorrowedSliceOfc_uchar account_data, SignalBorrowedBuffer last_distinguished_tree_head); + +SignalFfiError *signal_key_transparency_username_hash_search_key(SignalOwnedBuffer *out, SignalBorrowedBuffer hash); + +SignalFfiError *signal_kyber_key_pair_clone(SignalMutPointerKyberKeyPair *new_obj, SignalConstPointerKyberKeyPair obj); + +SignalFfiError *signal_kyber_key_pair_destroy(SignalMutPointerKyberKeyPair p); + +SignalFfiError *signal_kyber_key_pair_generate(SignalMutPointerKyberKeyPair *out); + +SignalFfiError *signal_kyber_key_pair_get_public_key(SignalMutPointerKyberPublicKey *out, SignalConstPointerKyberKeyPair key_pair); + +SignalFfiError *signal_kyber_key_pair_get_secret_key(SignalMutPointerKyberSecretKey *out, SignalConstPointerKyberKeyPair key_pair); + +SignalFfiError *signal_kyber_pre_key_record_clone(SignalMutPointerKyberPreKeyRecord *new_obj, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_deserialize(SignalMutPointerKyberPreKeyRecord *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_kyber_pre_key_record_destroy(SignalMutPointerKyberPreKeyRecord p); + +SignalFfiError *signal_kyber_pre_key_record_get_id(uint32_t *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_get_key_pair(SignalMutPointerKyberKeyPair *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_get_public_key(SignalMutPointerKyberPublicKey *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_get_secret_key(SignalMutPointerKyberSecretKey *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_get_signature(SignalOwnedBuffer *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_get_timestamp(uint64_t *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_pre_key_record_new(SignalMutPointerKyberPreKeyRecord *out, uint32_t id, uint64_t timestamp, SignalConstPointerKyberKeyPair key_pair, SignalBorrowedBuffer signature); + +SignalFfiError *signal_kyber_pre_key_record_serialize(SignalOwnedBuffer *out, SignalConstPointerKyberPreKeyRecord obj); + +SignalFfiError *signal_kyber_public_key_clone(SignalMutPointerKyberPublicKey *new_obj, SignalConstPointerKyberPublicKey obj); + +SignalFfiError *signal_kyber_public_key_deserialize(SignalMutPointerKyberPublicKey *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_kyber_public_key_destroy(SignalMutPointerKyberPublicKey p); + +SignalFfiError *signal_kyber_public_key_equals(bool *out, SignalConstPointerKyberPublicKey lhs, SignalConstPointerKyberPublicKey rhs); + +SignalFfiError *signal_kyber_public_key_serialize(SignalOwnedBuffer *out, SignalConstPointerKyberPublicKey obj); + +SignalFfiError *signal_kyber_secret_key_clone(SignalMutPointerKyberSecretKey *new_obj, SignalConstPointerKyberSecretKey obj); + +SignalFfiError *signal_kyber_secret_key_deserialize(SignalMutPointerKyberSecretKey *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_kyber_secret_key_destroy(SignalMutPointerKyberSecretKey p); + +SignalFfiError *signal_kyber_secret_key_serialize(SignalOwnedBuffer *out, SignalConstPointerKyberSecretKey obj); + +SignalFfiError *signal_lookup_request_add_aci_and_access_key(SignalConstPointerLookupRequest request, const SignalServiceIdFixedWidthBinaryBytes *aci, SignalBorrowedBuffer access_key); + +SignalFfiError *signal_lookup_request_add_e164(SignalConstPointerLookupRequest request, const char *e164); + +SignalFfiError *signal_lookup_request_add_previous_e164(SignalConstPointerLookupRequest request, const char *e164); + +SignalFfiError *signal_lookup_request_destroy(SignalMutPointerLookupRequest p); + +SignalFfiError *signal_lookup_request_new(SignalMutPointerLookupRequest *out); + +SignalFfiError *signal_lookup_request_set_token(SignalConstPointerLookupRequest request, SignalBorrowedBuffer token); + +SignalFfiError *signal_message_backup_key_destroy(SignalMutPointerMessageBackupKey p); + +SignalFfiError *signal_message_backup_key_from_account_entropy_pool(SignalMutPointerMessageBackupKey *out, const char *account_entropy, const SignalServiceIdFixedWidthBinaryBytes *aci, const uint8_t (*forward_secrecy_token)[SignalBACKUP_FORWARD_SECRECY_TOKEN_LEN]); + +SignalFfiError *signal_message_backup_key_from_backup_key_and_backup_id(SignalMutPointerMessageBackupKey *out, const uint8_t (*backup_key)[32], const uint8_t (*backup_id)[16], const uint8_t (*forward_secrecy_token)[SignalBACKUP_FORWARD_SECRECY_TOKEN_LEN]); + +SignalFfiError *signal_message_backup_key_get_aes_key(uint8_t (*out)[32], SignalConstPointerMessageBackupKey key); + +SignalFfiError *signal_message_backup_key_get_hmac_key(uint8_t (*out)[32], SignalConstPointerMessageBackupKey key); + +SignalFfiError *signal_message_backup_validation_outcome_destroy(SignalMutPointerMessageBackupValidationOutcome p); + +SignalFfiError *signal_message_backup_validation_outcome_get_error_message(const char **out, SignalConstPointerMessageBackupValidationOutcome outcome); + +SignalFfiError *signal_message_backup_validation_outcome_get_unknown_fields(SignalStringArray *out, SignalConstPointerMessageBackupValidationOutcome outcome); + +SignalFfiError *signal_message_backup_validator_validate(SignalMutPointerMessageBackupValidationOutcome *out, SignalConstPointerMessageBackupKey key, SignalConstPointerFfiInputStreamStruct first_stream, SignalConstPointerFfiInputStreamStruct second_stream, uint64_t len, uint8_t purpose); + +SignalFfiError *signal_message_clone(SignalMutPointerSignalMessage *new_obj, SignalConstPointerSignalMessage obj); + +SignalFfiError *signal_message_deserialize(SignalMutPointerSignalMessage *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_message_destroy(SignalMutPointerSignalMessage p); + +SignalFfiError *signal_message_get_body(SignalOwnedBuffer *out, SignalConstPointerSignalMessage obj); + +SignalFfiError *signal_message_get_counter(uint32_t *out, SignalConstPointerSignalMessage obj); + +SignalFfiError *signal_message_get_message_version(uint32_t *out, SignalConstPointerSignalMessage obj); + +SignalFfiError *signal_message_get_pq_ratchet(SignalOwnedBuffer *out, SignalConstPointerSignalMessage msg); + +SignalFfiError *signal_message_get_sender_ratchet_key(SignalMutPointerPublicKey *out, SignalConstPointerSignalMessage m); + +SignalFfiError *signal_message_get_serialized(SignalOwnedBuffer *out, SignalConstPointerSignalMessage obj); + +SignalFfiError *signal_message_new(SignalMutPointerSignalMessage *out, uint8_t message_version, SignalBorrowedBuffer mac_key, SignalConstPointerPublicKey sender_ratchet_key, uint32_t counter, uint32_t previous_counter, SignalBorrowedBuffer ciphertext, SignalConstPointerPublicKey sender_identity_key, SignalConstPointerPublicKey receiver_identity_key, SignalBorrowedBuffer pq_ratchet); + +SignalFfiError *signal_message_verify_mac(bool *out, SignalConstPointerSignalMessage msg, SignalConstPointerPublicKey sender_identity_key, SignalConstPointerPublicKey receiver_identity_key, SignalBorrowedBuffer mac_key); + +SignalFfiError *signal_mp4_sanitizer_sanitize(SignalMutPointerSanitizedMetadata *out, SignalConstPointerFfiInputStreamStruct input, uint64_t len); + +SignalFfiError *signal_online_backup_validator_add_frame(SignalMutPointerOnlineBackupValidator backup, SignalBorrowedBuffer frame); + +SignalFfiError *signal_online_backup_validator_destroy(SignalMutPointerOnlineBackupValidator p); + +SignalFfiError *signal_online_backup_validator_finalize(SignalMutPointerOnlineBackupValidator backup); + +SignalFfiError *signal_online_backup_validator_new(SignalMutPointerOnlineBackupValidator *out, SignalBorrowedBuffer backup_info_frame, uint8_t purpose); + +SignalFfiError *signal_pin_hash_access_key(uint8_t (*out)[32], SignalConstPointerPinHash ph); + +SignalFfiError *signal_pin_hash_clone(SignalMutPointerPinHash *new_obj, SignalConstPointerPinHash obj); + +SignalFfiError *signal_pin_hash_destroy(SignalMutPointerPinHash p); + +SignalFfiError *signal_pin_hash_encryption_key(uint8_t (*out)[32], SignalConstPointerPinHash ph); + +SignalFfiError *signal_pin_hash_from_salt(SignalMutPointerPinHash *out, SignalBorrowedBuffer pin, const uint8_t (*salt)[32]); + +SignalFfiError *signal_pin_hash_from_username_mrenclave(SignalMutPointerPinHash *out, SignalBorrowedBuffer pin, const char *username, SignalBorrowedBuffer mrenclave); + +SignalFfiError *signal_pin_local_hash(const char **out, SignalBorrowedBuffer pin); + +SignalFfiError *signal_pin_verify_local_hash(bool *out, const char *encoded_hash, SignalBorrowedBuffer pin); + +SignalFfiError *signal_plaintext_content_clone(SignalMutPointerPlaintextContent *new_obj, SignalConstPointerPlaintextContent obj); + +SignalFfiError *signal_plaintext_content_deserialize(SignalMutPointerPlaintextContent *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_plaintext_content_destroy(SignalMutPointerPlaintextContent p); + +SignalFfiError *signal_plaintext_content_from_decryption_error_message(SignalMutPointerPlaintextContent *out, SignalConstPointerDecryptionErrorMessage m); + +SignalFfiError *signal_plaintext_content_get_body(SignalOwnedBuffer *out, SignalConstPointerPlaintextContent obj); + +SignalFfiError *signal_plaintext_content_serialize(SignalOwnedBuffer *out, SignalConstPointerPlaintextContent obj); + +SignalFfiError *signal_pre_key_bundle_clone(SignalMutPointerPreKeyBundle *new_obj, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_destroy(SignalMutPointerPreKeyBundle p); + +SignalFfiError *signal_pre_key_bundle_get_device_id(uint32_t *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_identity_key(SignalMutPointerPublicKey *out, SignalConstPointerPreKeyBundle p); + +SignalFfiError *signal_pre_key_bundle_get_kyber_pre_key_id(uint32_t *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_kyber_pre_key_public(SignalMutPointerKyberPublicKey *out, SignalConstPointerPreKeyBundle bundle); + +SignalFfiError *signal_pre_key_bundle_get_kyber_pre_key_signature(SignalOwnedBuffer *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_pre_key_id(uint32_t *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_pre_key_public(SignalMutPointerPublicKey *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_registration_id(uint32_t *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_signed_pre_key_id(uint32_t *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_signed_pre_key_public(SignalMutPointerPublicKey *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_get_signed_pre_key_signature(SignalOwnedBuffer *out, SignalConstPointerPreKeyBundle obj); + +SignalFfiError *signal_pre_key_bundle_new(SignalMutPointerPreKeyBundle *out, uint32_t registration_id, uint32_t device_id, uint32_t prekey_id, SignalConstPointerPublicKey prekey, uint32_t signed_prekey_id, SignalConstPointerPublicKey signed_prekey, SignalBorrowedBuffer signed_prekey_signature, SignalConstPointerPublicKey identity_key, uint32_t kyber_prekey_id, SignalConstPointerKyberPublicKey kyber_prekey, SignalBorrowedBuffer kyber_prekey_signature); + +SignalFfiError *signal_pre_key_record_clone(SignalMutPointerPreKeyRecord *new_obj, SignalConstPointerPreKeyRecord obj); + +SignalFfiError *signal_pre_key_record_deserialize(SignalMutPointerPreKeyRecord *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_pre_key_record_destroy(SignalMutPointerPreKeyRecord p); + +SignalFfiError *signal_pre_key_record_get_id(uint32_t *out, SignalConstPointerPreKeyRecord obj); + +SignalFfiError *signal_pre_key_record_get_private_key(SignalMutPointerPrivateKey *out, SignalConstPointerPreKeyRecord obj); + +SignalFfiError *signal_pre_key_record_get_public_key(SignalMutPointerPublicKey *out, SignalConstPointerPreKeyRecord obj); + +SignalFfiError *signal_pre_key_record_new(SignalMutPointerPreKeyRecord *out, uint32_t id, SignalConstPointerPublicKey pub_key, SignalConstPointerPrivateKey priv_key); + +SignalFfiError *signal_pre_key_record_serialize(SignalOwnedBuffer *out, SignalConstPointerPreKeyRecord obj); + +SignalFfiError *signal_pre_key_signal_message_clone(SignalMutPointerPreKeySignalMessage *new_obj, SignalConstPointerPreKeySignalMessage obj); + +SignalFfiError *signal_pre_key_signal_message_deserialize(SignalMutPointerPreKeySignalMessage *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_pre_key_signal_message_destroy(SignalMutPointerPreKeySignalMessage p); + +SignalFfiError *signal_pre_key_signal_message_get_base_key(SignalMutPointerPublicKey *out, SignalConstPointerPreKeySignalMessage m); + +SignalFfiError *signal_pre_key_signal_message_get_identity_key(SignalMutPointerPublicKey *out, SignalConstPointerPreKeySignalMessage m); + +SignalFfiError *signal_pre_key_signal_message_get_pre_key_id(uint32_t *out, SignalConstPointerPreKeySignalMessage obj); + +SignalFfiError *signal_pre_key_signal_message_get_registration_id(uint32_t *out, SignalConstPointerPreKeySignalMessage obj); + +SignalFfiError *signal_pre_key_signal_message_get_signal_message(SignalMutPointerSignalMessage *out, SignalConstPointerPreKeySignalMessage m); + +SignalFfiError *signal_pre_key_signal_message_get_signed_pre_key_id(uint32_t *out, SignalConstPointerPreKeySignalMessage obj); + +SignalFfiError *signal_pre_key_signal_message_get_version(uint32_t *out, SignalConstPointerPreKeySignalMessage obj); + +SignalFfiError *signal_pre_key_signal_message_new(SignalMutPointerPreKeySignalMessage *out, uint8_t message_version, uint32_t registration_id, uint32_t pre_key_id, uint32_t signed_pre_key_id, SignalConstPointerPublicKey base_key, SignalConstPointerPublicKey identity_key, SignalConstPointerSignalMessage signal_message); + +SignalFfiError *signal_pre_key_signal_message_serialize(SignalOwnedBuffer *out, SignalConstPointerPreKeySignalMessage obj); + +void signal_print_ptr(const void *p); + +SignalFfiError *signal_privatekey_agree(SignalOwnedBuffer *out, SignalConstPointerPrivateKey private_key, SignalConstPointerPublicKey public_key); + +SignalFfiError *signal_privatekey_clone(SignalMutPointerPrivateKey *new_obj, SignalConstPointerPrivateKey obj); + +SignalFfiError *signal_privatekey_deserialize(SignalMutPointerPrivateKey *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_privatekey_destroy(SignalMutPointerPrivateKey p); + +SignalFfiError *signal_privatekey_generate(SignalMutPointerPrivateKey *out); + +SignalFfiError *signal_privatekey_get_public_key(SignalMutPointerPublicKey *out, SignalConstPointerPrivateKey k); + +SignalFfiError *signal_privatekey_hpke_open(SignalOwnedBuffer *out, SignalConstPointerPrivateKey sk, SignalBorrowedBuffer ciphertext, SignalBorrowedBuffer info, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_privatekey_serialize(SignalOwnedBuffer *out, SignalConstPointerPrivateKey obj); + +SignalFfiError *signal_privatekey_sign(SignalOwnedBuffer *out, SignalConstPointerPrivateKey key, SignalBorrowedBuffer message); + +SignalFfiError *signal_process_prekey_bundle(SignalConstPointerPreKeyBundle bundle, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, uint64_t now); + +SignalFfiError *signal_process_sender_key_distribution_message(SignalConstPointerProtocolAddress sender, SignalConstPointerSenderKeyDistributionMessage sender_key_distribution_message, SignalConstPointerFfiSenderKeyStoreStruct store); + +SignalFfiError *signal_profile_key_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_profile_key_ciphertext_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_profile_key_commitment_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_profile_key_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_profile_key_credential_presentation_get_profile_key_ciphertext(unsigned char (*out)[SignalPROFILE_KEY_CIPHERTEXT_LEN], SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_profile_key_credential_presentation_get_uuid_ciphertext(unsigned char (*out)[SignalUUID_CIPHERTEXT_LEN], SignalBorrowedBuffer presentation_bytes); + +SignalFfiError *signal_profile_key_credential_request_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_profile_key_credential_request_context_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_profile_key_credential_request_context_get_request(unsigned char (*out)[SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN], const unsigned char (*context)[SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN]); + +SignalFfiError *signal_profile_key_derive_access_key(uint8_t (*out)[SignalACCESS_KEY_LEN], const unsigned char (*profile_key)[SignalPROFILE_KEY_LEN]); + +SignalFfiError *signal_profile_key_get_commitment(unsigned char (*out)[SignalPROFILE_KEY_COMMITMENT_LEN], const unsigned char (*profile_key)[SignalPROFILE_KEY_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id); + +SignalFfiError *signal_profile_key_get_profile_key_version(uint8_t (*out)[SignalPROFILE_KEY_VERSION_ENCODED_LEN], const unsigned char (*profile_key)[SignalPROFILE_KEY_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id); + +SignalFfiError *signal_provisioning_chat_connection_connect(SignalCPromiseMutPointerProvisioningChatConnection *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager); + +SignalFfiError *signal_provisioning_chat_connection_destroy(SignalMutPointerProvisioningChatConnection p); + +SignalFfiError *signal_provisioning_chat_connection_disconnect(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerProvisioningChatConnection chat); + +SignalFfiError *signal_provisioning_chat_connection_info(SignalMutPointerChatConnectionInfo *out, SignalConstPointerProvisioningChatConnection chat); + +SignalFfiError *signal_provisioning_chat_connection_init_listener(SignalConstPointerProvisioningChatConnection chat, SignalConstPointerFfiProvisioningListenerStruct listener); + +SignalFfiError *signal_publickey_clone(SignalMutPointerPublicKey *new_obj, SignalConstPointerPublicKey obj); + +SignalFfiError *signal_publickey_deserialize(SignalMutPointerPublicKey *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_publickey_destroy(SignalMutPointerPublicKey p); + +SignalFfiError *signal_publickey_equals(bool *out, SignalConstPointerPublicKey lhs, SignalConstPointerPublicKey rhs); + +SignalFfiError *signal_publickey_get_public_key_bytes(SignalOwnedBuffer *out, SignalConstPointerPublicKey obj); + +SignalFfiError *signal_publickey_hpke_seal(SignalOwnedBuffer *out, SignalConstPointerPublicKey pk, SignalBorrowedBuffer plaintext, SignalBorrowedBuffer info, SignalBorrowedBuffer associated_data); + +SignalFfiError *signal_publickey_serialize(SignalOwnedBuffer *out, SignalConstPointerPublicKey obj); + +SignalFfiError *signal_publickey_verify(bool *out, SignalConstPointerPublicKey key, SignalBorrowedBuffer message, SignalBorrowedBuffer signature); + +SignalFfiError *signal_receipt_credential_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_receipt_credential_get_receipt_expiration_time(uint64_t *out, const unsigned char (*receipt_credential)[SignalRECEIPT_CREDENTIAL_LEN]); + +SignalFfiError *signal_receipt_credential_get_receipt_level(uint64_t *out, const unsigned char (*receipt_credential)[SignalRECEIPT_CREDENTIAL_LEN]); + +SignalFfiError *signal_receipt_credential_presentation_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_receipt_credential_presentation_get_receipt_expiration_time(uint64_t *out, const unsigned char (*presentation)[SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN]); + +SignalFfiError *signal_receipt_credential_presentation_get_receipt_level(uint64_t *out, const unsigned char (*presentation)[SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN]); + +SignalFfiError *signal_receipt_credential_presentation_get_receipt_serial(uint8_t (*out)[SignalRECEIPT_SERIAL_LEN], const unsigned char (*presentation)[SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN]); + +SignalFfiError *signal_receipt_credential_request_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_receipt_credential_request_context_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_receipt_credential_request_context_get_request(unsigned char (*out)[SignalRECEIPT_CREDENTIAL_REQUEST_LEN], const unsigned char (*request_context)[SignalRECEIPT_CREDENTIAL_REQUEST_CONTEXT_LEN]); + +SignalFfiError *signal_receipt_credential_response_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_register_account_request_create(SignalMutPointerRegisterAccountRequest *out); + +SignalFfiError *signal_register_account_request_destroy(SignalMutPointerRegisterAccountRequest p); + +SignalFfiError *signal_register_account_request_set_account_password(SignalConstPointerRegisterAccountRequest register_account, const char *account_password); + +SignalFfiError *signal_register_account_request_set_apn_push_token(SignalConstPointerRegisterAccountRequest register_account, const char *apn_push_token); + +SignalFfiError *signal_register_account_request_set_identity_pq_last_resort_pre_key(SignalConstPointerRegisterAccountRequest register_account, uint8_t identity_type, SignalFfiSignedPublicPreKey pq_last_resort_pre_key); + +SignalFfiError *signal_register_account_request_set_identity_public_key(SignalConstPointerRegisterAccountRequest register_account, uint8_t identity_type, SignalConstPointerPublicKey identity_key); + +SignalFfiError *signal_register_account_request_set_identity_signed_pre_key(SignalConstPointerRegisterAccountRequest register_account, uint8_t identity_type, SignalFfiSignedPublicPreKey signed_pre_key); + +SignalFfiError *signal_register_account_request_set_skip_device_transfer(SignalConstPointerRegisterAccountRequest register_account); + +SignalFfiError *signal_register_account_response_destroy(SignalMutPointerRegisterAccountResponse p); + +SignalFfiError *signal_register_account_response_get_entitlement_backup_expiration_seconds(uint64_t *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_entitlement_backup_level(uint64_t *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_entitlement_badges(SignalOwnedBufferOfFfiRegisterResponseBadge *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_identity(SignalServiceIdFixedWidthBinaryBytes *out, SignalConstPointerRegisterAccountResponse response, uint8_t identity_type); + +SignalFfiError *signal_register_account_response_get_number(const char **out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_reregistration(bool *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_storage_capable(bool *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_username_hash(SignalOwnedBuffer *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_register_account_response_get_username_link_handle(SignalOptionalUuid *out, SignalConstPointerRegisterAccountResponse response); + +SignalFfiError *signal_registration_account_attributes_create(SignalMutPointerRegistrationAccountAttributes *out, SignalBorrowedBuffer recovery_password, uint16_t aci_registration_id, uint16_t pni_registration_id, const char *registration_lock, const uint8_t (*unidentified_access_key)[16], bool unrestricted_unidentified_access, SignalBorrowedBytestringArray capabilities, bool discoverable_by_phone_number); + +SignalFfiError *signal_registration_account_attributes_destroy(SignalMutPointerRegistrationAccountAttributes p); + +SignalFfiError *signal_registration_service_check_svr2_credentials(SignalCPromiseFfiCheckSvr2CredentialsResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, SignalBorrowedBytestringArray svr_tokens); + +SignalFfiError *signal_registration_service_create_session(SignalCPromiseMutPointerRegistrationService *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalFfiRegistrationCreateSessionRequest create_session, SignalConstPointerFfiConnectChatBridgeStruct connect_chat); + +SignalFfiError *signal_registration_service_destroy(SignalMutPointerRegistrationService p); + +SignalFfiError *signal_registration_service_register_account(SignalCPromiseMutPointerRegisterAccountResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, SignalConstPointerRegisterAccountRequest register_account, SignalConstPointerRegistrationAccountAttributes account_attributes); + +SignalFfiError *signal_registration_service_registration_session(SignalMutPointerRegistrationSession *out, SignalConstPointerRegistrationService service); + +SignalFfiError *signal_registration_service_request_push_challenge(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *push_token); + +SignalFfiError *signal_registration_service_request_verification_code(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *transport, const char *client, SignalBorrowedBytestringArray languages); + +SignalFfiError *signal_registration_service_reregister_account(SignalCPromiseMutPointerRegisterAccountResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerFfiConnectChatBridgeStruct connect_chat, const char *number, SignalConstPointerRegisterAccountRequest register_account, SignalConstPointerRegistrationAccountAttributes account_attributes); + +SignalFfiError *signal_registration_service_resume_session(SignalCPromiseMutPointerRegistrationService *promise, SignalConstPointerTokioAsyncContext async_runtime, const char *session_id, const char *number, SignalConstPointerFfiConnectChatBridgeStruct connect_chat); + +SignalFfiError *signal_registration_service_session_id(const char **out, SignalConstPointerRegistrationService service); + +SignalFfiError *signal_registration_service_submit_captcha(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *captcha_value); + +SignalFfiError *signal_registration_service_submit_push_challenge(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *push_challenge); + +SignalFfiError *signal_registration_service_submit_verification_code(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *code); + +SignalFfiError *signal_registration_session_destroy(SignalMutPointerRegistrationSession p); + +SignalFfiError *signal_registration_session_get_allowed_to_request_code(bool *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_registration_session_get_next_call_seconds(uint32_t *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_registration_session_get_next_sms_seconds(uint32_t *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_registration_session_get_next_verification_attempt_seconds(uint32_t *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_registration_session_get_requested_information(SignalOwnedBuffer *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_registration_session_get_verified(bool *out, SignalConstPointerRegistrationSession session); + +SignalFfiError *signal_sanitized_metadata_clone(SignalMutPointerSanitizedMetadata *new_obj, SignalConstPointerSanitizedMetadata obj); + +SignalFfiError *signal_sanitized_metadata_destroy(SignalMutPointerSanitizedMetadata p); + +SignalFfiError *signal_sanitized_metadata_get_data_len(uint64_t *out, SignalConstPointerSanitizedMetadata sanitized); + +SignalFfiError *signal_sanitized_metadata_get_data_offset(uint64_t *out, SignalConstPointerSanitizedMetadata sanitized); + +SignalFfiError *signal_sanitized_metadata_get_metadata(SignalOwnedBuffer *out, SignalConstPointerSanitizedMetadata sanitized); + +SignalFfiError *signal_sealed_sender_multi_recipient_encrypt(SignalOwnedBuffer *out, SignalBorrowedSliceOfConstPointerProtocolAddress recipients, SignalBorrowedSliceOfConstPointerSessionRecord recipient_sessions, SignalBorrowedBuffer excluded_recipients, SignalConstPointerUnidentifiedSenderMessageContent content, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store); + +SignalFfiError *signal_sealed_sender_multi_recipient_message_for_single_recipient(SignalOwnedBuffer *out, SignalBorrowedBuffer encoded_multi_recipient_message); + +SignalFfiError *signal_sealed_session_cipher_decrypt_to_usmc(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalBorrowedBuffer ctext, SignalConstPointerFfiIdentityKeyStoreStruct identity_store); + +SignalFfiError *signal_sealed_session_cipher_encrypt(SignalOwnedBuffer *out, SignalConstPointerProtocolAddress destination, SignalConstPointerUnidentifiedSenderMessageContent content, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store); + +SignalFfiError *signal_secure_value_recovery_for_backups_create_new_backup_chain(SignalOwnedBuffer *out, uint8_t environment, const SignalBackupKeyBytes *backup_key); + +SignalFfiError *signal_secure_value_recovery_for_backups_remove_backup(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, const char *username, const char *password); + +SignalFfiError *signal_secure_value_recovery_for_backups_restore_backup_from_server(SignalCPromiseMutPointerBackupRestoreResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, const SignalBackupKeyBytes *backup_key, SignalBorrowedBuffer metadata, SignalConstPointerConnectionManager connection_manager, const char *username, const char *password); + +SignalFfiError *signal_secure_value_recovery_for_backups_store_backup(SignalCPromiseMutPointerBackupStoreResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, const SignalBackupKeyBytes *backup_key, SignalBorrowedBuffer previous_secret_data, SignalConstPointerConnectionManager connection_manager, const char *username, const char *password); + +SignalFfiError *signal_sender_certificate_clone(SignalMutPointerSenderCertificate *new_obj, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_deserialize(SignalMutPointerSenderCertificate *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_sender_certificate_destroy(SignalMutPointerSenderCertificate p); + +SignalFfiError *signal_sender_certificate_get_certificate(SignalOwnedBuffer *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_device_id(uint32_t *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_expiration(uint64_t *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_key(SignalMutPointerPublicKey *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_sender_e164(const char **out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_sender_uuid(const char **out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_serialized(SignalOwnedBuffer *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_get_server_certificate(SignalMutPointerServerCertificate *out, SignalConstPointerSenderCertificate cert); + +SignalFfiError *signal_sender_certificate_get_signature(SignalOwnedBuffer *out, SignalConstPointerSenderCertificate obj); + +SignalFfiError *signal_sender_certificate_new(SignalMutPointerSenderCertificate *out, const char *sender_uuid, const char *sender_e164, uint32_t sender_device_id, SignalConstPointerPublicKey sender_key, uint64_t expiration, SignalConstPointerServerCertificate signer_cert, SignalConstPointerPrivateKey signer_key); + +SignalFfiError *signal_sender_certificate_validate(bool *out, SignalConstPointerSenderCertificate cert, SignalBorrowedSliceOfConstPointerPublicKey trust_roots, uint64_t time); + +SignalFfiError *signal_sender_key_distribution_message_clone(SignalMutPointerSenderKeyDistributionMessage *new_obj, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_distribution_message_create(SignalMutPointerSenderKeyDistributionMessage *out, SignalConstPointerProtocolAddress sender, SignalUuid distribution_id, SignalConstPointerFfiSenderKeyStoreStruct store); + +SignalFfiError *signal_sender_key_distribution_message_deserialize(SignalMutPointerSenderKeyDistributionMessage *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_sender_key_distribution_message_destroy(SignalMutPointerSenderKeyDistributionMessage p); + +SignalFfiError *signal_sender_key_distribution_message_get_chain_id(uint32_t *out, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_distribution_message_get_chain_key(SignalOwnedBuffer *out, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_distribution_message_get_distribution_id(SignalUuid *out, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_distribution_message_get_iteration(uint32_t *out, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_distribution_message_get_signature_key(SignalMutPointerPublicKey *out, SignalConstPointerSenderKeyDistributionMessage m); + +SignalFfiError *signal_sender_key_distribution_message_new(SignalMutPointerSenderKeyDistributionMessage *out, uint8_t message_version, SignalUuid distribution_id, uint32_t chain_id, uint32_t iteration, SignalBorrowedBuffer chainkey, SignalConstPointerPublicKey pk); + +SignalFfiError *signal_sender_key_distribution_message_serialize(SignalOwnedBuffer *out, SignalConstPointerSenderKeyDistributionMessage obj); + +SignalFfiError *signal_sender_key_message_clone(SignalMutPointerSenderKeyMessage *new_obj, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_deserialize(SignalMutPointerSenderKeyMessage *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_sender_key_message_destroy(SignalMutPointerSenderKeyMessage p); + +SignalFfiError *signal_sender_key_message_get_chain_id(uint32_t *out, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_get_cipher_text(SignalOwnedBuffer *out, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_get_distribution_id(SignalUuid *out, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_get_iteration(uint32_t *out, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_new(SignalMutPointerSenderKeyMessage *out, uint8_t message_version, SignalUuid distribution_id, uint32_t chain_id, uint32_t iteration, SignalBorrowedBuffer ciphertext, SignalConstPointerPrivateKey pk); + +SignalFfiError *signal_sender_key_message_serialize(SignalOwnedBuffer *out, SignalConstPointerSenderKeyMessage obj); + +SignalFfiError *signal_sender_key_message_verify_signature(bool *out, SignalConstPointerSenderKeyMessage skm, SignalConstPointerPublicKey pubkey); + +SignalFfiError *signal_sender_key_record_clone(SignalMutPointerSenderKeyRecord *new_obj, SignalConstPointerSenderKeyRecord obj); + +SignalFfiError *signal_sender_key_record_deserialize(SignalMutPointerSenderKeyRecord *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_sender_key_record_destroy(SignalMutPointerSenderKeyRecord p); + +SignalFfiError *signal_sender_key_record_serialize(SignalOwnedBuffer *out, SignalConstPointerSenderKeyRecord obj); + +SignalFfiError *signal_server_certificate_clone(SignalMutPointerServerCertificate *new_obj, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_deserialize(SignalMutPointerServerCertificate *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_server_certificate_destroy(SignalMutPointerServerCertificate p); + +SignalFfiError *signal_server_certificate_get_certificate(SignalOwnedBuffer *out, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_get_key(SignalMutPointerPublicKey *out, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_get_key_id(uint32_t *out, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_get_serialized(SignalOwnedBuffer *out, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_get_signature(SignalOwnedBuffer *out, SignalConstPointerServerCertificate obj); + +SignalFfiError *signal_server_certificate_new(SignalMutPointerServerCertificate *out, uint32_t key_id, SignalConstPointerPublicKey server_key, SignalConstPointerPrivateKey trust_root); + +SignalFfiError *signal_server_message_ack_destroy(SignalMutPointerServerMessageAck p); + +SignalFfiError *signal_server_message_ack_send(SignalConstPointerServerMessageAck ack); + +SignalFfiError *signal_server_public_params_create_auth_credential_with_pni_presentation_deterministic(SignalOwnedBuffer *out, SignalConstPointerServerPublicParams server_public_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const unsigned char (*group_secret_params)[SignalGROUP_SECRET_PARAMS_LEN], SignalBorrowedBuffer auth_credential_with_pni_bytes); + +SignalFfiError *signal_server_public_params_create_expiring_profile_key_credential_presentation_deterministic(SignalOwnedBuffer *out, SignalConstPointerServerPublicParams server_public_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const unsigned char (*group_secret_params)[SignalGROUP_SECRET_PARAMS_LEN], const unsigned char (*profile_key_credential)[SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN]); + +SignalFfiError *signal_server_public_params_create_profile_key_credential_request_context_deterministic(unsigned char (*out)[SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN], SignalConstPointerServerPublicParams server_public_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id, const unsigned char (*profile_key)[SignalPROFILE_KEY_LEN]); + +SignalFfiError *signal_server_public_params_create_receipt_credential_presentation_deterministic(unsigned char (*out)[SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN], SignalConstPointerServerPublicParams server_public_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const unsigned char (*receipt_credential)[SignalRECEIPT_CREDENTIAL_LEN]); + +SignalFfiError *signal_server_public_params_create_receipt_credential_request_context_deterministic(unsigned char (*out)[SignalRECEIPT_CREDENTIAL_REQUEST_CONTEXT_LEN], SignalConstPointerServerPublicParams server_public_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const uint8_t (*receipt_serial)[SignalRECEIPT_SERIAL_LEN]); + +SignalFfiError *signal_server_public_params_deserialize(SignalMutPointerServerPublicParams *out, SignalBorrowedBuffer buffer); + +SignalFfiError *signal_server_public_params_destroy(SignalMutPointerServerPublicParams p); + +SignalFfiError *signal_server_public_params_get_endorsement_public_key(SignalOwnedBuffer *out, SignalConstPointerServerPublicParams params); + +SignalFfiError *signal_server_public_params_receive_auth_credential_with_pni_as_service_id(SignalOwnedBuffer *out, SignalConstPointerServerPublicParams params, const SignalServiceIdFixedWidthBinaryBytes *aci, const SignalServiceIdFixedWidthBinaryBytes *pni, uint64_t redemption_time, SignalBorrowedBuffer auth_credential_with_pni_response_bytes); + +SignalFfiError *signal_server_public_params_receive_expiring_profile_key_credential(unsigned char (*out)[SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN], SignalConstPointerServerPublicParams server_public_params, const unsigned char (*request_context)[SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN], const unsigned char (*response)[SignalEXPIRING_PROFILE_KEY_CREDENTIAL_RESPONSE_LEN], uint64_t current_time_in_seconds); + +SignalFfiError *signal_server_public_params_receive_receipt_credential(unsigned char (*out)[SignalRECEIPT_CREDENTIAL_LEN], SignalConstPointerServerPublicParams server_public_params, const unsigned char (*request_context)[SignalRECEIPT_CREDENTIAL_REQUEST_CONTEXT_LEN], const unsigned char (*response)[SignalRECEIPT_CREDENTIAL_RESPONSE_LEN]); + +SignalFfiError *signal_server_public_params_serialize(SignalOwnedBuffer *out, SignalConstPointerServerPublicParams handle); + +SignalFfiError *signal_server_public_params_verify_signature(SignalConstPointerServerPublicParams server_public_params, SignalBorrowedBuffer message, const uint8_t (*notary_signature)[SignalSIGNATURE_LEN]); + +SignalFfiError *signal_server_secret_params_deserialize(SignalMutPointerServerSecretParams *out, SignalBorrowedBuffer buffer); + +SignalFfiError *signal_server_secret_params_destroy(SignalMutPointerServerSecretParams p); + +SignalFfiError *signal_server_secret_params_generate_deterministic(SignalMutPointerServerSecretParams *out, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]); + +SignalFfiError *signal_server_secret_params_get_public_params(SignalMutPointerServerPublicParams *out, SignalConstPointerServerSecretParams params); + +SignalFfiError *signal_server_secret_params_issue_auth_credential_with_pni_zkc_deterministic(SignalOwnedBuffer *out, SignalConstPointerServerSecretParams server_secret_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const SignalServiceIdFixedWidthBinaryBytes *aci, const SignalServiceIdFixedWidthBinaryBytes *pni, uint64_t redemption_time); + +SignalFfiError *signal_server_secret_params_issue_expiring_profile_key_credential_deterministic(unsigned char (*out)[SignalEXPIRING_PROFILE_KEY_CREDENTIAL_RESPONSE_LEN], SignalConstPointerServerSecretParams server_secret_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const unsigned char (*request)[SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN], const SignalServiceIdFixedWidthBinaryBytes *user_id, const unsigned char (*commitment)[SignalPROFILE_KEY_COMMITMENT_LEN], uint64_t expiration_in_seconds); + +SignalFfiError *signal_server_secret_params_issue_receipt_credential_deterministic(unsigned char (*out)[SignalRECEIPT_CREDENTIAL_RESPONSE_LEN], SignalConstPointerServerSecretParams server_secret_params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], const unsigned char (*request)[SignalRECEIPT_CREDENTIAL_REQUEST_LEN], uint64_t receipt_expiration_time, uint64_t receipt_level); + +SignalFfiError *signal_server_secret_params_serialize(SignalOwnedBuffer *out, SignalConstPointerServerSecretParams handle); + +SignalFfiError *signal_server_secret_params_sign_deterministic(uint8_t (*out)[SignalSIGNATURE_LEN], SignalConstPointerServerSecretParams params, const uint8_t (*randomness)[SignalRANDOMNESS_LEN], SignalBorrowedBuffer message); + +SignalFfiError *signal_server_secret_params_verify_auth_credential_presentation(SignalConstPointerServerSecretParams server_secret_params, const unsigned char (*group_public_params)[SignalGROUP_PUBLIC_PARAMS_LEN], SignalBorrowedBuffer presentation_bytes, uint64_t current_time_in_seconds); + +SignalFfiError *signal_server_secret_params_verify_profile_key_credential_presentation(SignalConstPointerServerSecretParams server_secret_params, const unsigned char (*group_public_params)[SignalGROUP_PUBLIC_PARAMS_LEN], SignalBorrowedBuffer presentation_bytes, uint64_t current_time_in_seconds); + +SignalFfiError *signal_server_secret_params_verify_receipt_credential_presentation(SignalConstPointerServerSecretParams server_secret_params, const unsigned char (*presentation)[SignalRECEIPT_CREDENTIAL_PRESENTATION_LEN]); + +SignalFfiError *signal_service_id_parse_from_service_id_binary(SignalServiceIdFixedWidthBinaryBytes *out, SignalBorrowedBuffer input); + +SignalFfiError *signal_service_id_parse_from_service_id_string(SignalServiceIdFixedWidthBinaryBytes *out, const char *input); + +SignalFfiError *signal_service_id_service_id_binary(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *value); + +SignalFfiError *signal_service_id_service_id_log(const char **out, const SignalServiceIdFixedWidthBinaryBytes *value); + +SignalFfiError *signal_service_id_service_id_string(const char **out, const SignalServiceIdFixedWidthBinaryBytes *value); + +SignalFfiError *signal_session_record_archive_current_state(SignalMutPointerSessionRecord session_record); + +SignalFfiError *signal_session_record_clone(SignalMutPointerSessionRecord *new_obj, SignalConstPointerSessionRecord obj); + +SignalFfiError *signal_session_record_current_ratchet_key_matches(bool *out, SignalConstPointerSessionRecord s, SignalConstPointerPublicKey key); + +SignalFfiError *signal_session_record_deserialize(SignalMutPointerSessionRecord *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_session_record_destroy(SignalMutPointerSessionRecord p); + +SignalFfiError *signal_session_record_get_local_registration_id(uint32_t *out, SignalConstPointerSessionRecord obj); + +SignalFfiError *signal_session_record_get_remote_registration_id(uint32_t *out, SignalConstPointerSessionRecord obj); + +SignalFfiError *signal_session_record_has_usable_sender_chain(bool *out, SignalConstPointerSessionRecord s, uint64_t now); + +SignalFfiError *signal_session_record_serialize(SignalOwnedBuffer *out, SignalConstPointerSessionRecord obj); + +SignalFfiError *signal_sgx_client_state_complete_handshake(SignalMutPointerSgxClientState cli, SignalBorrowedBuffer handshake_received); + +SignalFfiError *signal_sgx_client_state_destroy(SignalMutPointerSgxClientState p); + +SignalFfiError *signal_sgx_client_state_established_recv(SignalOwnedBuffer *out, SignalMutPointerSgxClientState cli, SignalBorrowedBuffer received_ciphertext); + +SignalFfiError *signal_sgx_client_state_established_send(SignalOwnedBuffer *out, SignalMutPointerSgxClientState cli, SignalBorrowedBuffer plaintext_to_send); + +SignalFfiError *signal_sgx_client_state_initial_request(SignalOwnedBuffer *out, SignalConstPointerSgxClientState obj); + +SignalFfiError *signal_signal_media_check_available(void); + +SignalFfiError *signal_signed_pre_key_record_clone(SignalMutPointerSignedPreKeyRecord *new_obj, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_deserialize(SignalMutPointerSignedPreKeyRecord *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_signed_pre_key_record_destroy(SignalMutPointerSignedPreKeyRecord p); + +SignalFfiError *signal_signed_pre_key_record_get_id(uint32_t *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_get_private_key(SignalMutPointerPrivateKey *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_get_public_key(SignalMutPointerPublicKey *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_get_signature(SignalOwnedBuffer *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_get_timestamp(uint64_t *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_signed_pre_key_record_new(SignalMutPointerSignedPreKeyRecord *out, uint32_t id, uint64_t timestamp, SignalConstPointerPublicKey pub_key, SignalConstPointerPrivateKey priv_key, SignalBorrowedBuffer signature); + +SignalFfiError *signal_signed_pre_key_record_serialize(SignalOwnedBuffer *out, SignalConstPointerSignedPreKeyRecord obj); + +SignalFfiError *signal_svr2_client_new(SignalMutPointerSgxClientState *out, SignalBorrowedBuffer mrenclave, SignalBorrowedBuffer attestation_msg, uint64_t current_timestamp); + +SignalFfiError *signal_tokio_async_context_cancel(SignalConstPointerTokioAsyncContext context, uint64_t raw_cancellation_id); + +SignalFfiError *signal_tokio_async_context_destroy(SignalMutPointerTokioAsyncContext p); + +SignalFfiError *signal_tokio_async_context_new(SignalMutPointerTokioAsyncContext *out); + +SignalFfiError *signal_unauthenticated_chat_connection_account_exists(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, const SignalServiceIdFixedWidthBinaryBytes *account); + +SignalFfiError *signal_unauthenticated_chat_connection_connect(SignalCPromiseMutPointerUnauthenticatedChatConnection *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, SignalBorrowedBytestringArray languages); + +SignalFfiError *signal_unauthenticated_chat_connection_destroy(SignalMutPointerUnauthenticatedChatConnection p); + +SignalFfiError *signal_unauthenticated_chat_connection_disconnect(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat); + +SignalFfiError *signal_unauthenticated_chat_connection_get_pre_keys_access_group_auth(SignalCPromiseFfiPreKeysResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer auth, const SignalServiceIdFixedWidthBinaryBytes *target, int32_t device); + +SignalFfiError *signal_unauthenticated_chat_connection_get_pre_keys_access_key_auth(SignalCPromiseFfiPreKeysResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, const uint8_t (*auth)[16], const SignalServiceIdFixedWidthBinaryBytes *target, int32_t device); + +SignalFfiError *signal_unauthenticated_chat_connection_info(SignalMutPointerChatConnectionInfo *out, SignalConstPointerUnauthenticatedChatConnection chat); + +SignalFfiError *signal_unauthenticated_chat_connection_init_listener(SignalConstPointerUnauthenticatedChatConnection chat, SignalConstPointerFfiChatListenerStruct listener); + +SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_hash(SignalCPromiseOptionalUuid *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer hash); + +SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_link(SignalCPromiseOptionalPairOfc_charu832 *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalUuid uuid, SignalBorrowedBuffer entropy); + +SignalFfiError *signal_unauthenticated_chat_connection_send(SignalCPromiseFfiChatResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalConstPointerHttpRequest http_request, uint32_t timeout_millis); + +SignalFfiError *signal_unauthenticated_chat_connection_send_multi_recipient_message(SignalCPromiseOwnedBufferOfServiceIdFixedWidthBinaryBytes *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer payload, uint64_t timestamp, SignalBorrowedBuffer auth, bool online_only, bool is_urgent); + +SignalFfiError *signal_unidentified_sender_message_content_deserialize(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalBorrowedBuffer data); + +SignalFfiError *signal_unidentified_sender_message_content_destroy(SignalMutPointerUnidentifiedSenderMessageContent p); + +SignalFfiError *signal_unidentified_sender_message_content_get_content_hint(uint32_t *out, SignalConstPointerUnidentifiedSenderMessageContent m); + +SignalFfiError *signal_unidentified_sender_message_content_get_contents(SignalOwnedBuffer *out, SignalConstPointerUnidentifiedSenderMessageContent obj); + +SignalFfiError *signal_unidentified_sender_message_content_get_group_id_or_empty(SignalOwnedBuffer *out, SignalConstPointerUnidentifiedSenderMessageContent m); + +SignalFfiError *signal_unidentified_sender_message_content_get_msg_type(uint8_t *out, SignalConstPointerUnidentifiedSenderMessageContent m); + +SignalFfiError *signal_unidentified_sender_message_content_get_sender_cert(SignalMutPointerSenderCertificate *out, SignalConstPointerUnidentifiedSenderMessageContent m); + +SignalFfiError *signal_unidentified_sender_message_content_new(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalConstPointerCiphertextMessage message, SignalConstPointerSenderCertificate sender, uint32_t content_hint, SignalBorrowedBuffer group_id); + +SignalFfiError *signal_unidentified_sender_message_content_new_from_content_and_type(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalBorrowedBuffer message_content, uint8_t message_type, SignalConstPointerSenderCertificate sender, uint32_t content_hint, SignalBorrowedBuffer group_id); + +SignalFfiError *signal_unidentified_sender_message_content_serialize(SignalOwnedBuffer *out, SignalConstPointerUnidentifiedSenderMessageContent obj); + +SignalFfiError *signal_username_candidates_from(SignalStringArray *out, const char *nickname, uint32_t min_len, uint32_t max_len); + +SignalFfiError *signal_username_hash(uint8_t (*out)[32], const char *username); + +SignalFfiError *signal_username_hash_from_parts(uint8_t (*out)[32], const char *nickname, const char *discriminator, uint32_t min_len, uint32_t max_len); + +SignalFfiError *signal_username_link_create(SignalOwnedBuffer *out, const char *username, SignalBorrowedBuffer entropy); + +SignalFfiError *signal_username_link_decrypt_username(const char **out, SignalBorrowedBuffer entropy, SignalBorrowedBuffer encrypted_username); + +SignalFfiError *signal_username_proof(SignalOwnedBuffer *out, const char *username, const uint8_t (*randomness)[32]); + +SignalFfiError *signal_username_verify(SignalBorrowedBuffer proof, SignalBorrowedBuffer hash); + +SignalFfiError *signal_uuid_ciphertext_check_valid_contents(SignalBorrowedBuffer buffer); + +SignalFfiError *signal_validating_mac_destroy(SignalMutPointerValidatingMac p); + +SignalFfiError *signal_validating_mac_finalize(int32_t *out, SignalMutPointerValidatingMac mac); + +SignalFfiError *signal_validating_mac_initialize(SignalMutPointerValidatingMac *out, SignalBorrowedBuffer key, uint32_t chunk_size, SignalBorrowedBuffer digests); + +SignalFfiError *signal_validating_mac_update(int32_t *out, SignalMutPointerValidatingMac mac, SignalBorrowedBuffer bytes, uint32_t offset, uint32_t length); + +SignalFfiError *signal_webp_sanitizer_sanitize(SignalConstPointerFfiSyncInputStreamStruct input); + +#endif /* SIGNAL_FFI_H_ */ diff --git a/pkg/libsignalgo/logging.go b/pkg/libsignalgo/logging.go index 9fdfe65..9d21afa 100644 --- a/pkg/libsignalgo/logging.go +++ b/pkg/libsignalgo/logging.go @@ -19,9 +19,8 @@ package libsignalgo /* #include <./libsignal-ffi.h> -extern void signal_log_callback(void *ctx, SignalLogLevel level, SignalCStringPtr file, uint32_t line, SignalCStringPtr message); +extern void signal_log_callback(void *ctx, SignalLogLevel level, char *file, uint32_t line, char *message); extern void signal_log_flush_callback(void *ctx); -extern void signal_log_destroy_callback(void *ctx); */ import "C" import ( @@ -32,8 +31,8 @@ import ( var ffiLogger Logger //export signal_log_callback -func signal_log_callback(ctx unsafe.Pointer, level C.SignalLogLevel, file C.SignalCStringPtr, line C.uint32_t, message C.SignalCStringPtr) { - ffiLogger.Log(LogLevel(int(level)), CopyCStringToString(file), uint(line), CopyCStringToString(message)) +func signal_log_callback(ctx unsafe.Pointer, level C.SignalLogLevel, file *C.char, line C.uint32_t, message *C.char) { + ffiLogger.Log(LogLevel(int(level)), C.GoString(file), uint(line), C.GoString(message)) } //export signal_log_flush_callback @@ -41,11 +40,6 @@ func signal_log_flush_callback(ctx unsafe.Pointer) { ffiLogger.Flush() } -//export signal_log_destroy_callback -func signal_log_destroy_callback(ctx unsafe.Pointer) { - ffiLogger.Destroy() -} - type LogLevel int const ( @@ -59,14 +53,12 @@ const ( type Logger interface { Log(level LogLevel, file string, line uint, message string) Flush() - Destroy() } func InitLogger(level LogLevel, logger Logger) { ffiLogger = logger - C.signal_init_logger(C.SignalLogLevel(level), C.SignalFfiLoggerStruct{ - log: C.SignalFfiLoggerLog(C.signal_log_callback), - flush: C.SignalFfiLoggerFlush(C.signal_log_flush_callback), - destroy: C.SignalFfiLoggerDestroy(C.signal_log_destroy_callback), + C.signal_init_logger(C.SignalLogLevel(level), C.SignalFfiLogger{ + log: C.SignalLogCallback(C.signal_log_callback), + flush: C.SignalLogFlushCallback(C.signal_log_flush_callback), }) } diff --git a/pkg/libsignalgo/message.go b/pkg/libsignalgo/message.go index 5496da9..f016daa 100644 --- a/pkg/libsignalgo/message.go +++ b/pkg/libsignalgo/message.go @@ -27,7 +27,7 @@ import ( "time" ) -func Encrypt(ctx context.Context, plaintext []byte, forAddress, localAddress *Address, sessionStore SessionStore, identityKeyStore IdentityKeyStore) (*CiphertextMessage, error) { +func Encrypt(ctx context.Context, plaintext []byte, forAddress *Address, sessionStore SessionStore, identityKeyStore IdentityKeyStore) (*CiphertextMessage, error) { var ciphertextMessage C.SignalMutPointerCiphertextMessage var now C.uint64_t = C.uint64_t(time.Now().Unix()) callbackCtx := NewCallbackContext(ctx) @@ -36,7 +36,6 @@ func Encrypt(ctx context.Context, plaintext []byte, forAddress, localAddress *Ad &ciphertextMessage, BytesToBuffer(plaintext), forAddress.constPtr(), - localAddress.constPtr(), callbackCtx.wrapSessionStore(sessionStore), callbackCtx.wrapIdentityKeyStore(identityKeyStore), now, @@ -49,7 +48,7 @@ func Encrypt(ctx context.Context, plaintext []byte, forAddress, localAddress *Ad return wrapCiphertextMessage(ciphertextMessage.raw), nil } -func Decrypt(ctx context.Context, message *Message, fromAddress, localAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore) ([]byte, error) { +func Decrypt(ctx context.Context, message *Message, fromAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore) ([]byte, error) { callbackCtx := NewCallbackContext(ctx) defer callbackCtx.Unref() var decrypted C.SignalOwnedBuffer = C.SignalOwnedBuffer{} @@ -57,7 +56,6 @@ func Decrypt(ctx context.Context, message *Message, fromAddress, localAddress *A &decrypted, message.constPtr(), fromAddress.constPtr(), - localAddress.constPtr(), callbackCtx.wrapSessionStore(sessionStore), callbackCtx.wrapIdentityKeyStore(identityStore), ) @@ -71,10 +69,10 @@ func Decrypt(ctx context.Context, message *Message, fromAddress, localAddress *A type Message struct { nc noCopy - ptr *C.SignalSignalMessage + ptr *C.SignalMessage } -func wrapMessage(ptr *C.SignalSignalMessage) *Message { +func wrapMessage(ptr *C.SignalMessage) *Message { message := &Message{ptr: ptr} runtime.SetFinalizer(message, (*Message).Destroy) return message @@ -156,3 +154,22 @@ func (m *Message) GetCounter() (uint32, error) { } return uint32(counter), nil } + +func (m *Message) VerifyMAC(sender, receiver *PublicKey, macKey []byte) (bool, error) { + var result C.bool + signalFfiError := C.signal_message_verify_mac( + &result, + m.constPtr(), + sender.constPtr(), + receiver.constPtr(), + BytesToBuffer(macKey), + ) + runtime.KeepAlive(m) + runtime.KeepAlive(sender) + runtime.KeepAlive(receiver) + runtime.KeepAlive(macKey) + if signalFfiError != nil { + return false, wrapError(signalFfiError) + } + return bool(result), nil +} diff --git a/pkg/libsignalgo/messagebackupkey.go b/pkg/libsignalgo/messagebackupkey.go index 2ca753a..65b4136 100644 --- a/pkg/libsignalgo/messagebackupkey.go +++ b/pkg/libsignalgo/messagebackupkey.go @@ -20,17 +20,16 @@ package libsignalgo #include "./libsignal-ffi.h" */ import "C" -import "runtime" +import ( + "runtime" + "unsafe" +) type MessageBackupKey struct { nc noCopy ptr *C.SignalMessageBackupKey } -const MessageBackupKeyBytesLength = 32 - -type messageBackupKeyBytes = fixedArray32 - func wrapMessageBackupKey(ptr *C.SignalMessageBackupKey) *MessageBackupKey { backupKey := &MessageBackupKey{ptr: ptr} runtime.SetFinalizer(backupKey, (*MessageBackupKey).Destroy) @@ -39,12 +38,10 @@ func wrapMessageBackupKey(ptr *C.SignalMessageBackupKey) *MessageBackupKey { func MessageBackupKeyFromAccountEntropyPool(aep AccountEntropyPool, aci ServiceID) (*MessageBackupKey, error) { var bk C.SignalMutPointerMessageBackupKey - aepC, free := GoStringToCString(string(aep)) - defer free() signalFfiError := C.signal_message_backup_key_from_account_entropy_pool( &bk, - aepC, - aci.cConstFixedArray(), + C.CString(string(aep)), + aci.CFixedBytes(), nil, // TODO what's a forward secrecy token? ) runtime.KeepAlive(aep) @@ -58,8 +55,8 @@ func MessageBackupKeyFromBackupKeyAndID(backupKey *BackupKey, backupID *BackupID var bk C.SignalMutPointerMessageBackupKey signalFfiError := C.signal_message_backup_key_from_backup_key_and_backup_id( &bk, - backupKey.cConstFixedArray(), - backupID.cConstFixedArray(), + (*[C.SignalBACKUP_KEY_LEN]C.uint8_t)(unsafe.Pointer(backupKey)), + (*[BackupIDLength]C.uint8_t)(unsafe.Pointer(backupID)), nil, // TODO what's a forward secrecy token? ) runtime.KeepAlive(backupKey) @@ -83,26 +80,26 @@ func (bk *MessageBackupKey) Destroy() error { return wrapError(C.signal_message_backup_key_destroy(bk.mutPtr())) } -func (bk *MessageBackupKey) GetHMACKey() ([MessageBackupKeyBytesLength]byte, error) { - var out messageBackupKeyBytes +func (bk *MessageBackupKey) GetHMACKey() ([32]byte, error) { + var out [32]byte signalFfiError := C.signal_message_backup_key_get_hmac_key( - out.cFixedArray(), + (*[32]C.uint8_t)(unsafe.Pointer(&out)), bk.constPtr(), ) if signalFfiError != nil { - return [MessageBackupKeyBytesLength]byte(out), wrapError(signalFfiError) + return out, wrapError(signalFfiError) } - return [MessageBackupKeyBytesLength]byte(out), nil + return out, nil } -func (bk *MessageBackupKey) GetAESKey() ([MessageBackupKeyBytesLength]byte, error) { - var out messageBackupKeyBytes +func (bk *MessageBackupKey) GetAESKey() ([32]byte, error) { + var out [32]byte signalFfiError := C.signal_message_backup_key_get_aes_key( - out.cFixedArray(), + (*[32]C.uint8_t)(unsafe.Pointer(&out)), bk.constPtr(), ) if signalFfiError != nil { - return [MessageBackupKeyBytesLength]byte(out), wrapError(signalFfiError) + return out, wrapError(signalFfiError) } - return [MessageBackupKeyBytesLength]byte(out), nil + return out, nil } diff --git a/pkg/libsignalgo/prekey.go b/pkg/libsignalgo/prekey.go index 29e640e..4d01f89 100644 --- a/pkg/libsignalgo/prekey.go +++ b/pkg/libsignalgo/prekey.go @@ -26,7 +26,7 @@ import ( "runtime" ) -func DecryptPreKey(ctx context.Context, preKeyMessage *PreKeyMessage, fromAddress, localAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore, preKeyStore PreKeyStore, signedPreKeyStore SignedPreKeyStore, kyberPreKeyStore KyberPreKeyStore) ([]byte, error) { +func DecryptPreKey(ctx context.Context, preKeyMessage *PreKeyMessage, fromAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore, preKeyStore PreKeyStore, signedPreKeyStore SignedPreKeyStore, kyberPreKeyStore KyberPreKeyStore) ([]byte, error) { callbackCtx := NewCallbackContext(ctx) defer callbackCtx.Unref() var decrypted C.SignalOwnedBuffer = C.SignalOwnedBuffer{} @@ -34,7 +34,6 @@ func DecryptPreKey(ctx context.Context, preKeyMessage *PreKeyMessage, fromAddres &decrypted, preKeyMessage.constPtr(), fromAddress.constPtr(), - localAddress.constPtr(), callbackCtx.wrapSessionStore(sessionStore), callbackCtx.wrapIdentityKeyStore(identityStore), callbackCtx.wrapPreKeyStore(preKeyStore), diff --git a/pkg/libsignalgo/prekeybundle.go b/pkg/libsignalgo/prekeybundle.go index 8a6fcaa..4cd5547 100644 --- a/pkg/libsignalgo/prekeybundle.go +++ b/pkg/libsignalgo/prekeybundle.go @@ -27,14 +27,13 @@ import ( "time" ) -func ProcessPreKeyBundle(ctx context.Context, bundle *PreKeyBundle, forAddress, localAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore) error { +func ProcessPreKeyBundle(ctx context.Context, bundle *PreKeyBundle, forAddress *Address, sessionStore SessionStore, identityStore IdentityKeyStore) error { callbackCtx := NewCallbackContext(ctx) defer callbackCtx.Unref() var now C.uint64_t = C.uint64_t(time.Now().Unix()) signalFfiError := C.signal_process_prekey_bundle( bundle.constPtr(), forAddress.constPtr(), - localAddress.constPtr(), callbackCtx.wrapSessionStore(sessionStore), callbackCtx.wrapIdentityKeyStore(identityStore), now, diff --git a/pkg/libsignalgo/prekeystore.go b/pkg/libsignalgo/prekeystore.go index 8c3c36f..ed8ea21 100644 --- a/pkg/libsignalgo/prekeystore.go +++ b/pkg/libsignalgo/prekeystore.go @@ -76,9 +76,9 @@ func signal_destroy_pre_key_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapPreKeyStore(store PreKeyStore) C.SignalConstPointerFfiPreKeyStoreStruct { return C.SignalConstPointerFfiPreKeyStoreStruct{&C.SignalPreKeyStore{ ctx: wrapStore(ctx, store), - load_pre_key: C.SignalFfiPreKeyStoreLoadPreKey(C.signal_load_pre_key_callback), - store_pre_key: C.SignalFfiPreKeyStoreStorePreKey(C.signal_store_pre_key_callback), - remove_pre_key: C.SignalFfiPreKeyStoreRemovePreKey(C.signal_remove_pre_key_callback), - destroy: C.SignalFfiPreKeyStoreDestroy(C.signal_destroy_pre_key_store_callback), + load_pre_key: C.SignalFfiBridgePreKeyStoreLoadPreKey(C.signal_load_pre_key_callback), + store_pre_key: C.SignalFfiBridgePreKeyStoreStorePreKey(C.signal_store_pre_key_callback), + remove_pre_key: C.SignalFfiBridgePreKeyStoreRemovePreKey(C.signal_remove_pre_key_callback), + destroy: C.SignalFfiBridgePreKeyStoreDestroy(C.signal_destroy_pre_key_store_callback), }} } diff --git a/pkg/libsignalgo/profilekey.go b/pkg/libsignalgo/profilekey.go index 007c635..e49801a 100644 --- a/pkg/libsignalgo/profilekey.go +++ b/pkg/libsignalgo/profilekey.go @@ -32,38 +32,12 @@ import ( "go.mau.fi/util/random" ) -const ProfileKeyLength = 32 -const AccessKeyLength = 16 -const ProfileKeyVersionLength = 64 +const ProfileKeyLength = C.SignalPROFILE_KEY_LEN type ProfileKey [ProfileKeyLength]byte -type ProfileKeyCommitment = fixedArray97 -type ProfileKeyVersion [ProfileKeyVersionLength]byte -type AccessKey [AccessKeyLength]byte - -func (pk *ProfileKey) cFixedArray() *C.SignalType_FixedArray32_uint8_t { - return (*C.SignalType_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() 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() cFixedArray16Compat { - return cFixedArray16Compat(ak.cFixedArray()) -} +type ProfileKeyCommitment [C.SignalPROFILE_KEY_COMMITMENT_LEN]byte +type ProfileKeyVersion [C.SignalPROFILE_KEY_VERSION_ENCODED_LEN]byte +type AccessKey [C.SignalACCESS_KEY_LEN]byte func DeserializeProfileKey(bytes []byte) (*ProfileKey, error) { if len(bytes) == 0 { @@ -99,7 +73,7 @@ func (ak *AccessKey) Xor(other *AccessKey) *AccessKey { return ak } var result AccessKey - for i := 0; i < AccessKeyLength; i++ { + for i := 0; i < C.SignalACCESS_KEY_LEN; i++ { result[i] = ak[i] ^ other[i] } return &result @@ -110,12 +84,13 @@ func (ak *AccessKey) String() string { } func (pk *ProfileKey) GetCommitment(u uuid.UUID) (*ProfileKeyCommitment, error) { - var result ProfileKeyCommitment - c_uuid := NewACIServiceID(u).cConstFixedArray() + c_result := [C.SignalPROFILE_KEY_COMMITMENT_LEN]C.uchar{} + c_profileKey := (*[C.SignalPROFILE_KEY_LEN]C.uchar)(unsafe.Pointer(pk)) + c_uuid := NewACIServiceID(u).CFixedBytes() signalFfiError := C.signal_profile_key_get_commitment( - result.cFixedArray(), - pk.cConstFixedArray(), + &c_result, + c_profileKey, c_uuid, ) runtime.KeepAlive(pk) @@ -125,16 +100,19 @@ func (pk *ProfileKey) GetCommitment(u uuid.UUID) (*ProfileKeyCommitment, error) return nil, wrapError(signalFfiError) } + var result ProfileKeyCommitment + copy(result[:], C.GoBytes(unsafe.Pointer(&c_result), C.int(C.SignalPROFILE_KEY_COMMITMENT_LEN))) return &result, nil } func (pk *ProfileKey) GetProfileKeyVersion(u uuid.UUID) (*ProfileKeyVersion, error) { - var result ProfileKeyVersion - c_uuid := NewACIServiceID(u).cConstFixedArray() + c_result := [C.SignalPROFILE_KEY_VERSION_ENCODED_LEN]C.uchar{} + c_profileKey := (*[C.SignalPROFILE_KEY_LEN]C.uchar)(unsafe.Pointer(pk)) + c_uuid := NewACIServiceID(u).CFixedBytes() signalFfiError := C.signal_profile_key_get_profile_key_version( - result.cFixedArray(), - pk.cConstFixedArray(), + &c_result, + c_profileKey, c_uuid, ) runtime.KeepAlive(pk) @@ -144,15 +122,18 @@ func (pk *ProfileKey) GetProfileKeyVersion(u uuid.UUID) (*ProfileKeyVersion, err return nil, wrapError(signalFfiError) } + var result ProfileKeyVersion + copy(result[:], C.GoBytes(unsafe.Pointer(&c_result), C.int(C.SignalPROFILE_KEY_VERSION_ENCODED_LEN))) return &result, nil } func (pk *ProfileKey) DeriveAccessKey() (*AccessKey, error) { - var result AccessKey + c_result := [C.SignalACCESS_KEY_LEN]C.uchar{} + c_profileKey := (*[C.SignalPROFILE_KEY_LEN]C.uchar)(unsafe.Pointer(pk)) signalFfiError := C.signal_profile_key_derive_access_key( - result.cFixedArray(), - pk.cConstFixedArray(), + &c_result, + c_profileKey, ) runtime.KeepAlive(pk) @@ -160,35 +141,31 @@ func (pk *ProfileKey) DeriveAccessKey() (*AccessKey, error) { return nil, wrapError(signalFfiError) } + var result AccessKey + copy(result[:], C.GoBytes(unsafe.Pointer(&c_result), C.int(C.SignalACCESS_KEY_LEN))) return &result, nil } -type ProfileKeyCredentialRequestContext [473]byte -type ProfileKeyCredentialRequest = fixedArray329 +type ProfileKeyCredentialRequestContext [C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN]byte +type ProfileKeyCredentialRequest [C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN]byte type ProfileKeyCredentialResponse []byte type ProfileKeyCredentialPresentation []byte -type ExpiringProfileKeyCredential = fixedArray153 -type ExpiringProfileKeyCredentialResponse = fixedArray497 - -func (p *ProfileKeyCredentialRequestContext) cFixedArray() *C.SignalType_FixedArray473_uint8_t { - return (*C.SignalType_FixedArray473_uint8_t)(unsafe.Pointer(p)) -} - -func (p *ProfileKeyCredentialRequestContext) cConstFixedArray() cFixedArray473Compat { - return cFixedArray473Compat(p.cFixedArray()) -} +type ExpiringProfileKeyCredential [C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN]byte +type ExpiringProfileKeyCredentialResponse [C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_RESPONSE_LEN]byte func CreateProfileKeyCredentialRequestContext(serverPublicParams *ServerPublicParams, u uuid.UUID, profileKey ProfileKey) (*ProfileKeyCredentialRequestContext, error) { - var result ProfileKeyCredentialRequestContext - randBytes := Randomness(random.Bytes(RandomnessLength)) - c_uuid := NewACIServiceID(u).cConstFixedArray() + c_result := [C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN]C.uchar{} + randBytes := [32]byte(random.Bytes(32)) + c_random := (*[32]C.uchar)(unsafe.Pointer(&randBytes[0])) + c_profileKey := (*[C.SignalPROFILE_KEY_LEN]C.uchar)(unsafe.Pointer(&profileKey[0])) + c_uuid := NewACIServiceID(u).CFixedBytes() signalFfiError := C.signal_server_public_params_create_profile_key_credential_request_context_deterministic( - result.cFixedArray(), + &c_result, C.SignalConstPointerServerPublicParams{serverPublicParams}, - randBytes.cConstFixedArray(), + c_random, c_uuid, - profileKey.cConstFixedArray(), + c_profileKey, ) runtime.KeepAlive(u) runtime.KeepAlive(profileKey) @@ -196,20 +173,23 @@ func CreateProfileKeyCredentialRequestContext(serverPublicParams *ServerPublicPa if signalFfiError != nil { return nil, wrapError(signalFfiError) } + result := ProfileKeyCredentialRequestContext(C.GoBytes(unsafe.Pointer(&c_result), C.int(C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN))) return &result, nil } func (p *ProfileKeyCredentialRequestContext) ProfileKeyCredentialRequestContextGetRequest() (*ProfileKeyCredentialRequest, error) { - var result ProfileKeyCredentialRequest + c_result := [C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN]C.uchar{} + c_context := (*[C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN]C.uchar)(unsafe.Pointer(p)) signalFfiError := C.signal_profile_key_credential_request_context_get_request( - result.cFixedArray(), - p.cConstFixedArray(), + &c_result, + c_context, ) runtime.KeepAlive(p) if signalFfiError != nil { return nil, wrapError(signalFfiError) } + result := ProfileKeyCredentialRequest(C.GoBytes(unsafe.Pointer(&c_result), C.int(C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_LEN))) return &result, nil } @@ -225,12 +205,12 @@ func NewExpiringProfileKeyCredentialResponse(b []byte) (*ExpiringProfileKeyCrede } func ReceiveExpiringProfileKeyCredential(spp *ServerPublicParams, requestContext *ProfileKeyCredentialRequestContext, response *ExpiringProfileKeyCredentialResponse, currentTimeInSeconds uint64) (*ExpiringProfileKeyCredential, error) { - var credential ExpiringProfileKeyCredential + c_credential := [C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN]C.uchar{} signalFfiError := C.signal_server_public_params_receive_expiring_profile_key_credential( - credential.cFixedArray(), + &c_credential, C.SignalConstPointerServerPublicParams{spp}, - requestContext.cConstFixedArray(), - response.cConstFixedArray(), + (*[C.SignalPROFILE_KEY_CREDENTIAL_REQUEST_CONTEXT_LEN]C.uchar)(unsafe.Pointer(requestContext)), + (*[C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_RESPONSE_LEN]C.uchar)(unsafe.Pointer(response)), (C.uint64_t)(currentTimeInSeconds), ) runtime.KeepAlive(requestContext) @@ -239,6 +219,8 @@ func ReceiveExpiringProfileKeyCredential(spp *ServerPublicParams, requestContext if signalFfiError != nil { return nil, wrapError(signalFfiError) } + credential := ExpiringProfileKeyCredential{} + copy(credential[:], C.GoBytes(unsafe.Pointer(&c_credential), C.int(C.SignalEXPIRING_PROFILE_KEY_CREDENTIAL_LEN))) return &credential, nil } @@ -249,21 +231,25 @@ func (a ProfileKeyCredentialPresentation) CheckValidContents() error { } func (a ProfileKeyCredentialPresentation) UUIDCiphertext() (UUIDCiphertext, error) { - var out UUIDCiphertext - signalFfiError := C.signal_profile_key_credential_presentation_get_uuid_ciphertext(out.cFixedArray(), BytesToBuffer(a)) + out := [C.SignalUUID_CIPHERTEXT_LEN]C.uchar{} + signalFfiError := C.signal_profile_key_credential_presentation_get_uuid_ciphertext(&out, BytesToBuffer(a)) runtime.KeepAlive(a) if signalFfiError != nil { return UUIDCiphertext{}, wrapError(signalFfiError) } - return out, nil + var result UUIDCiphertext + copy(result[:], C.GoBytes(unsafe.Pointer(&out), C.int(C.SignalUUID_CIPHERTEXT_LEN))) + return result, nil } func (a ProfileKeyCredentialPresentation) ProfileKeyCiphertext() (ProfileKeyCiphertext, error) { - var out ProfileKeyCiphertext - signalFfiError := C.signal_profile_key_credential_presentation_get_profile_key_ciphertext(out.cFixedArray(), BytesToBuffer(a)) + out := [C.SignalPROFILE_KEY_CIPHERTEXT_LEN]C.uchar{} + signalFfiError := C.signal_profile_key_credential_presentation_get_profile_key_ciphertext(&out, BytesToBuffer(a)) runtime.KeepAlive(a) if signalFfiError != nil { return ProfileKeyCiphertext{}, wrapError(signalFfiError) } - return out, nil + var result ProfileKeyCiphertext + copy(result[:], C.GoBytes(unsafe.Pointer(&out), C.int(C.SignalPROFILE_KEY_CIPHERTEXT_LEN))) + return result, nil } diff --git a/pkg/libsignalgo/sealedsender.go b/pkg/libsignalgo/sealedsender.go index 84ff254..56ffe8b 100644 --- a/pkg/libsignalgo/sealedsender.go +++ b/pkg/libsignalgo/sealedsender.go @@ -44,17 +44,8 @@ func NewSealedSenderAddress(e164 string, uuid uuid.UUID, deviceID uint32) *Seale } } -func SealedSenderEncryptPlaintext( - ctx context.Context, - message []byte, - contentHint UnidentifiedSenderMessageContentHint, - forAddress, localAddress *Address, - fromSenderCert *SenderCertificate, - sessionStore SessionStore, - identityStore IdentityKeyStore, - groupID *GroupIdentifier, -) ([]byte, error) { - ciphertextMessage, err := Encrypt(ctx, message, forAddress, localAddress, sessionStore, identityStore) +func SealedSenderEncryptPlaintext(ctx context.Context, message []byte, contentHint UnidentifiedSenderMessageContentHint, forAddress *Address, fromSenderCert *SenderCertificate, sessionStore SessionStore, identityStore IdentityKeyStore, groupID *GroupIdentifier) ([]byte, error) { + ciphertextMessage, err := Encrypt(ctx, message, forAddress, sessionStore, identityStore) if err != nil { return nil, err } diff --git a/pkg/libsignalgo/sendercertificate.go b/pkg/libsignalgo/sendercertificate.go index f65e880..47cf958 100644 --- a/pkg/libsignalgo/sendercertificate.go +++ b/pkg/libsignalgo/sendercertificate.go @@ -44,14 +44,10 @@ func wrapSenderCertificate(ptr *C.SignalSenderCertificate) *SenderCertificate { // the Swift bindings). func NewSenderCertificate(sender *SealedSenderAddress, publicKey *PublicKey, expiration time.Time, signerCertificate *ServerCertificate, signerKey *PrivateKey) (*SenderCertificate, error) { var sc C.SignalMutPointerSenderCertificate - senderUUIDStr, freeSenderUUIDStr := GoStringToCString(sender.UUID.String()) - defer freeSenderUUIDStr() - senderE164Str, freeSenderE164Str := GoStringToCString(sender.E164) - defer freeSenderE164Str() signalFfiError := C.signal_sender_certificate_new( &sc, - senderUUIDStr, - senderE164Str, + C.CString(sender.UUID.String()), + C.CString(sender.E164), C.uint32_t(sender.DeviceID), publicKey.constPtr(), C.uint64_t(expiration.UnixMilli()), @@ -139,7 +135,7 @@ func (sc *SenderCertificate) GetSignature() ([]byte, error) { } func (sc *SenderCertificate) GetSenderUUID() (uuid.UUID, error) { - var rawUUID C.SignalCStringPtr + var rawUUID *C.char signalFfiError := C.signal_sender_certificate_get_sender_uuid(&rawUUID, sc.constPtr()) runtime.KeepAlive(sc) if signalFfiError != nil { @@ -149,7 +145,7 @@ func (sc *SenderCertificate) GetSenderUUID() (uuid.UUID, error) { } func (sc *SenderCertificate) GetSenderE164() (string, error) { - var e164 C.SignalCStringPtr + var e164 *C.char signalFfiError := C.signal_sender_certificate_get_sender_e164(&e164, sc.constPtr()) runtime.KeepAlive(sc) if signalFfiError != nil { diff --git a/pkg/libsignalgo/senderkeystore.go b/pkg/libsignalgo/senderkeystore.go index 1649216..a07a287 100644 --- a/pkg/libsignalgo/senderkeystore.go +++ b/pkg/libsignalgo/senderkeystore.go @@ -70,8 +70,8 @@ func signal_destroy_sender_key_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapSenderKeyStore(store SenderKeyStore) C.SignalConstPointerFfiSenderKeyStoreStruct { return C.SignalConstPointerFfiSenderKeyStoreStruct{&C.SignalSenderKeyStore{ ctx: wrapStore(ctx, store), - load_sender_key: C.SignalFfiSenderKeyStoreLoadSenderKey(C.signal_load_sender_key_callback), - store_sender_key: C.SignalFfiSenderKeyStoreStoreSenderKey(C.signal_store_sender_key_callback), - destroy: C.SignalFfiSenderKeyStoreDestroy(C.signal_destroy_sender_key_store_callback), + load_sender_key: C.SignalFfiBridgeSenderKeyStoreLoadSenderKey(C.signal_load_sender_key_callback), + store_sender_key: C.SignalFfiBridgeSenderKeyStoreStoreSenderKey(C.signal_store_sender_key_callback), + destroy: C.SignalFfiBridgeSenderKeyStoreDestroy(C.signal_destroy_sender_key_store_callback), }} } diff --git a/pkg/libsignalgo/serverpublicparams.go b/pkg/libsignalgo/serverpublicparams.go index 752bc2d..c1de0cd 100644 --- a/pkg/libsignalgo/serverpublicparams.go +++ b/pkg/libsignalgo/serverpublicparams.go @@ -24,16 +24,15 @@ import "C" import ( "fmt" "runtime" + "unsafe" ) type ServerPublicParams = C.SignalServerPublicParams -type NotarySignature = fixedArray64 - -const ServerPublicParamsLength = 673 +type NotarySignature [C.SignalSIGNATURE_LEN]byte func DeserializeServerPublicParams(params []byte) (*ServerPublicParams, error) { - if len(params) != ServerPublicParamsLength { - return nil, fmt.Errorf("invalid server public params length: %d (expected %d)", len(params), ServerPublicParamsLength) + if len(params) != C.SignalSERVER_PUBLIC_PARAMS_LEN { + return nil, fmt.Errorf("invalid server public params length: %d (expected %d)", len(params), int(C.SignalSERVER_PUBLIC_PARAMS_LEN)) } var out C.SignalMutPointerServerPublicParams signalFfiError := C.signal_server_public_params_deserialize(&out, BytesToBuffer(params[:])) @@ -48,10 +47,11 @@ func ServerPublicParamsVerifySignature( messageBytes []byte, NotarySignature NotarySignature, ) error { + c_notarySignature := (*[C.SignalSIGNATURE_LEN]C.uint8_t)(unsafe.Pointer(&NotarySignature[0])) signalFfiError := C.signal_server_public_params_verify_signature( C.SignalConstPointerServerPublicParams{serverPublicParams}, BytesToBuffer(messageBytes), - NotarySignature.cConstFixedArray(), + c_notarySignature, ) runtime.KeepAlive(messageBytes) return wrapError(signalFfiError) diff --git a/pkg/libsignalgo/serviceid.go b/pkg/libsignalgo/serviceid.go index 38631ee..21d64b2 100644 --- a/pkg/libsignalgo/serviceid.go +++ b/pkg/libsignalgo/serviceid.go @@ -133,10 +133,7 @@ func (s ServiceID) MarshalZerologObject(e *zerolog.Event) { e.Stringer("uuid", s.UUID) } -const ServiceIDUUIDLength = 16 -const ServiceIDFixedBytesLength = 17 - -type ServiceIDFixedBytes = fixedArray17 +type ServiceIDFixedBytes [17]byte func (s ServiceID) FixedBytes() *ServiceIDFixedBytes { var result ServiceIDFixedBytes @@ -165,18 +162,18 @@ func ServiceIDFromString(val string) (ServiceID, error) { } func ServiceIDFromBytes(bytes []byte) (ServiceID, error) { - if len(bytes) == ServiceIDUUIDLength { + if len(bytes) == 16 { return NewACIServiceID(uuid.UUID(bytes)), nil - } else if len(bytes) == ServiceIDFixedBytesLength { + } else if len(bytes) == 17 { return ServiceID{ Type: ServiceIDType(bytes[0]), UUID: uuid.UUID(bytes[1:]), }, nil } - return EmptyServiceID, fmt.Errorf("invalid ServiceID byte length: %d (expected %d or %d)", len(bytes), ServiceIDUUIDLength, ServiceIDFixedBytesLength) + return EmptyServiceID, fmt.Errorf("invalid ServiceID byte length: %d (expected 16 or 17)", len(bytes)) } -func ServiceIDFromCFixedBytes(serviceID *C.SignalType_FixedArray17_uint8_t) ServiceID { +func ServiceIDFromCFixedBytes(serviceID *C.SignalServiceIdFixedWidthBinaryBytes) ServiceID { var id ServiceID fixedBytes := (*ServiceIDFixedBytes)(unsafe.Pointer(serviceID)) id.Type = ServiceIDType(fixedBytes[0]) @@ -184,10 +181,6 @@ func ServiceIDFromCFixedBytes(serviceID *C.SignalType_FixedArray17_uint8_t) Serv return id } -func (s ServiceID) cFixedArray() *C.SignalType_FixedArray17_uint8_t { - return s.FixedBytes().cFixedArray() -} - -func (s ServiceID) cConstFixedArray() cFixedArray17Compat { - return cFixedArray17Compat(s.cFixedArray()) +func (s ServiceID) CFixedBytes() cPNIType { + return cPNIType(unsafe.Pointer(s.FixedBytes())) } diff --git a/pkg/libsignalgo/serviceid_clang.go b/pkg/libsignalgo/serviceid_clang.go new file mode 100644 index 0000000..89197b6 --- /dev/null +++ b/pkg/libsignalgo/serviceid_clang.go @@ -0,0 +1,11 @@ +//go:build darwin || android || ios || (windows && arm64) + +package libsignalgo + +/* +#include "./libsignal-ffi.h" +#include +*/ +import "C" + +type cPNIType = *C.SignalServiceIdFixedWidthBinaryBytes diff --git a/pkg/libsignalgo/serviceid_gcc.go b/pkg/libsignalgo/serviceid_gcc.go new file mode 100644 index 0000000..0feb627 --- /dev/null +++ b/pkg/libsignalgo/serviceid_gcc.go @@ -0,0 +1,14 @@ +//go:build !(darwin || android || ios || (windows && arm64)) + +package libsignalgo + +/* +#include "./libsignal-ffi.h" +#include +*/ +import "C" + +// Hack for https://github.com/golang/go/issues/7270 +// The clang version is more correct, but doesn't work with gcc + +type cPNIType = *[17]C.uint8_t diff --git a/pkg/libsignalgo/session_test.go b/pkg/libsignalgo/session_test.go index dd05718..6d0b720 100644 --- a/pkg/libsignalgo/session_test.go +++ b/pkg/libsignalgo/session_test.go @@ -30,7 +30,7 @@ import ( "go.mau.fi/mautrix-signal/pkg/libsignalgo" ) -func initializeSessions(t *testing.T, aliceStore, bobStore *InMemorySignalProtocolStore, bobAddress, aliceAddress *libsignalgo.Address) { +func initializeSessions(t *testing.T, aliceStore, bobStore *InMemorySignalProtocolStore, bobAddress *libsignalgo.Address) { ctx := context.TODO() bobPreKey, err := libsignalgo.GeneratePrivateKey() @@ -86,7 +86,7 @@ func initializeSessions(t *testing.T, aliceStore, bobStore *InMemorySignalProtoc assert.NoError(t, err) // Alice processes the bundle - err = libsignalgo.ProcessPreKeyBundle(ctx, bobBundle, bobAddress, aliceAddress, aliceStore, aliceStore) + err = libsignalgo.ProcessPreKeyBundle(ctx, bobBundle, bobAddress, aliceStore, aliceStore) assert.NoError(t, err) record, err := aliceStore.LoadSession(ctx, bobAddress) @@ -132,11 +132,11 @@ func TestSessionCipher(t *testing.T) { aliceStore := NewInMemorySignalProtocolStore() bobStore := NewInMemorySignalProtocolStore() - initializeSessions(t, aliceStore, bobStore, bobAddress, aliceAddress) + initializeSessions(t, aliceStore, bobStore, bobAddress) alicePlaintext := []byte{8, 6, 7, 5, 3, 0, 9} - aliceCiphertext, err := libsignalgo.Encrypt(ctx, alicePlaintext, bobAddress, aliceAddress, aliceStore, aliceStore) + aliceCiphertext, err := libsignalgo.Encrypt(ctx, alicePlaintext, bobAddress, aliceStore, aliceStore) assert.NoError(t, err) aliceCiphertextMessageType, err := aliceCiphertext.MessageType() assert.NoError(t, err) @@ -147,13 +147,13 @@ func TestSessionCipher(t *testing.T) { bobCiphertext, err := libsignalgo.DeserializePreKeyMessage(aliceCiphertextSerialized) assert.NoError(t, err) - bobPlaintext, err := libsignalgo.DecryptPreKey(ctx, bobCiphertext, aliceAddress, bobAddress, bobStore, bobStore, bobStore, bobStore, bobStore) + bobPlaintext, err := libsignalgo.DecryptPreKey(ctx, bobCiphertext, aliceAddress, bobStore, bobStore, bobStore, bobStore, bobStore) assert.NoError(t, err) assert.Equal(t, alicePlaintext, bobPlaintext) bobPlaintext2 := []byte{23} - bobCiphertext2, err := libsignalgo.Encrypt(ctx, bobPlaintext2, aliceAddress, bobAddress, bobStore, bobStore) + bobCiphertext2, err := libsignalgo.Encrypt(ctx, bobPlaintext2, aliceAddress, bobStore, bobStore) assert.NoError(t, err) bobCiphertext2MessageType, err := bobCiphertext2.MessageType() assert.NoError(t, err) @@ -163,7 +163,7 @@ func TestSessionCipher(t *testing.T) { assert.NoError(t, err) aliceCiphertext2, err := libsignalgo.DeserializeMessage(bobCiphertext2Serialized) assert.NoError(t, err) - alicePlaintext2, err := libsignalgo.Decrypt(ctx, aliceCiphertext2, bobAddress, aliceAddress, aliceStore, aliceStore) + alicePlaintext2, err := libsignalgo.Decrypt(ctx, aliceCiphertext2, bobAddress, aliceStore, aliceStore) assert.NoError(t, err) assert.Equal(t, bobPlaintext2, alicePlaintext2) } @@ -183,11 +183,11 @@ func TestSessionCipherWithBadStore(t *testing.T) { aliceStore := NewInMemorySignalProtocolStore() bobStore := &BadInMemorySignalProtocolStore{NewInMemorySignalProtocolStore()} - initializeSessions(t, aliceStore, bobStore.InMemorySignalProtocolStore, bobAddress, aliceAddress) + initializeSessions(t, aliceStore, bobStore.InMemorySignalProtocolStore, bobAddress) alicePlaintext := []byte{8, 6, 7, 5, 3, 0, 9} - aliceCiphertext, err := libsignalgo.Encrypt(ctx, alicePlaintext, bobAddress, aliceAddress, aliceStore, aliceStore) + aliceCiphertext, err := libsignalgo.Encrypt(ctx, alicePlaintext, bobAddress, aliceStore, aliceStore) assert.NoError(t, err) aliceCiphertextMessageType, err := aliceCiphertext.MessageType() assert.NoError(t, err) @@ -198,7 +198,7 @@ func TestSessionCipherWithBadStore(t *testing.T) { bobCiphertext, err := libsignalgo.DeserializePreKeyMessage(aliceCiphertextSerialized) assert.NoError(t, err) t.Skip("This test is broken") // TODO fix - _, err = libsignalgo.DecryptPreKey(ctx, bobCiphertext, aliceAddress, bobAddress, bobStore, bobStore, bobStore, bobStore, bobStore) + _, err = libsignalgo.DecryptPreKey(ctx, bobCiphertext, aliceAddress, bobStore, bobStore, bobStore, bobStore, bobStore) require.Error(t, err) assert.Equal(t, "Test error", err.Error()) } @@ -216,7 +216,7 @@ func TestSealedSenderEncrypt_Repeated(t *testing.T) { aliceStore := NewInMemorySignalProtocolStore() bobStore := NewInMemorySignalProtocolStore() - initializeSessions(t, aliceStore, bobStore, bobAddress, aliceAddress) + initializeSessions(t, aliceStore, bobStore, bobAddress) trustRoot, err := libsignalgo.GenerateIdentityKeyPair() assert.NoError(t, err) @@ -241,7 +241,7 @@ func TestSealedSenderEncrypt_Repeated(t *testing.T) { }() for i := 0; i < 100; i++ { message := []byte(fmt.Sprintf("%04d vision", i)) - ciphertext, err := libsignalgo.SealedSenderEncryptPlaintext(ctx, message, libsignalgo.UnidentifiedSenderMessageContentHintDefault, bobAddress, aliceAddress, senderCert, aliceStore, aliceStore, nil) + ciphertext, err := libsignalgo.SealedSenderEncryptPlaintext(ctx, message, libsignalgo.UnidentifiedSenderMessageContentHintDefault, bobAddress, senderCert, aliceStore, aliceStore, nil) require.NoError(t, err) assert.NotNil(t, ciphertext) } @@ -252,18 +252,15 @@ func TestArchiveSession(t *testing.T) { ctx := context.TODO() setupLogging() - aliceACI := uuid.New() bobACI := uuid.New() - aliceAddress, err := libsignalgo.NewACIServiceID(aliceACI).Address(1) - assert.NoError(t, err) bobAddress, err := libsignalgo.NewACIServiceID(bobACI).Address(1) assert.NoError(t, err) aliceStore := NewInMemorySignalProtocolStore() bobStore := NewInMemorySignalProtocolStore() - initializeSessions(t, aliceStore, bobStore, bobAddress, aliceAddress) + initializeSessions(t, aliceStore, bobStore, bobAddress) session, err := aliceStore.LoadSession(ctx, bobAddress) assert.NoError(t, err) @@ -318,7 +315,7 @@ func TestSealedSenderGroupCipher(t *testing.T) { bobStore := NewInMemorySignalProtocolStore() - initializeSessions(t, aliceStore, bobStore, bobAddress, aliceAddress) + initializeSessions(t, aliceStore, bobStore, bobAddress) trustRoot, err := libsignalgo.GenerateIdentityKeyPair() assert.NoError(t, err) diff --git a/pkg/libsignalgo/sessionstore.go b/pkg/libsignalgo/sessionstore.go index 99000e5..2515232 100644 --- a/pkg/libsignalgo/sessionstore.go +++ b/pkg/libsignalgo/sessionstore.go @@ -67,8 +67,8 @@ func signal_destroy_session_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapSessionStore(store SessionStore) C.SignalConstPointerFfiSessionStoreStruct { return C.SignalConstPointerFfiSessionStoreStruct{&C.SignalSessionStore{ ctx: wrapStore(ctx, store), - load_session: C.SignalFfiSessionStoreLoadSession(C.signal_load_session_callback), - store_session: C.SignalFfiSessionStoreStoreSession(C.signal_store_session_callback), - destroy: C.SignalFfiSessionStoreDestroy(C.signal_destroy_session_store_callback), + load_session: C.SignalFfiBridgeSessionStoreLoadSession(C.signal_load_session_callback), + store_session: C.SignalFfiBridgeSessionStoreStoreSession(C.signal_store_session_callback), + destroy: C.SignalFfiBridgeSessionStoreDestroy(C.signal_destroy_session_store_callback), }} } diff --git a/pkg/libsignalgo/setup_test.go b/pkg/libsignalgo/setup_test.go index 47d7d77..c22149d 100644 --- a/pkg/libsignalgo/setup_test.go +++ b/pkg/libsignalgo/setup_test.go @@ -54,8 +54,6 @@ func (FFILogger) Log(level libsignalgo.LogLevel, file string, line uint, message func (FFILogger) Flush() {} -func (FFILogger) Destroy() {} - var loggingSetup = false func setupLogging() { diff --git a/pkg/libsignalgo/signedprekeystore.go b/pkg/libsignalgo/signedprekeystore.go index b1306e2..cfb3015 100644 --- a/pkg/libsignalgo/signedprekeystore.go +++ b/pkg/libsignalgo/signedprekeystore.go @@ -67,8 +67,8 @@ func signal_destroy_signed_pre_key_store_callback(storeCtx unsafe.Pointer) { func (ctx *CallbackContext) wrapSignedPreKeyStore(store SignedPreKeyStore) C.SignalConstPointerFfiSignedPreKeyStoreStruct { return C.SignalConstPointerFfiSignedPreKeyStoreStruct{&C.SignalSignedPreKeyStore{ ctx: wrapStore(ctx, store), - load_signed_pre_key: C.SignalFfiSignedPreKeyStoreLoadSignedPreKey(C.signal_load_signed_pre_key_callback), - store_signed_pre_key: C.SignalFfiSignedPreKeyStoreStoreSignedPreKey(C.signal_store_signed_pre_key_callback), - destroy: C.SignalFfiSignedPreKeyStoreDestroy(C.signal_destroy_signed_pre_key_store_callback), + load_signed_pre_key: C.SignalFfiBridgeSignedPreKeyStoreLoadSignedPreKey(C.signal_load_signed_pre_key_callback), + store_signed_pre_key: C.SignalFfiBridgeSignedPreKeyStoreStoreSignedPreKey(C.signal_store_signed_pre_key_callback), + destroy: C.SignalFfiBridgeSignedPreKeyStoreDestroy(C.signal_destroy_signed_pre_key_store_callback), }} } diff --git a/pkg/libsignalgo/update-ffi-docker-inner.sh b/pkg/libsignalgo/update-ffi-docker-inner.sh index 5b96bbb..e343887 100755 --- a/pkg/libsignalgo/update-ffi-docker-inner.sh +++ b/pkg/libsignalgo/update-ffi-docker-inner.sh @@ -1,10 +1,11 @@ #!/bin/sh cd /data export RUSTFLAGS="-Ctarget-feature=-crt-static" RUSTC_WRAPPER="" -apk add --no-cache git make cmake protobuf-dev musl-dev g++ clang-dev +apk add --no-cache git make cmake protobuf-dev musl-dev g++ clang-dev cbindgen cd libsignal cargo build -p libsignal-ffi --release +cbindgen --profile release rust/bridge/ffi -o libsignal-ffi.h cd .. mv libsignal/target/release/libsignal_ffi.a . -cp libsignal/swift/Sources/SignalFfi/signal_ffi.h libsignal-ffi.h +mv libsignal/libsignal-ffi.h . chown 1000:1000 libsignal_ffi.a libsignal-ffi.h version.go diff --git a/pkg/libsignalgo/update-ffi.sh b/pkg/libsignalgo/update-ffi.sh index b1061b9..7561b61 100755 --- a/pkg/libsignalgo/update-ffi.sh +++ b/pkg/libsignalgo/update-ffi.sh @@ -28,11 +28,14 @@ echo "const Version = \"$(git describe --tags --always)\"" >> ../version.go # Build libsignal cargo build -p libsignal-ffi --release +# Regenerate the header file +cbindgen --profile release rust/bridge/ffi -o libsignal-ffi.h + # Navigate back to the original directory cd "$ORIGINAL_DIR" # Copy files from the libsignal directory cp "${LIBSIGNAL_DIRECTORY}/target/release/libsignal_ffi.a" . -cp "${LIBSIGNAL_DIRECTORY}/swift/Sources/SignalFfi/signal_ffi.h" libsignal-ffi.h +cp "${LIBSIGNAL_DIRECTORY}/libsignal-ffi.h" . echo "Files copied successfully." diff --git a/pkg/libsignalgo/version.go b/pkg/libsignalgo/version.go index b74b511..ccd0d51 100644 --- a/pkg/libsignalgo/version.go +++ b/pkg/libsignalgo/version.go @@ -2,4 +2,4 @@ package libsignalgo -const Version = "v0.100.0" +const Version = "v0.89.1" diff --git a/pkg/msgconv/from-matrix.go b/pkg/msgconv/from-matrix.go index a334afd..89b0181 100644 --- a/pkg/msgconv/from-matrix.go +++ b/pkg/msgconv/from-matrix.go @@ -110,24 +110,21 @@ func (mc *MessageConverter) ToSignal( return nil, fmt.Errorf("failed to convert sticker: %w", err) } att.Flags = proto.Uint32(uint32(signalpb.AttachmentPointer_BORDERLESS)) - - dm.Sticker = ParseStickerMeta(content.Info.BridgedSticker) - if dm.Sticker == nil { - var emoji *string - // TODO check for single grapheme cluster? - if len([]rune(content.Body)) == 1 { - emoji = proto.String(variationselector.Remove(content.Body)) - } - dm.Sticker = &signalpb.DataMessage_Sticker{ - // Signal iOS validates that pack id/key are of the correct length. - // Android is fine with any non-nil values (like a zero-length byte string). - PackId: make([]byte, 16), - PackKey: make([]byte, 32), - StickerId: proto.Uint32(0), - Emoji: emoji, - } + var emoji *string + // TODO check for single grapheme cluster? + if len([]rune(content.Body)) == 1 { + emoji = proto.String(variationselector.Remove(content.Body)) + } + dm.Sticker = &signalpb.DataMessage_Sticker{ + // Signal iOS validates that pack id/key are of the correct length. + // Android is fine with any non-nil values (like a zero-length byte string). + PackId: make([]byte, 16), + PackKey: make([]byte, 32), + StickerId: proto.Uint32(0), + + Data: att, + Emoji: emoji, } - dm.Sticker.Data = att case event.MsgLocation: lat, lon, err := parseGeoURI(content.GeoURI) if err != nil { diff --git a/pkg/msgconv/from-signal.go b/pkg/msgconv/from-signal.go index 612bc28..96b4f10 100644 --- a/pkg/msgconv/from-signal.go +++ b/pkg/msgconv/from-signal.go @@ -23,7 +23,6 @@ import ( "errors" "fmt" "io" - "mime" "net/http" "os" "strconv" @@ -115,7 +114,7 @@ func (mc *MessageConverter) ToMatrix( return cm } if dm.PollVote != nil { - cm.Parts = append(cm.Parts, mc.convertPollVoteToMatrix(ctx, sender, dm.PollVote)) + cm.Parts = append(cm.Parts, mc.convertPollVoteToMatrix(ctx, dm.PollVote)) return cm } if dm.PollCreate != nil { @@ -469,16 +468,20 @@ func (mc *MessageConverter) convertStickerToMatrix(ctx context.Context, sticker converted.Content.Info.Height = 200 } converted.Content.Body = sticker.GetEmoji() - 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), - Emoji: sticker.GetEmoji(), - PackURL: fmt.Sprintf(PackURLFormat, sticker.GetPackId(), sticker.GetPackKey()), - } - } converted.Type = event.EventSticker converted.Content.MsgType = "" + if converted.Extra == nil { + converted.Extra = map[string]any{} + } + // TODO fetch full pack metadata like the old bridge did? + converted.Extra["fi.mau.signal.sticker"] = map[string]any{ + "id": sticker.GetStickerId(), + "emoji": sticker.GetEmoji(), + "pack": map[string]any{ + "id": sticker.GetPackId(), + "key": sticker.GetPackKey(), + }, + } return converted } @@ -570,20 +573,15 @@ func (mc *MessageConverter) reuploadAttachment(ctx context.Context, att *signalp content.Info.Blurhash = att.GetBlurHash() content.Info.AnoaBlurhash = att.GetBlurHash() } - plainMime, _, _ := mime.ParseMediaType(content.Info.MimeType) - // Supported mime types from https://github.com/signalapp/Signal-Desktop/blob/main/ts/util/GoogleChrome.std.ts - switch plainMime { - case "image/avif", "image/bmp", "image/gif", "image/jpeg", "image/webp", "image/x-xbitmap", - "image/vnd.microsoft.icon", "image/ico", "image/icon", "image/x-icon", "image/png", "image/apng": + switch strings.Split(content.Info.MimeType, "/")[0] { + case "image": content.MsgType = event.MsgImage - case "video/mp4", "video/ogg", "video/webm": + case "video": content.MsgType = event.MsgVideo + case "audio": + content.MsgType = event.MsgAudio default: - if strings.HasPrefix(plainMime, "audio/") && !strings.HasSuffix(plainMime, "aiff") { - content.MsgType = event.MsgAudio - } else { - content.MsgType = event.MsgFile - } + content.MsgType = event.MsgFile } var extra map[string]any if att.GetFlags()&uint32(signalpb.AttachmentPointer_GIF) != 0 { @@ -749,7 +747,7 @@ var invalidPollVote = &bridgev2.ConvertedMessagePart{ DontBridge: true, } -func (mc *MessageConverter) convertPollVoteToMatrix(ctx context.Context, senderACI uuid.UUID, vote *signalpb.DataMessage_PollVote) *bridgev2.ConvertedMessagePart { +func (mc *MessageConverter) convertPollVoteToMatrix(ctx context.Context, vote *signalpb.DataMessage_PollVote) *bridgev2.ConvertedMessagePart { if len(vote.GetTargetAuthorAciBinary()) != 16 { zerolog.Ctx(ctx).Debug(). Str("author_aci_b64", base64.StdEncoding.EncodeToString(vote.GetTargetAuthorAciBinary())). @@ -765,24 +763,7 @@ func (mc *MessageConverter) convertPollVoteToMatrix(ctx context.Context, senderA zerolog.Ctx(ctx).Warn().Msg("Poll vote target message not found") return invalidPollVote } - meta := pollMessage.Metadata.(*signalid.MessageMetadata) - if prevCount, ok := meta.VoteCount[senderACI.String()]; ok && vote.GetVoteCount() <= prevCount { - zerolog.Ctx(ctx).Debug(). - Stringer("sender_aci", senderACI). - Uint32("vote_count", vote.GetVoteCount()). - Uint32("previous_vote_count", prevCount). - Msg("Ignoring poll vote with lower vote count") - return invalidPollVote - } - if meta.VoteCount == nil { - meta.VoteCount = make(map[string]uint32) - } - meta.VoteCount[senderACI.String()] = vote.GetVoteCount() - err = mc.Bridge.DB.Message.Update(ctx, pollMessage) - if err != nil { - zerolog.Ctx(ctx).Warn().Err(err).Msg("Failed to update poll message with new vote count") - } - mxOptionIDs := meta.MatrixPollOptionIDs + mxOptionIDs := pollMessage.Metadata.(*signalid.MessageMetadata).MatrixPollOptionIDs optionIDs := make([]string, len(vote.GetOptionIndexes())) for i, optionIndex := range vote.GetOptionIndexes() { if int(optionIndex) < len(mxOptionIDs) { diff --git a/pkg/msgconv/imagepack.go b/pkg/msgconv/imagepack.go deleted file mode 100644 index a2529af..0000000 --- a/pkg/msgconv/imagepack.go +++ /dev/null @@ -1,199 +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 msgconv - -import ( - "bytes" - "context" - "encoding/hex" - "fmt" - "net/url" - "strconv" - "strings" - - "go.mau.fi/util/emojishortcodes" - "google.golang.org/protobuf/proto" - "maunium.net/go/mautrix" - "maunium.net/go/mautrix/bridgev2" - "maunium.net/go/mautrix/bridgev2/database" - "maunium.net/go/mautrix/event" - "maunium.net/go/mautrix/id" - - "go.mau.fi/mautrix-signal/pkg/signalid" - "go.mau.fi/mautrix-signal/pkg/signalmeow" - signalpb "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf" -) - -const StickerSourceID = "signal" -const PackURLFormat = "https://signal.art/addstickers/#pack_id=%x&pack_key=%x" - -const PackIDLength = 16 -const PackKeyLength = 32 -const PackURLLength = len(PackURLFormat) - len("%x")*2 + PackIDLength*2 + PackKeyLength*2 - -var zeroPackID = make([]byte, PackIDLength) - -func ParseStickerMeta(info *event.BridgedSticker) *signalpb.DataMessage_Sticker { - if info == nil || info.Network != StickerSourceID || len(info.PackURL) != PackURLLength { - return nil - } - stickerID, err := strconv.ParseUint(info.ID, 10, 32) - if err != nil { - return nil - } - packID, packKey, err := parsePackURL(info.PackURL) - if err != nil || len(packID) != PackIDLength || len(packKey) != PackKeyLength || bytes.Equal(packID, zeroPackID) { - return nil - } - return &signalpb.DataMessage_Sticker{ - PackId: packID, - PackKey: packKey, - StickerId: proto.Uint32(uint32(stickerID)), - Emoji: &info.Emoji, - } -} - -func parsePackURL(rawURL string) (packID, packKey []byte, err error) { - parsed, err := url.Parse(rawURL) - if err != nil { - return nil, nil, fmt.Errorf("invalid URL: %w", err) - } else if parsed.Host != "signal.art" || !strings.HasPrefix(parsed.Path, "/addstickers") { - return nil, nil, fmt.Errorf("invalid host or path in URL") - } - q, err := url.ParseQuery(parsed.Fragment) - if err != nil { - return nil, nil, fmt.Errorf("invalid URL fragment: %w", err) - } - packID, err = hex.DecodeString(q.Get("pack_id")) - if err != nil { - return nil, nil, fmt.Errorf("invalid pack ID in URL: %w", err) - } - packKey, err = hex.DecodeString(q.Get("pack_key")) - if err != nil { - return nil, nil, fmt.Errorf("invalid pack key in URL: %w", err) - } - return -} - -func (mc *MessageConverter) DownloadImagePack(ctx context.Context, url string) (*bridgev2.ImportedImagePack, error) { - packID, packKey, err := parsePackURL(url) - if err != nil { - return nil, bridgev2.WrapRespErr(err, mautrix.MNotFound) - } - manifest, err := signalmeow.DownloadStickerPackManifest(ctx, packID, packKey) - if err != nil { - return nil, fmt.Errorf("failed to download sticker pack manifest: %w", err) - } - topLevelExtra := map[string]any{ - "fi.mau.signal.stickerpack": map[string]any{ - "pack_id": hex.EncodeToString(packID), - "pack_key": hex.EncodeToString(packKey), - }, - } - content := &event.ImagePackEventContent{ - Images: make(map[string]*event.ImagePackImage, len(manifest.Stickers)), - Metadata: event.ImagePackMetadata{ - DisplayName: manifest.GetTitle(), - AvatarURL: "", - Usage: []event.ImagePackUsage{event.ImagePackUsageSticker}, - Attribution: manifest.GetAuthor(), - BridgedPack: &event.BridgedStickerPack{ - Network: StickerSourceID, - URL: fmt.Sprintf(PackURLFormat, packID, packKey), - }, - }, - } - imagesByID := make(map[uint32]id.ContentURIString, len(manifest.Stickers)) - uploadImage := func(sticker *signalpb.Pack_Sticker) (id.ContentURIString, error) { - stickerID := sticker.GetId() - existing, ok := imagesByID[stickerID] - if ok { - return existing, nil - } - var mxc id.ContentURIString - if mc.DirectMedia { - mediaID, err := signalid.DirectMediaSticker{ - PackID: packID, - PackKey: packKey, - StickerID: stickerID, - }.AsMediaID() - if err != nil { - return "", fmt.Errorf("failed to create media ID for sticker %d: %w", stickerID, err) - } - mxc, err = mc.Bridge.Matrix.GenerateContentURI(ctx, mediaID) - if err != nil { - return "", fmt.Errorf("failed to generate content URI for sticker %d: %w", stickerID, err) - } - } else { - dbKey := database.Key(fmt.Sprintf("stickercache:%x:%d", packID, stickerID)) - if cached := mc.Bridge.DB.KV.Get(ctx, dbKey); cached != "" { - mxc = id.ContentURIString(cached) - imagesByID[stickerID] = mxc - return mxc, nil - } - data, err := signalmeow.DownloadStickerPackItem(ctx, packID, packKey, stickerID) - if err != nil { - return "", fmt.Errorf("failed to download sticker %d: %w", stickerID, err) - } - mxc, _, err = mc.Bridge.Bot.UploadMedia(ctx, "", data, "", sticker.GetContentType()) - if err != nil { - return "", fmt.Errorf("failed to upload sticker %d: %w", stickerID, err) - } - mc.Bridge.DB.KV.Set(ctx, dbKey, string(mxc)) - } - imagesByID[stickerID] = mxc - return mxc, nil - } - for _, sticker := range manifest.Stickers { - mxc, err := uploadImage(sticker) - if err != nil { - return nil, err - } - shortcode := emojishortcodes.Get(sticker.GetEmoji()) - realShortcode := shortcode - i := 2 - for _, alreadyExists := content.Images[realShortcode]; alreadyExists; i++ { - realShortcode = fmt.Sprintf("%s_%d", shortcode, i) - } - content.Images[realShortcode] = &event.ImagePackImage{ - URL: mxc, - Body: sticker.GetEmoji(), - Info: &event.FileInfo{ - MimeType: sticker.GetContentType(), - Width: 200, - Height: 200, - BridgedSticker: &event.BridgedSticker{ - Network: StickerSourceID, - ID: strconv.FormatUint(uint64(sticker.GetId()), 10), - Emoji: sticker.GetEmoji(), - PackURL: content.Metadata.BridgedPack.URL, - }, - }, - } - } - if manifest.Cover != nil { - content.Metadata.AvatarURL, err = uploadImage(manifest.Cover) - if err != nil { - return nil, fmt.Errorf("failed to upload sticker pack cover: %w", err) - } - } - return &bridgev2.ImportedImagePack{ - Content: content, - Extra: topLevelExtra, - Shortcode: hex.EncodeToString(packID), - }, nil -} diff --git a/pkg/msgconv/matrixfmt/convert_test.go b/pkg/msgconv/matrixfmt/convert_test.go index 5e243e3..1ade316 100644 --- a/pkg/msgconv/matrixfmt/convert_test.go +++ b/pkg/msgconv/matrixfmt/convert_test.go @@ -111,13 +111,22 @@ func TestParse_HTML(t *testing.T) { { name: "List", in: "
  • woof
  • meow
  • hmm\nmeow
  • meow

    meow

", - out: "* woof\n* meow\n* ```\n hmm\n meow\n ```\n* > meow\n > \n > # meow", + out: "* woof\n* meow\n* hmm\n meow\n* > meow\n > \n > # meow", ent: signalfmt.BodyRangeList{{ Start: 9, Length: 4, Value: signalfmt.StyleBold, }, { - Start: 57, + Start: 16, + Length: 3, + Value: signalfmt.StyleMonospace, + }, { + // FIXME optimally this would be a single range with the previous one so the indent is also monospace + Start: 22, + Length: 4, + Value: signalfmt.StyleMonospace, + }, { + Start: 45, Length: 6, Value: signalfmt.StyleBold, }}, @@ -125,13 +134,21 @@ func TestParse_HTML(t *testing.T) { { name: "OrderedList", in: "
  1. woof
  2. meow
  3. hmm\nmeow
  4. meow

    meow

", - out: "9. woof\n10. meow\n11. ```\n hmm\n meow\n ```\n12. > meow\n > \n > # meow", + out: "9. woof\n10. meow\n11. hmm\n meow\n12. > meow\n > \n > # meow", ent: signalfmt.BodyRangeList{{ Start: 13, Length: 4, Value: signalfmt.StyleBold, }, { - Start: 75, + Start: 22, + Length: 3, + Value: signalfmt.StyleMonospace, + }, { + Start: 30, + Length: 4, + Value: signalfmt.StyleMonospace, + }, { + Start: 59, Length: 6, Value: signalfmt.StyleBold, }}, diff --git a/pkg/msgconv/matrixfmt/html.go b/pkg/msgconv/matrixfmt/html.go index b60c0ad..958ccc3 100644 --- a/pkg/msgconv/matrixfmt/html.go +++ b/pkg/msgconv/matrixfmt/html.go @@ -404,17 +404,17 @@ func (parser *HTMLParser) tagToString(node *html.Node, ctx Context) *EntityStrin return NewEntityString("---") case "pre": var preStr *EntityString - var language string + //var language string if node.FirstChild != nil && node.FirstChild.Type == html.ElementNode && node.FirstChild.Data == "code" { - class := parser.getAttribute(node.FirstChild, "class") - if strings.HasPrefix(class, "language-") { - language = class[len("language-"):] - } + //class := parser.getAttribute(node.FirstChild, "class") + //if strings.HasPrefix(class, "language-") { + // language = class[len("language-"):] + //} preStr = parser.nodeToString(node.FirstChild.FirstChild, ctx.WithWhitespace()) } else { preStr = parser.nodeToString(node.FirstChild, ctx.WithWhitespace()) } - return NewEntityString(fmt.Sprintf("```%s\n", language)).Append(preStr).AppendString("\n```") + return preStr.Format(signalfmt.StyleMonospace) default: return parser.nodeToTagAwareString(node.FirstChild, ctx) } diff --git a/pkg/signalid/dbmeta.go b/pkg/signalid/dbmeta.go index 35893c0..8f42e6f 100644 --- a/pkg/signalid/dbmeta.go +++ b/pkg/signalid/dbmeta.go @@ -28,9 +28,8 @@ type PortalMetadata struct { } type MessageMetadata struct { - ContainsAttachments bool `json:"contains_attachments,omitempty"` - MatrixPollOptionIDs []string `json:"matrix_poll_option_ids,omitempty"` - VoteCount map[string]uint32 `json:"vote_count,omitempty"` + ContainsAttachments bool `json:"contains_attachments,omitempty"` + MatrixPollOptionIDs []string `json:"matrix_poll_option_ids,omitempty"` } type UserLoginMetadata struct { diff --git a/pkg/signalid/media.go b/pkg/signalid/media.go index a530c22..8c91b6a 100644 --- a/pkg/signalid/media.go +++ b/pkg/signalid/media.go @@ -34,7 +34,6 @@ const ( directMediaTypeGroupAvatar directMediaType = 1 directMediaTypeProfileAvatar directMediaType = 2 directMediaTypePlaintextDigestAttachment directMediaType = 3 - directMediaTypeSticker directMediaType = 4 ) type DirectMediaInfo interface { @@ -45,7 +44,6 @@ var ( _ DirectMediaInfo = (*DirectMediaAttachment)(nil) _ DirectMediaInfo = (*DirectMediaGroupAvatar)(nil) _ DirectMediaInfo = (*DirectMediaProfileAvatar)(nil) - _ DirectMediaInfo = (*DirectMediaSticker)(nil) ) type DirectMediaAttachment struct { @@ -129,30 +127,6 @@ func (m DirectMediaProfileAvatar) AsMediaID() (mediaID networkid.MediaID, err er return networkid.MediaID(buf.Bytes()), nil } -type DirectMediaSticker struct { - PackID []byte - PackKey []byte - StickerID uint32 -} - -const packIDLen = 16 -const packKeyLen = 32 -const directMediaStickerLen = 1 + packIDLen + packKeyLen + 4 - -func (m DirectMediaSticker) AsMediaID() (mediaID networkid.MediaID, err error) { - if len(m.PackID) != packIDLen { - return nil, fmt.Errorf("invalid pack ID length: %d", len(m.PackID)) - } else if len(m.PackKey) != packKeyLen { - return nil, fmt.Errorf("invalid pack key length: %d", len(m.PackKey)) - } - mediaID = make(networkid.MediaID, directMediaStickerLen) - mediaID[0] = byte(directMediaTypeSticker) - copy(mediaID[1:], m.PackID) - copy(mediaID[1+packIDLen:], m.PackKey) - binary.BigEndian.PutUint32(mediaID[1+packIDLen+packKeyLen:], m.StickerID) - return mediaID, nil -} - func ParseDirectMediaInfo(mediaID networkid.MediaID) (_ DirectMediaInfo, err error) { mediaIDLen := len(mediaID) if mediaIDLen == 0 { @@ -226,15 +200,6 @@ func ParseDirectMediaInfo(mediaID networkid.MediaID) (_ DirectMediaInfo, err err info.ProfileAvatarPath = string(profileAvatarPath) } return &info, nil - case directMediaTypeSticker: - var info DirectMediaSticker - if len(mediaID) != directMediaStickerLen { - return info, fmt.Errorf("invalid media ID length for sticker: %d", len(mediaID)) - } - info.PackID = mediaID[1 : 1+packIDLen] - info.PackKey = mediaID[1+packIDLen : 1+packIDLen+packKeyLen] - info.StickerID = binary.BigEndian.Uint32(mediaID[1+packIDLen+packKeyLen:]) - return &info, nil } return nil, fmt.Errorf("invalid direct media type %d", mediaType) diff --git a/pkg/signalmeow/attachments.go b/pkg/signalmeow/attachments.go index c091827..e09dd7e 100644 --- a/pkg/signalmeow/attachments.go +++ b/pkg/signalmeow/attachments.go @@ -35,7 +35,6 @@ import ( "github.com/rs/zerolog" "go.mau.fi/util/fallocate" - "go.mau.fi/util/pkcs7" "go.mau.fi/util/random" "google.golang.org/protobuf/proto" @@ -137,15 +136,6 @@ func DownloadAttachment( const MACLength = 32 const IVLength = 16 -func macAndAESDecrypt(body, key []byte) ([]byte, error) { - l := len(body) - MACLength - if !verifyMAC(key[MACLength:], body[:l], body[l:]) { - return nil, ErrInvalidMACForAttachment - } - - return aesDecrypt(key[:MACLength], body[:l]) -} - func decryptAttachment(body, key, digest []byte, plaintextDigest bool, size uint32) ([]byte, error) { if !plaintextDigest { hash := sha256.Sum256(body) @@ -153,7 +143,12 @@ func decryptAttachment(body, key, digest []byte, plaintextDigest bool, size uint return nil, ErrInvalidDigestForAttachment } } - decrypted, err := macAndAESDecrypt(body, key) + l := len(body) - MACLength + if !verifyMAC(key[MACLength:], body[:l], body[l:]) { + return nil, ErrInvalidMACForAttachment + } + + decrypted, err := aesDecrypt(key[:MACLength], body[:l]) if err != nil { return nil, err } @@ -245,14 +240,6 @@ func extend(data []byte, paddedLen int) []byte { } } -func macAndAESEncrypt(keys, plaintext []byte) ([]byte, error) { - encrypted, err := aesEncrypt(keys[:32], plaintext) - if err != nil { - return nil, err - } - return appendMAC(keys[32:], encrypted), nil -} - func (cli *Client) UploadAttachment(ctx context.Context, body []byte) (*signalpb.AttachmentPointer, error) { log := zerolog.Ctx(ctx).With().Str("func", "upload attachment").Logger() keys := random.Bytes(64) // combined AES and MAC keys @@ -268,10 +255,11 @@ func (cli *Client) UploadAttachment(ctx context.Context, body []byte) (*signalpb } body = extend(body, paddedLen) - encryptedWithMAC, err := macAndAESEncrypt(keys, body) + encrypted, err := aesEncrypt(keys[:32], body) if err != nil { return nil, err } + encryptedWithMAC := appendMAC(keys[32:], encrypted) // Get upload attributes from Signal server attributesPath := "/v4/attachments/form/upload" @@ -381,17 +369,12 @@ func (cli *Client) uploadAttachmentTUS( return nil } -func (cli *Client) UploadGroupAvatar(ctx context.Context, avatarBytes []byte, gid types.GroupIdentifier, groupMasterKey types.SerializedGroupMasterKey) (string, error) { +func (cli *Client) UploadGroupAvatar(ctx context.Context, avatarBytes []byte, gid types.GroupIdentifier) (string, error) { log := zerolog.Ctx(ctx) - if groupMasterKey == "" { - var err error - groupMasterKey, err = cli.Store.GroupStore.MasterKeyFromGroupIdentifier(ctx, gid) - if err != nil { - log.Err(err).Msg("Could not get master key from group id") - return "", err - } else if groupMasterKey == "" { - return "", fmt.Errorf("no master key found for group %s", gid) - } + groupMasterKey, err := cli.Store.GroupStore.MasterKeyFromGroupIdentifier(ctx, gid) + if err != nil { + log.Err(err).Msg("Could not get master key from group id") + return "", err } groupAuth, err := cli.GetAuthorizationForToday(ctx, masterKeyToBytes(groupMasterKey)) if err != nil { @@ -479,10 +462,13 @@ func aesDecrypt(key, ciphertext []byte) ([]byte, error) { } iv := ciphertext[:IVLength] - ciphertext = ciphertext[IVLength:] mode := cipher.NewCBCDecrypter(block, iv) mode.CryptBlocks(ciphertext, ciphertext) - return pkcs7.Unpad(ciphertext) + pad := ciphertext[len(ciphertext)-1] + if pad > aes.BlockSize { + return nil, fmt.Errorf("pad value (%d) larger than AES blocksize (%d)", pad, aes.BlockSize) + } + return ciphertext[aes.BlockSize : len(ciphertext)-int(pad)], nil } func aesDecryptFile(key []byte, file *os.File, downloadedSize int64) (int64, error) { @@ -542,11 +528,14 @@ func aesEncrypt(key, plaintext []byte) ([]byte, error) { return nil, err } - plaintext = pkcs7.Pad(plaintext, aes.BlockSize) + pad := aes.BlockSize - len(plaintext)%aes.BlockSize + plaintext = append(plaintext, bytes.Repeat([]byte{byte(pad)}, pad)...) + + ciphertext := make([]byte, len(plaintext)) iv := random.Bytes(16) mode := cipher.NewCBCEncrypter(block, iv) - mode.CryptBlocks(plaintext, plaintext) + mode.CryptBlocks(ciphertext, plaintext) - return append(iv, plaintext...), nil + return append(iv, ciphertext...), nil } diff --git a/pkg/signalmeow/contactdiscovery.go b/pkg/signalmeow/contactdiscovery.go index 14b7fd6..07d9b49 100644 --- a/pkg/signalmeow/contactdiscovery.go +++ b/pkg/signalmeow/contactdiscovery.go @@ -35,14 +35,12 @@ import ( "google.golang.org/protobuf/proto" "go.mau.fi/mautrix-signal/pkg/libsignalgo" - "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/cds2pb" + signalpb "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf" "go.mau.fi/mautrix-signal/pkg/signalmeow/web" ) -// ProdContactDiscoveryMrenclave should always match ENCLAVE_ID_CDSI_PROD from libsignal -// https://github.com/signalapp/libsignal/blob/main/rust/attest/src/constants.rs#L69 -const ProdContactDiscoveryMrenclave = "15637fa1e54fe655176d3df1a9f94b87c01ed377acaa570682dc5d72c95ef07b" const ProdContactDiscoveryServer = "cdsi.signal.org" +const ProdContactDiscoveryMrenclave = "ee9503070127120074612b6688e593b67e486b1541449f54d71e387484eb40a3" const ContactDiscoveryAuthTTL = 23 * time.Hour const rateLimitCloseCode = websocket.StatusCode(4008) @@ -83,7 +81,7 @@ func (cli *Client) LookupPhone(ctx context.Context, e164s ...uint64) (ContactDis } ctx, cancel := context.WithTimeout(ctx, 20*time.Second) defer cancel() - resp, token, err := cli.doContactDiscovery(ctx, &cds2pb.ClientRequest{ + resp, token, err := cli.doContactDiscovery(ctx, &signalpb.CDSClientRequest{ // TODO figure out if tokens are useful // (it's meant for old_e164s) //Token: cli.cdToken, @@ -95,7 +93,7 @@ func (cli *Client) LookupPhone(ctx context.Context, e164s ...uint64) (ContactDis return resp, err } -func (cli *Client) doContactDiscovery(ctx context.Context, req *cds2pb.ClientRequest) (ContactDiscoveryResponse, []byte, error) { +func (cli *Client) doContactDiscovery(ctx context.Context, req *signalpb.CDSClientRequest) (ContactDiscoveryResponse, []byte, error) { creds, err := cli.getContactDiscoveryCredentials(ctx) if err != nil { return nil, nil, fmt.Errorf("failed to fetch contact discovery auth: %w", err) @@ -187,7 +185,7 @@ func (cdc *ContactDiscoveryClient) Handshake(ctx context.Context) error { return nil } -func (cdc *ContactDiscoveryClient) SendRequest(ctx context.Context, req *cds2pb.ClientRequest) error { +func (cdc *ContactDiscoveryClient) SendRequest(ctx context.Context, req *signalpb.CDSClientRequest) error { plaintext, err := proto.Marshal(req) if err != nil { return fmt.Errorf("failed to marshal request: %w", err) @@ -224,15 +222,15 @@ func (cdc *ContactDiscoveryClient) handleResponse(ctx context.Context, msg []byt if err != nil { return fmt.Errorf("failed to decrypt message: %w", err) } - var cdsClientResp cds2pb.ClientResponse + var cdsClientResp signalpb.CDSClientResponse err = proto.Unmarshal(decrypted, &cdsClientResp) if err != nil { return fmt.Errorf("failed to unmarshal message: %w", err) } if cdsClientResp.Token != nil { cdc.Token = cdsClientResp.Token - err = cdc.SendRequest(ctx, &cds2pb.ClientRequest{ - TokenAck: true, + err = cdc.SendRequest(ctx, &signalpb.CDSClientRequest{ + TokenAck: proto.Bool(true), }) if err != nil { return fmt.Errorf("failed to send token ack request: %w", err) diff --git a/pkg/signalmeow/groups.go b/pkg/signalmeow/groups.go index f028f2b..b02687b 100644 --- a/pkg/signalmeow/groups.go +++ b/pkg/signalmeow/groups.go @@ -619,7 +619,7 @@ func (cli *Client) fetchGroupByID(ctx context.Context, gid types.GroupIdentifier return nil, fmt.Errorf("failed to get group master key: %w", err) } if groupMasterKey == "" { - return nil, fmt.Errorf("%w for %s", ErrGroupMasterKeyNotFound, gid) + return nil, fmt.Errorf("No group master key found for group identifier %s", gid) } return cli.fetchGroupWithMasterKey(ctx, groupMasterKey) } @@ -641,7 +641,7 @@ func (cli *Client) fetchGroupWithMasterKey(ctx context.Context, groupMasterKey t return nil, err } if response.StatusCode != 200 { - return nil, fmt.Errorf("unexpected response status: %d", response.StatusCode) + return nil, fmt.Errorf("fetchGroupByID SendHTTPRequest bad status: %d", response.StatusCode) } return cli.parseGroupResponse(ctx, response, groupMasterKey) } @@ -1513,15 +1513,11 @@ func (cli *Client) patchGroup(ctx context.Context, groupChange *signalpb.GroupCh return &changeResp, nil } -var ErrGroupMasterKeyNotFound = errors.New("group master key not found in store") - func (cli *Client) UpdateGroup(ctx context.Context, groupChange *GroupChange, gid types.GroupIdentifier) (uint32, error) { log := zerolog.Ctx(ctx).With().Str("action", "UpdateGroup").Logger() groupMasterKey, err := cli.Store.GroupStore.MasterKeyFromGroupIdentifier(ctx, gid) if err != nil { return 0, fmt.Errorf("failed to get master key for group: %w", err) - } else if groupMasterKey == "" { - return 0, ErrGroupMasterKeyNotFound } groupChange.GroupMasterKey = groupMasterKey masterKeyBytes := masterKeyToBytes(groupMasterKey) @@ -1666,7 +1662,7 @@ func PrepareGroupCreation(decryptedGroup *Group) (libsignalgo.GroupMasterKey, er return masterKeyBytes, nil } -func (cli *Client) createGroupOnServer(ctx context.Context, decryptedGroup *Group) (*Group, error) { +func (cli *Client) createGroupOnServer(ctx context.Context, decryptedGroup *Group, avatarBytes []byte) (*Group, error) { log := zerolog.Ctx(ctx).With().Str("action", "CreateGroupOnServer").Logger() masterKeyBytes, err := PrepareGroupCreation(decryptedGroup) if err != nil { @@ -1681,6 +1677,14 @@ func (cli *Client) createGroupOnServer(ctx context.Context, decryptedGroup *Grou log.Err(err).Msg("DeriveGroupSecretParamsFromMasterKey error") return nil, err } + if len(avatarBytes) > 0 { + avatarPath, err := cli.UploadGroupAvatar(ctx, avatarBytes, decryptedGroup.GroupIdentifier) + if err != nil { + log.Err(err).Msg("Failed to upload group avatar") + return nil, err + } + decryptedGroup.AvatarPath = avatarPath + } encryptedGroup, err := cli.EncryptGroup(ctx, decryptedGroup, groupSecretParams) if err != nil { log.Err(err).Msg("Failed to encrypt group") @@ -1731,9 +1735,9 @@ func GenerateInviteLinkPassword() types.SerializedInviteLinkPassword { return InviteLinkPasswordFromBytes(random.Bytes(16)) } -func (cli *Client) CreateGroup(ctx context.Context, decryptedGroup *Group) (*Group, error) { +func (cli *Client) CreateGroup(ctx context.Context, decryptedGroup *Group, avatarBytes []byte) (*Group, error) { log := zerolog.Ctx(ctx).With().Str("action", "CreateGroup").Logger() - group, err := cli.createGroupOnServer(ctx, decryptedGroup) + group, err := cli.createGroupOnServer(ctx, decryptedGroup, avatarBytes) if err != nil { log.Err(err).Msg("Error creating group on server") return nil, err @@ -1756,7 +1760,7 @@ func (cli *Client) GetGroupHistoryPage(ctx context.Context, gid types.GroupIdent return nil, err } if groupMasterKey == "" { - return nil, ErrGroupMasterKeyNotFound + return nil, fmt.Errorf("No group master key found for group identifier %s", gid) } masterKeyBytes := masterKeyToBytes(groupMasterKey) groupAuth, err := cli.GetAuthorizationForToday(ctx, masterKeyBytes) @@ -1780,7 +1784,7 @@ func (cli *Client) GetGroupHistoryPage(ctx context.Context, gid types.GroupIdent return nil, err } if response.StatusCode != 200 { - return nil, fmt.Errorf("unexpected response status: %d", response.StatusCode) + return nil, fmt.Errorf("fetchGroupByID SendHTTPRequest bad status: %d", response.StatusCode) } var encryptedGroupChanges signalpb.GroupChanges groupChangesBytes, err := io.ReadAll(response.Body) diff --git a/pkg/signalmeow/keys.go b/pkg/signalmeow/keys.go index 5439755..f1801e5 100644 --- a/pkg/signalmeow/keys.go +++ b/pkg/signalmeow/keys.go @@ -413,10 +413,6 @@ func (cli *Client) FetchAndProcessPreKey(ctx context.Context, theirServiceID lib if cli.Store.RecipientStore.IsUnregistered(ctx, theirServiceID) { return fmt.Errorf("%w (cached)", ErrUnregisteredUser) } - localAddress, err := cli.Store.ACIServiceID().Address(uint(cli.Store.DeviceID)) - if err != nil { - return fmt.Errorf("failed to get own address: %w", err) - } // Fetch prekey deviceIDPath := "/*" if specificDeviceID >= 0 { @@ -522,7 +518,6 @@ func (cli *Client) FetchAndProcessPreKey(ctx context.Context, theirServiceID lib ctx, preKeyBundle, address, - localAddress, cli.Store.ACISessionStore, cli.Store.ACIIdentityStore, ) diff --git a/pkg/signalmeow/misc.go b/pkg/signalmeow/misc.go index 70d3ba5..467f646 100644 --- a/pkg/signalmeow/misc.go +++ b/pkg/signalmeow/misc.go @@ -69,8 +69,6 @@ func (l FFILogger) Log(level libsignalgo.LogLevel, file string, line uint, messa func (FFILogger) Flush() {} -func (FFILogger) Destroy() {} - // Ensure FFILogger implements the Logger interface var _ libsignalgo.Logger = FFILogger{} diff --git a/pkg/signalmeow/protobuf/ContactDiscovery.pb.go b/pkg/signalmeow/protobuf/ContactDiscovery.pb.go new file mode 100644 index 0000000..637a2d2 --- /dev/null +++ b/pkg/signalmeow/protobuf/ContactDiscovery.pb.go @@ -0,0 +1,272 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v6.33.5 +// source: ContactDiscovery.proto + +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +package signalpb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type CDSClientRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed + // by its 16-byte UAK. + AciUakPairs []byte `protobuf:"bytes,1,opt,name=aci_uak_pairs,json=aciUakPairs" json:"aci_uak_pairs,omitempty"` + // Each E164 is an 8-byte big-endian number, as 8 bytes. + PrevE164S []byte `protobuf:"bytes,2,opt,name=prev_e164s,json=prevE164s" json:"prev_e164s,omitempty"` + NewE164S []byte `protobuf:"bytes,3,opt,name=new_e164s,json=newE164s" json:"new_e164s,omitempty"` + DiscardE164S []byte `protobuf:"bytes,4,opt,name=discard_e164s,json=discardE164s" json:"discard_e164s,omitempty"` + // If true, the client has more pairs or e164s to send. If false or unset, + // this is the client's last request, and processing should commence. + HasMore *bool `protobuf:"varint,5,opt,name=has_more,json=hasMore" json:"has_more,omitempty"` + // If set, a token which allows rate limiting to discount the e164s in + // the request's prev_e164s, only counting new_e164s. If not set, then + // rate limiting considers both prev_e164s' and new_e164s' size. + Token []byte `protobuf:"bytes,6,opt,name=token" json:"token,omitempty"` + // After receiving a new token from the server, send back a message just + // containing a token_ack. + TokenAck *bool `protobuf:"varint,7,opt,name=token_ack,json=tokenAck" json:"token_ack,omitempty"` + // Request that, if the server allows, both ACI and PNI be returned even + // if the aci_uak_pairs don't match. + ReturnAcisWithoutUaks *bool `protobuf:"varint,8,opt,name=return_acis_without_uaks,json=returnAcisWithoutUaks" json:"return_acis_without_uaks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CDSClientRequest) Reset() { + *x = CDSClientRequest{} + mi := &file_ContactDiscovery_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CDSClientRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CDSClientRequest) ProtoMessage() {} + +func (x *CDSClientRequest) ProtoReflect() protoreflect.Message { + mi := &file_ContactDiscovery_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CDSClientRequest.ProtoReflect.Descriptor instead. +func (*CDSClientRequest) Descriptor() ([]byte, []int) { + return file_ContactDiscovery_proto_rawDescGZIP(), []int{0} +} + +func (x *CDSClientRequest) GetAciUakPairs() []byte { + if x != nil { + return x.AciUakPairs + } + return nil +} + +func (x *CDSClientRequest) GetPrevE164S() []byte { + if x != nil { + return x.PrevE164S + } + return nil +} + +func (x *CDSClientRequest) GetNewE164S() []byte { + if x != nil { + return x.NewE164S + } + return nil +} + +func (x *CDSClientRequest) GetDiscardE164S() []byte { + if x != nil { + return x.DiscardE164S + } + return nil +} + +func (x *CDSClientRequest) GetHasMore() bool { + if x != nil && x.HasMore != nil { + return *x.HasMore + } + return false +} + +func (x *CDSClientRequest) GetToken() []byte { + if x != nil { + return x.Token + } + return nil +} + +func (x *CDSClientRequest) GetTokenAck() bool { + if x != nil && x.TokenAck != nil { + return *x.TokenAck + } + return false +} + +func (x *CDSClientRequest) GetReturnAcisWithoutUaks() bool { + if x != nil && x.ReturnAcisWithoutUaks != nil { + return *x.ReturnAcisWithoutUaks + } + return false +} + +type CDSClientResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI. + // If the e164 was not found, PNI and ACI are all zeros. If the PNI + // was found but the ACI was not, the PNI will be non-zero and the ACI + // will be all zeros. ACI will be returned if one of the returned + // PNIs has an ACI/UAK pair that matches. + // + // Should the request be successful (IE: a successful status returned), + // |e164_pni_aci_triple| will always equal |e164| of the request, + // so the entire marshalled size of the response will be (2+32)*|e164|, + // where the additional 2 bytes are the id/type/length additions of the + // protobuf marshaling added to each byte array. This avoids any data + // leakage based on the size of the encrypted output. + E164PniAciTriples []byte `protobuf:"bytes,1,opt,name=e164_pni_aci_triples,json=e164PniAciTriples" json:"e164_pni_aci_triples,omitempty"` + // A token which allows subsequent calls' rate limiting to discount the + // e164s sent up in this request, only counting those in the next + // request's new_e164s. + Token []byte `protobuf:"bytes,3,opt,name=token" json:"token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CDSClientResponse) Reset() { + *x = CDSClientResponse{} + mi := &file_ContactDiscovery_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CDSClientResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CDSClientResponse) ProtoMessage() {} + +func (x *CDSClientResponse) ProtoReflect() protoreflect.Message { + mi := &file_ContactDiscovery_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CDSClientResponse.ProtoReflect.Descriptor instead. +func (*CDSClientResponse) Descriptor() ([]byte, []int) { + return file_ContactDiscovery_proto_rawDescGZIP(), []int{1} +} + +func (x *CDSClientResponse) GetE164PniAciTriples() []byte { + if x != nil { + return x.E164PniAciTriples + } + return nil +} + +func (x *CDSClientResponse) GetToken() []byte { + if x != nil { + return x.Token + } + return nil +} + +var File_ContactDiscovery_proto protoreflect.FileDescriptor + +const file_ContactDiscovery_proto_rawDesc = "" + + "\n" + + "\x16ContactDiscovery.proto\x12\rsignalservice\"\x9e\x02\n" + + "\x10CDSClientRequest\x12\"\n" + + "\raci_uak_pairs\x18\x01 \x01(\fR\vaciUakPairs\x12\x1d\n" + + "\n" + + "prev_e164s\x18\x02 \x01(\fR\tprevE164s\x12\x1b\n" + + "\tnew_e164s\x18\x03 \x01(\fR\bnewE164s\x12#\n" + + "\rdiscard_e164s\x18\x04 \x01(\fR\fdiscardE164s\x12\x19\n" + + "\bhas_more\x18\x05 \x01(\bR\ahasMore\x12\x14\n" + + "\x05token\x18\x06 \x01(\fR\x05token\x12\x1b\n" + + "\ttoken_ack\x18\a \x01(\bR\btokenAck\x127\n" + + "\x18return_acis_without_uaks\x18\b \x01(\bR\x15returnAcisWithoutUaks\"Z\n" + + "\x11CDSClientResponse\x12/\n" + + "\x14e164_pni_aci_triples\x18\x01 \x01(\fR\x11e164PniAciTriples\x12\x14\n" + + "\x05token\x18\x03 \x01(\fR\x05token" + +var ( + file_ContactDiscovery_proto_rawDescOnce sync.Once + file_ContactDiscovery_proto_rawDescData []byte +) + +func file_ContactDiscovery_proto_rawDescGZIP() []byte { + file_ContactDiscovery_proto_rawDescOnce.Do(func() { + file_ContactDiscovery_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ContactDiscovery_proto_rawDesc), len(file_ContactDiscovery_proto_rawDesc))) + }) + return file_ContactDiscovery_proto_rawDescData +} + +var file_ContactDiscovery_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_ContactDiscovery_proto_goTypes = []any{ + (*CDSClientRequest)(nil), // 0: signalservice.CDSClientRequest + (*CDSClientResponse)(nil), // 1: signalservice.CDSClientResponse +} +var file_ContactDiscovery_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_ContactDiscovery_proto_init() } +func file_ContactDiscovery_proto_init() { + if File_ContactDiscovery_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_ContactDiscovery_proto_rawDesc), len(file_ContactDiscovery_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_ContactDiscovery_proto_goTypes, + DependencyIndexes: file_ContactDiscovery_proto_depIdxs, + MessageInfos: file_ContactDiscovery_proto_msgTypes, + }.Build() + File_ContactDiscovery_proto = out.File + file_ContactDiscovery_proto_goTypes = nil + file_ContactDiscovery_proto_depIdxs = nil +} diff --git a/pkg/signalmeow/protobuf/cds2pb/cds2.proto b/pkg/signalmeow/protobuf/ContactDiscovery.proto similarity index 70% rename from pkg/signalmeow/protobuf/cds2pb/cds2.proto rename to pkg/signalmeow/protobuf/ContactDiscovery.proto index 0b5cd3f..d1f5e04 100644 --- a/pkg/signalmeow/protobuf/cds2pb/cds2.proto +++ b/pkg/signalmeow/protobuf/ContactDiscovery.proto @@ -1,36 +1,37 @@ -syntax = "proto3"; +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only -package org.signal.cdsi; +package signalservice; -message ClientRequest { +message CDSClientRequest { // Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed // by its 16-byte UAK. - bytes aci_uak_pairs = 1; + optional bytes aci_uak_pairs = 1; // Each E164 is an 8-byte big-endian number, as 8 bytes. - bytes prev_e164s = 2; - bytes new_e164s = 3; - bytes discard_e164s = 4; + optional bytes prev_e164s = 2; + optional bytes new_e164s = 3; + optional bytes discard_e164s = 4; // If true, the client has more pairs or e164s to send. If false or unset, // this is the client's last request, and processing should commence. - // bool has_more = 5; - reserved 5; + optional bool has_more = 5; // If set, a token which allows rate limiting to discount the e164s in // the request's prev_e164s, only counting new_e164s. If not set, then // rate limiting considers both prev_e164s' and new_e164s' size. - bytes token = 6; + optional bytes token = 6; // After receiving a new token from the server, send back a message just // containing a token_ack. - bool token_ack = 7; + optional bool token_ack = 7; - // [deprecated] bool return_acis_without_uaks = 8 - reserved 8; + // Request that, if the server allows, both ACI and PNI be returned even + // if the aci_uak_pairs don't match. + optional bool return_acis_without_uaks = 8; } -message ClientResponse { +message CDSClientResponse { // Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI. // If the e164 was not found, PNI and ACI are all zeros. If the PNI // was found but the ACI was not, the PNI will be non-zero and the ACI @@ -43,18 +44,10 @@ message ClientResponse { // where the additional 2 bytes are the id/type/length additions of the // protobuf marshaling added to each byte array. This avoids any data // leakage based on the size of the encrypted output. - bytes e164_pni_aci_triples = 1; - - // int32 retry_after_secs = 2 [deprecated] - reserved 2; + optional bytes e164_pni_aci_triples = 1; // A token which allows subsequent calls' rate limiting to discount the // e164s sent up in this request, only counting those in the next // request's new_e164s. - bytes token = 3; - - // On a successful response to a token_ack request, the number of permits - // that were deducted from the user's rate-limit in order to process the - // request - int32 debug_permits_used = 4; + optional bytes token = 3; } diff --git a/pkg/signalmeow/protobuf/DeviceName.pb.go b/pkg/signalmeow/protobuf/DeviceName.pb.go index 31b5704..5666b7e 100644 --- a/pkg/signalmeow/protobuf/DeviceName.pb.go +++ b/pkg/signalmeow/protobuf/DeviceName.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: DeviceName.proto // Copyright 2018 Signal Messenger, LLC diff --git a/pkg/signalmeow/protobuf/Groups.pb.go b/pkg/signalmeow/protobuf/Groups.pb.go index 8d4e2e3..c7717ff 100644 --- a/pkg/signalmeow/protobuf/Groups.pb.go +++ b/pkg/signalmeow/protobuf/Groups.pb.go @@ -5,7 +5,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: Groups.proto package signalpb @@ -498,7 +498,6 @@ type AccessControl struct { Attributes AccessControl_AccessRequired `protobuf:"varint,1,opt,name=attributes,proto3,enum=signal.AccessControl_AccessRequired" json:"attributes,omitempty"` Members AccessControl_AccessRequired `protobuf:"varint,2,opt,name=members,proto3,enum=signal.AccessControl_AccessRequired" json:"members,omitempty"` AddFromInviteLink AccessControl_AccessRequired `protobuf:"varint,3,opt,name=addFromInviteLink,proto3,enum=signal.AccessControl_AccessRequired" json:"addFromInviteLink,omitempty"` - MemberLabel AccessControl_AccessRequired `protobuf:"varint,4,opt,name=memberLabel,proto3,enum=signal.AccessControl_AccessRequired" json:"memberLabel,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -554,13 +553,6 @@ func (x *AccessControl) GetAddFromInviteLink() AccessControl_AccessRequired { return AccessControl_UNKNOWN } -func (x *AccessControl) GetMemberLabel() AccessControl_AccessRequired { - if x != nil { - return x.MemberLabel - } - return AccessControl_UNKNOWN -} - type Group struct { state protoimpl.MessageState `protogen:"open.v1"` PublicKey []byte `protobuf:"bytes,1,opt,name=publicKey,proto3" json:"publicKey,omitempty"` @@ -577,8 +569,7 @@ type Group struct { MembersPendingAdminApproval []*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=announcements_only,json=announcementsOnly,proto3" json:"announcements_only,omitempty"` - MembersBanned []*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"` // next: 15 + MembersBanned []*MemberBanned `protobuf:"bytes,13,rep,name=members_banned,json=membersBanned,proto3" json:"members_banned,omitempty"` // next: 14 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -704,13 +695,6 @@ func (x *Group) GetMembersBanned() []*MemberBanned { return nil } -func (x *Group) GetTerminated() bool { - if x != nil { - return x.Terminated - } - return false -} - type GroupAttributeBlob struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Content: @@ -1333,8 +1317,6 @@ type GroupChange_Actions struct { DeleteMembersBanned []*GroupChange_Actions_DeleteMemberBannedAction `protobuf:"bytes,23,rep,name=delete_members_banned,json=deleteMembersBanned,proto3" json:"delete_members_banned,omitempty"` // change epoch = 4 PromoteMembersPendingPniAciProfileKey []*GroupChange_Actions_PromoteMemberPendingPniAciProfileKeyAction `protobuf:"bytes,24,rep,name=promote_members_pending_pni_aci_profile_key,json=promoteMembersPendingPniAciProfileKey,proto3" json:"promote_members_pending_pni_aci_profile_key,omitempty"` // change epoch = 5 ModifyMemberLabels []*GroupChange_Actions_ModifyMemberLabelAction `protobuf:"bytes,26,rep,name=modifyMemberLabels,proto3" json:"modifyMemberLabels,omitempty"` // change epoch = 6; - ModifyMemberLabelAccess *GroupChange_Actions_ModifyMemberLabelAccessControlAction `protobuf:"bytes,27,opt,name=modifyMemberLabelAccess,proto3" json:"modifyMemberLabelAccess,omitempty"` // change epoch = 6 - TerminateGroup *GroupChange_Actions_TerminateGroupAction `protobuf:"bytes,28,opt,name=terminate_group,json=terminateGroup,proto3" json:"terminate_group,omitempty"` // change epoch = 7 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1551,20 +1533,6 @@ func (x *GroupChange_Actions) GetModifyMemberLabels() []*GroupChange_Actions_Mod return nil } -func (x *GroupChange_Actions) GetModifyMemberLabelAccess() *GroupChange_Actions_ModifyMemberLabelAccessControlAction { - if x != nil { - return x.ModifyMemberLabelAccess - } - return nil -} - -func (x *GroupChange_Actions) GetTerminateGroup() *GroupChange_Actions_TerminateGroupAction { - if x != nil { - return x.TerminateGroup - } - return nil -} - type GroupChange_Actions_AddMemberAction struct { state protoimpl.MessageState `protogen:"open.v1"` Added *Member `protobuf:"bytes,1,opt,name=added,proto3" json:"added,omitempty"` @@ -2585,50 +2553,6 @@ func (x *GroupChange_Actions_ModifyAddFromInviteLinkAccessControlAction) GetAddF return AccessControl_UNKNOWN } -type GroupChange_Actions_ModifyMemberLabelAccessControlAction struct { - state protoimpl.MessageState `protogen:"open.v1"` - MemberLabelAccess AccessControl_AccessRequired `protobuf:"varint,1,opt,name=memberLabelAccess,proto3,enum=signal.AccessControl_AccessRequired" json:"memberLabelAccess,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GroupChange_Actions_ModifyMemberLabelAccessControlAction) Reset() { - *x = GroupChange_Actions_ModifyMemberLabelAccessControlAction{} - mi := &file_Groups_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GroupChange_Actions_ModifyMemberLabelAccessControlAction) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupChange_Actions_ModifyMemberLabelAccessControlAction) ProtoMessage() {} - -func (x *GroupChange_Actions_ModifyMemberLabelAccessControlAction) ProtoReflect() protoreflect.Message { - mi := &file_Groups_proto_msgTypes[38] - 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 GroupChange_Actions_ModifyMemberLabelAccessControlAction.ProtoReflect.Descriptor instead. -func (*GroupChange_Actions_ModifyMemberLabelAccessControlAction) Descriptor() ([]byte, []int) { - return file_Groups_proto_rawDescGZIP(), []int{10, 0, 21} -} - -func (x *GroupChange_Actions_ModifyMemberLabelAccessControlAction) GetMemberLabelAccess() AccessControl_AccessRequired { - if x != nil { - return x.MemberLabelAccess - } - return AccessControl_UNKNOWN -} - type GroupChange_Actions_ModifyInviteLinkPasswordAction struct { state protoimpl.MessageState `protogen:"open.v1"` InviteLinkPassword []byte `protobuf:"bytes,1,opt,name=inviteLinkPassword,proto3" json:"inviteLinkPassword,omitempty"` @@ -2638,7 +2562,7 @@ type GroupChange_Actions_ModifyInviteLinkPasswordAction struct { func (x *GroupChange_Actions_ModifyInviteLinkPasswordAction) Reset() { *x = GroupChange_Actions_ModifyInviteLinkPasswordAction{} - mi := &file_Groups_proto_msgTypes[39] + mi := &file_Groups_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2650,7 +2574,7 @@ func (x *GroupChange_Actions_ModifyInviteLinkPasswordAction) String() string { func (*GroupChange_Actions_ModifyInviteLinkPasswordAction) ProtoMessage() {} func (x *GroupChange_Actions_ModifyInviteLinkPasswordAction) ProtoReflect() protoreflect.Message { - mi := &file_Groups_proto_msgTypes[39] + mi := &file_Groups_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2663,7 +2587,7 @@ func (x *GroupChange_Actions_ModifyInviteLinkPasswordAction) ProtoReflect() prot // Deprecated: Use GroupChange_Actions_ModifyInviteLinkPasswordAction.ProtoReflect.Descriptor instead. func (*GroupChange_Actions_ModifyInviteLinkPasswordAction) Descriptor() ([]byte, []int) { - return file_Groups_proto_rawDescGZIP(), []int{10, 0, 22} + return file_Groups_proto_rawDescGZIP(), []int{10, 0, 21} } func (x *GroupChange_Actions_ModifyInviteLinkPasswordAction) GetInviteLinkPassword() []byte { @@ -2682,7 +2606,7 @@ type GroupChange_Actions_ModifyAnnouncementsOnlyAction struct { func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) Reset() { *x = GroupChange_Actions_ModifyAnnouncementsOnlyAction{} - mi := &file_Groups_proto_msgTypes[40] + mi := &file_Groups_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2694,7 +2618,7 @@ func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) String() string { func (*GroupChange_Actions_ModifyAnnouncementsOnlyAction) ProtoMessage() {} func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) ProtoReflect() protoreflect.Message { - mi := &file_Groups_proto_msgTypes[40] + mi := &file_Groups_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2707,7 +2631,7 @@ func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) ProtoReflect() proto // Deprecated: Use GroupChange_Actions_ModifyAnnouncementsOnlyAction.ProtoReflect.Descriptor instead. func (*GroupChange_Actions_ModifyAnnouncementsOnlyAction) Descriptor() ([]byte, []int) { - return file_Groups_proto_rawDescGZIP(), []int{10, 0, 23} + return file_Groups_proto_rawDescGZIP(), []int{10, 0, 22} } func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) GetAnnouncementsOnly() bool { @@ -2717,42 +2641,6 @@ func (x *GroupChange_Actions_ModifyAnnouncementsOnlyAction) GetAnnouncementsOnly return false } -type GroupChange_Actions_TerminateGroupAction struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GroupChange_Actions_TerminateGroupAction) Reset() { - *x = GroupChange_Actions_TerminateGroupAction{} - mi := &file_Groups_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GroupChange_Actions_TerminateGroupAction) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GroupChange_Actions_TerminateGroupAction) ProtoMessage() {} - -func (x *GroupChange_Actions_TerminateGroupAction) ProtoReflect() protoreflect.Message { - mi := &file_Groups_proto_msgTypes[41] - 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 GroupChange_Actions_TerminateGroupAction.ProtoReflect.Descriptor instead. -func (*GroupChange_Actions_TerminateGroupAction) Descriptor() ([]byte, []int) { - return file_Groups_proto_rawDescGZIP(), []int{10, 0, 24} -} - type GroupChanges_GroupChangeState struct { state protoimpl.MessageState `protogen:"open.v1"` GroupChange *GroupChange `protobuf:"bytes,1,opt,name=groupChange,proto3" json:"groupChange,omitempty"` @@ -2763,7 +2651,7 @@ type GroupChanges_GroupChangeState struct { func (x *GroupChanges_GroupChangeState) Reset() { *x = GroupChanges_GroupChangeState{} - mi := &file_Groups_proto_msgTypes[42] + mi := &file_Groups_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2775,7 +2663,7 @@ func (x *GroupChanges_GroupChangeState) String() string { func (*GroupChanges_GroupChangeState) ProtoMessage() {} func (x *GroupChanges_GroupChangeState) ProtoReflect() protoreflect.Message { - mi := &file_Groups_proto_msgTypes[42] + mi := &file_Groups_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2849,21 +2737,20 @@ const file_Groups_proto_rawDesc = "" + "\ttimestamp\x18\x04 \x01(\x04R\ttimestamp\"D\n" + "\fMemberBanned\x12\x16\n" + "\x06userId\x18\x01 \x01(\fR\x06userId\x12\x1c\n" + - "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\"\x8b\x03\n" + + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\"\xc3\x02\n" + "\rAccessControl\x12D\n" + "\n" + "attributes\x18\x01 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\n" + "attributes\x12>\n" + "\amembers\x18\x02 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\amembers\x12R\n" + - "\x11addFromInviteLink\x18\x03 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x11addFromInviteLink\x12F\n" + - "\vmemberLabel\x18\x04 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\vmemberLabel\"X\n" + + "\x11addFromInviteLink\x18\x03 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x11addFromInviteLink\"X\n" + "\x0eAccessRequired\x12\v\n" + "\aUNKNOWN\x10\x00\x12\a\n" + "\x03ANY\x10\x01\x12\n" + "\n" + "\x06MEMBER\x10\x02\x12\x11\n" + "\rADMINISTRATOR\x10\x03\x12\x11\n" + - "\rUNSATISFIABLE\x10\x04\"\xb9\x05\n" + + "\rUNSATISFIABLE\x10\x04\"\x99\x05\n" + "\x05Group\x12\x1c\n" + "\tpublicKey\x18\x01 \x01(\fR\tpublicKey\x12\x14\n" + "\x05title\x18\x02 \x01(\fR\x05title\x12 \n" + @@ -2878,10 +2765,7 @@ const file_Groups_proto_rawDesc = "" + "\x12inviteLinkPassword\x18\n" + " \x01(\fR\x12inviteLinkPassword\x12-\n" + "\x12announcements_only\x18\f \x01(\bR\x11announcementsOnly\x12;\n" + - "\x0emembers_banned\x18\r \x03(\v2\x14.signal.MemberBannedR\rmembersBanned\x12\x1e\n" + - "\n" + - "terminated\x18\x0e \x01(\bR\n" + - "terminated\"\xc3\x01\n" + + "\x0emembers_banned\x18\r \x03(\v2\x14.signal.MemberBannedR\rmembersBanned\"\xc3\x01\n" + "\x12GroupAttributeBlob\x12\x16\n" + "\x05title\x18\x01 \x01(\tH\x00R\x05title\x12\x18\n" + "\x06avatar\x18\x02 \x01(\fH\x00R\x06avatar\x12D\n" + @@ -2905,11 +2789,11 @@ const file_Groups_proto_rawDesc = "" + "\vmemberCount\x18\x04 \x01(\rR\vmemberCount\x12R\n" + "\x11addFromInviteLink\x18\x05 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x11addFromInviteLink\x12\x18\n" + "\aversion\x18\x06 \x01(\rR\aversion\x122\n" + - "\x14pendingAdminApproval\x18\a \x01(\bR\x14pendingAdminApproval\"\xa6*\n" + + "\x14pendingAdminApproval\x18\a \x01(\bR\x14pendingAdminApproval\"\xbb'\n" + "\vGroupChange\x12\x18\n" + "\aactions\x18\x01 \x01(\fR\aactions\x12(\n" + "\x0fserverSignature\x18\x02 \x01(\fR\x0fserverSignature\x12 \n" + - "\vchangeEpoch\x18\x03 \x01(\rR\vchangeEpoch\x1a\xb0)\n" + + "\vchangeEpoch\x18\x03 \x01(\rR\vchangeEpoch\x1a\xc5&\n" + "\aActions\x12\"\n" + "\fsourceUserId\x18\x01 \x01(\fR\fsourceUserId\x12\x19\n" + "\bgroup_id\x18\x19 \x01(\fR\agroupId\x12\x18\n" + @@ -2939,9 +2823,7 @@ const file_Groups_proto_rawDesc = "" + "\x12add_members_banned\x18\x16 \x03(\v21.signal.GroupChange.Actions.AddMemberBannedActionR\x10addMembersBanned\x12h\n" + "\x15delete_members_banned\x18\x17 \x03(\v24.signal.GroupChange.Actions.DeleteMemberBannedActionR\x13deleteMembersBanned\x12\xa2\x01\n" + "+promote_members_pending_pni_aci_profile_key\x18\x18 \x03(\v2F.signal.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyActionR%promoteMembersPendingPniAciProfileKey\x12c\n" + - "\x12modifyMemberLabels\x18\x1a \x03(\v23.signal.GroupChange.Actions.ModifyMemberLabelActionR\x12modifyMemberLabels\x12z\n" + - "\x17modifyMemberLabelAccess\x18\x1b \x01(\v2@.signal.GroupChange.Actions.ModifyMemberLabelAccessControlActionR\x17modifyMemberLabelAccess\x12Y\n" + - "\x0fterminate_group\x18\x1c \x01(\v20.signal.GroupChange.Actions.TerminateGroupActionR\x0eterminateGroup\x1ag\n" + + "\x12modifyMemberLabels\x18\x1a \x03(\v23.signal.GroupChange.Actions.ModifyMemberLabelActionR\x12modifyMemberLabels\x1ag\n" + "\x0fAddMemberAction\x12$\n" + "\x05added\x18\x01 \x01(\v2\x0e.signal.MemberR\x05added\x12.\n" + "\x12joinFromInviteLink\x18\x02 \x01(\bR\x12joinFromInviteLink\x1a:\n" + @@ -3000,14 +2882,11 @@ const file_Groups_proto_rawDesc = "" + " ModifyMembersAccessControlAction\x12J\n" + "\rmembersAccess\x18\x01 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\rmembersAccess\x1a\x8c\x01\n" + "*ModifyAddFromInviteLinkAccessControlAction\x12^\n" + - "\x17addFromInviteLinkAccess\x18\x01 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x17addFromInviteLinkAccess\x1az\n" + - "$ModifyMemberLabelAccessControlAction\x12R\n" + - "\x11memberLabelAccess\x18\x01 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x11memberLabelAccess\x1aP\n" + + "\x17addFromInviteLinkAccess\x18\x01 \x01(\x0e2$.signal.AccessControl.AccessRequiredR\x17addFromInviteLinkAccess\x1aP\n" + "\x1eModifyInviteLinkPasswordAction\x12.\n" + "\x12inviteLinkPassword\x18\x01 \x01(\fR\x12inviteLinkPassword\x1aN\n" + "\x1dModifyAnnouncementsOnlyAction\x12-\n" + - "\x12announcements_only\x18\x01 \x01(\bR\x11announcementsOnly\x1a\x16\n" + - "\x14TerminateGroupAction\"/\n" + + "\x12announcements_only\x18\x01 \x01(\bR\x11announcementsOnly\"/\n" + "\x17ExternalGroupCredential\x12\x14\n" + "\x05token\x18\x01 \x01(\tR\x05token\"}\n" + "\rGroupResponse\x12#\n" + @@ -3039,7 +2918,7 @@ func file_Groups_proto_rawDescGZIP() []byte { } var file_Groups_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_Groups_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_Groups_proto_msgTypes = make([]protoimpl.MessageInfo, 41) var file_Groups_proto_goTypes = []any{ (Member_Role)(0), // 0: signal.Member.Role (AccessControl_AccessRequired)(0), // 1: signal.AccessControl.AccessRequired @@ -3081,11 +2960,9 @@ var file_Groups_proto_goTypes = []any{ (*GroupChange_Actions_ModifyAttributesAccessControlAction)(nil), // 37: signal.GroupChange.Actions.ModifyAttributesAccessControlAction (*GroupChange_Actions_ModifyMembersAccessControlAction)(nil), // 38: signal.GroupChange.Actions.ModifyMembersAccessControlAction (*GroupChange_Actions_ModifyAddFromInviteLinkAccessControlAction)(nil), // 39: signal.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction - (*GroupChange_Actions_ModifyMemberLabelAccessControlAction)(nil), // 40: signal.GroupChange.Actions.ModifyMemberLabelAccessControlAction - (*GroupChange_Actions_ModifyInviteLinkPasswordAction)(nil), // 41: signal.GroupChange.Actions.ModifyInviteLinkPasswordAction - (*GroupChange_Actions_ModifyAnnouncementsOnlyAction)(nil), // 42: signal.GroupChange.Actions.ModifyAnnouncementsOnlyAction - (*GroupChange_Actions_TerminateGroupAction)(nil), // 43: signal.GroupChange.Actions.TerminateGroupAction - (*GroupChanges_GroupChangeState)(nil), // 44: signal.GroupChanges.GroupChangeState + (*GroupChange_Actions_ModifyInviteLinkPasswordAction)(nil), // 40: signal.GroupChange.Actions.ModifyInviteLinkPasswordAction + (*GroupChange_Actions_ModifyAnnouncementsOnlyAction)(nil), // 41: signal.GroupChange.Actions.ModifyAnnouncementsOnlyAction + (*GroupChanges_GroupChangeState)(nil), // 42: signal.GroupChanges.GroupChangeState } var file_Groups_proto_depIdxs = []int32{ 0, // 0: signal.Member.role:type_name -> signal.Member.Role @@ -3093,59 +2970,55 @@ var file_Groups_proto_depIdxs = []int32{ 1, // 2: signal.AccessControl.attributes:type_name -> signal.AccessControl.AccessRequired 1, // 3: signal.AccessControl.members:type_name -> signal.AccessControl.AccessRequired 1, // 4: signal.AccessControl.addFromInviteLink:type_name -> signal.AccessControl.AccessRequired - 1, // 5: signal.AccessControl.memberLabel:type_name -> signal.AccessControl.AccessRequired - 7, // 6: signal.Group.accessControl:type_name -> signal.AccessControl - 3, // 7: signal.Group.members:type_name -> signal.Member - 4, // 8: signal.Group.membersPendingProfileKey:type_name -> signal.MemberPendingProfileKey - 5, // 9: signal.Group.membersPendingAdminApproval:type_name -> signal.MemberPendingAdminApproval - 6, // 10: signal.Group.members_banned:type_name -> signal.MemberBanned - 17, // 11: signal.GroupInviteLink.contentsV1:type_name -> signal.GroupInviteLink.GroupInviteLinkContentsV1 - 1, // 12: signal.GroupJoinInfo.addFromInviteLink:type_name -> signal.AccessControl.AccessRequired - 8, // 13: signal.GroupResponse.group:type_name -> signal.Group - 44, // 14: signal.GroupChanges.groupChanges:type_name -> signal.GroupChanges.GroupChangeState - 12, // 15: signal.GroupChangeResponse.group_change:type_name -> signal.GroupChange - 19, // 16: signal.GroupChange.Actions.addMembers:type_name -> signal.GroupChange.Actions.AddMemberAction - 20, // 17: signal.GroupChange.Actions.deleteMembers:type_name -> signal.GroupChange.Actions.DeleteMemberAction - 21, // 18: signal.GroupChange.Actions.modifyMemberRoles:type_name -> signal.GroupChange.Actions.ModifyMemberRoleAction - 23, // 19: signal.GroupChange.Actions.modifyMemberProfileKeys:type_name -> signal.GroupChange.Actions.ModifyMemberProfileKeyAction - 24, // 20: signal.GroupChange.Actions.addMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.AddMemberPendingProfileKeyAction - 25, // 21: signal.GroupChange.Actions.deleteMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.DeleteMemberPendingProfileKeyAction - 26, // 22: signal.GroupChange.Actions.promoteMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.PromoteMemberPendingProfileKeyAction - 33, // 23: signal.GroupChange.Actions.modifyTitle:type_name -> signal.GroupChange.Actions.ModifyTitleAction - 35, // 24: signal.GroupChange.Actions.modifyAvatar:type_name -> signal.GroupChange.Actions.ModifyAvatarAction - 36, // 25: signal.GroupChange.Actions.modifyDisappearingMessageTimer:type_name -> signal.GroupChange.Actions.ModifyDisappearingMessageTimerAction - 37, // 26: signal.GroupChange.Actions.modifyAttributesAccess:type_name -> signal.GroupChange.Actions.ModifyAttributesAccessControlAction - 38, // 27: signal.GroupChange.Actions.modifyMemberAccess:type_name -> signal.GroupChange.Actions.ModifyMembersAccessControlAction - 39, // 28: signal.GroupChange.Actions.modifyAddFromInviteLinkAccess:type_name -> signal.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction - 28, // 29: signal.GroupChange.Actions.addMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.AddMemberPendingAdminApprovalAction - 29, // 30: signal.GroupChange.Actions.deleteMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction - 30, // 31: signal.GroupChange.Actions.promoteMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction - 41, // 32: signal.GroupChange.Actions.modifyInviteLinkPassword:type_name -> signal.GroupChange.Actions.ModifyInviteLinkPasswordAction - 34, // 33: signal.GroupChange.Actions.modifyDescription:type_name -> signal.GroupChange.Actions.ModifyDescriptionAction - 42, // 34: signal.GroupChange.Actions.modify_announcements_only:type_name -> signal.GroupChange.Actions.ModifyAnnouncementsOnlyAction - 31, // 35: signal.GroupChange.Actions.add_members_banned:type_name -> signal.GroupChange.Actions.AddMemberBannedAction - 32, // 36: signal.GroupChange.Actions.delete_members_banned:type_name -> signal.GroupChange.Actions.DeleteMemberBannedAction - 27, // 37: signal.GroupChange.Actions.promote_members_pending_pni_aci_profile_key:type_name -> signal.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction - 22, // 38: signal.GroupChange.Actions.modifyMemberLabels:type_name -> signal.GroupChange.Actions.ModifyMemberLabelAction - 40, // 39: signal.GroupChange.Actions.modifyMemberLabelAccess:type_name -> signal.GroupChange.Actions.ModifyMemberLabelAccessControlAction - 43, // 40: signal.GroupChange.Actions.terminate_group:type_name -> signal.GroupChange.Actions.TerminateGroupAction - 3, // 41: signal.GroupChange.Actions.AddMemberAction.added:type_name -> signal.Member - 0, // 42: signal.GroupChange.Actions.ModifyMemberRoleAction.role:type_name -> signal.Member.Role - 4, // 43: signal.GroupChange.Actions.AddMemberPendingProfileKeyAction.added:type_name -> signal.MemberPendingProfileKey - 5, // 44: signal.GroupChange.Actions.AddMemberPendingAdminApprovalAction.added:type_name -> signal.MemberPendingAdminApproval - 0, // 45: signal.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.role:type_name -> signal.Member.Role - 6, // 46: signal.GroupChange.Actions.AddMemberBannedAction.added:type_name -> signal.MemberBanned - 1, // 47: signal.GroupChange.Actions.ModifyAttributesAccessControlAction.attributesAccess:type_name -> signal.AccessControl.AccessRequired - 1, // 48: signal.GroupChange.Actions.ModifyMembersAccessControlAction.membersAccess:type_name -> signal.AccessControl.AccessRequired - 1, // 49: signal.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction.addFromInviteLinkAccess:type_name -> signal.AccessControl.AccessRequired - 1, // 50: signal.GroupChange.Actions.ModifyMemberLabelAccessControlAction.memberLabelAccess:type_name -> signal.AccessControl.AccessRequired - 12, // 51: signal.GroupChanges.GroupChangeState.groupChange:type_name -> signal.GroupChange - 8, // 52: signal.GroupChanges.GroupChangeState.groupState:type_name -> signal.Group - 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 + 7, // 5: signal.Group.accessControl:type_name -> signal.AccessControl + 3, // 6: signal.Group.members:type_name -> signal.Member + 4, // 7: signal.Group.membersPendingProfileKey:type_name -> signal.MemberPendingProfileKey + 5, // 8: signal.Group.membersPendingAdminApproval:type_name -> signal.MemberPendingAdminApproval + 6, // 9: signal.Group.members_banned:type_name -> signal.MemberBanned + 17, // 10: signal.GroupInviteLink.contentsV1:type_name -> signal.GroupInviteLink.GroupInviteLinkContentsV1 + 1, // 11: signal.GroupJoinInfo.addFromInviteLink:type_name -> signal.AccessControl.AccessRequired + 8, // 12: signal.GroupResponse.group:type_name -> signal.Group + 42, // 13: signal.GroupChanges.groupChanges:type_name -> signal.GroupChanges.GroupChangeState + 12, // 14: signal.GroupChangeResponse.group_change:type_name -> signal.GroupChange + 19, // 15: signal.GroupChange.Actions.addMembers:type_name -> signal.GroupChange.Actions.AddMemberAction + 20, // 16: signal.GroupChange.Actions.deleteMembers:type_name -> signal.GroupChange.Actions.DeleteMemberAction + 21, // 17: signal.GroupChange.Actions.modifyMemberRoles:type_name -> signal.GroupChange.Actions.ModifyMemberRoleAction + 23, // 18: signal.GroupChange.Actions.modifyMemberProfileKeys:type_name -> signal.GroupChange.Actions.ModifyMemberProfileKeyAction + 24, // 19: signal.GroupChange.Actions.addMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.AddMemberPendingProfileKeyAction + 25, // 20: signal.GroupChange.Actions.deleteMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.DeleteMemberPendingProfileKeyAction + 26, // 21: signal.GroupChange.Actions.promoteMembersPendingProfileKey:type_name -> signal.GroupChange.Actions.PromoteMemberPendingProfileKeyAction + 33, // 22: signal.GroupChange.Actions.modifyTitle:type_name -> signal.GroupChange.Actions.ModifyTitleAction + 35, // 23: signal.GroupChange.Actions.modifyAvatar:type_name -> signal.GroupChange.Actions.ModifyAvatarAction + 36, // 24: signal.GroupChange.Actions.modifyDisappearingMessageTimer:type_name -> signal.GroupChange.Actions.ModifyDisappearingMessageTimerAction + 37, // 25: signal.GroupChange.Actions.modifyAttributesAccess:type_name -> signal.GroupChange.Actions.ModifyAttributesAccessControlAction + 38, // 26: signal.GroupChange.Actions.modifyMemberAccess:type_name -> signal.GroupChange.Actions.ModifyMembersAccessControlAction + 39, // 27: signal.GroupChange.Actions.modifyAddFromInviteLinkAccess:type_name -> signal.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction + 28, // 28: signal.GroupChange.Actions.addMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.AddMemberPendingAdminApprovalAction + 29, // 29: signal.GroupChange.Actions.deleteMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction + 30, // 30: signal.GroupChange.Actions.promoteMembersPendingAdminApproval:type_name -> signal.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction + 40, // 31: signal.GroupChange.Actions.modifyInviteLinkPassword:type_name -> signal.GroupChange.Actions.ModifyInviteLinkPasswordAction + 34, // 32: signal.GroupChange.Actions.modifyDescription:type_name -> signal.GroupChange.Actions.ModifyDescriptionAction + 41, // 33: signal.GroupChange.Actions.modify_announcements_only:type_name -> signal.GroupChange.Actions.ModifyAnnouncementsOnlyAction + 31, // 34: signal.GroupChange.Actions.add_members_banned:type_name -> signal.GroupChange.Actions.AddMemberBannedAction + 32, // 35: signal.GroupChange.Actions.delete_members_banned:type_name -> signal.GroupChange.Actions.DeleteMemberBannedAction + 27, // 36: signal.GroupChange.Actions.promote_members_pending_pni_aci_profile_key:type_name -> signal.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction + 22, // 37: signal.GroupChange.Actions.modifyMemberLabels:type_name -> signal.GroupChange.Actions.ModifyMemberLabelAction + 3, // 38: signal.GroupChange.Actions.AddMemberAction.added:type_name -> signal.Member + 0, // 39: signal.GroupChange.Actions.ModifyMemberRoleAction.role:type_name -> signal.Member.Role + 4, // 40: signal.GroupChange.Actions.AddMemberPendingProfileKeyAction.added:type_name -> signal.MemberPendingProfileKey + 5, // 41: signal.GroupChange.Actions.AddMemberPendingAdminApprovalAction.added:type_name -> signal.MemberPendingAdminApproval + 0, // 42: signal.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.role:type_name -> signal.Member.Role + 6, // 43: signal.GroupChange.Actions.AddMemberBannedAction.added:type_name -> signal.MemberBanned + 1, // 44: signal.GroupChange.Actions.ModifyAttributesAccessControlAction.attributesAccess:type_name -> signal.AccessControl.AccessRequired + 1, // 45: signal.GroupChange.Actions.ModifyMembersAccessControlAction.membersAccess:type_name -> signal.AccessControl.AccessRequired + 1, // 46: signal.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction.addFromInviteLinkAccess:type_name -> signal.AccessControl.AccessRequired + 12, // 47: signal.GroupChanges.GroupChangeState.groupChange:type_name -> signal.GroupChange + 8, // 48: signal.GroupChanges.GroupChangeState.groupState:type_name -> signal.Group + 49, // [49:49] is the sub-list for method output_type + 49, // [49:49] 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 } func init() { file_Groups_proto_init() } @@ -3168,7 +3041,7 @@ func file_Groups_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_Groups_proto_rawDesc), len(file_Groups_proto_rawDesc)), NumEnums: 2, - NumMessages: 43, + NumMessages: 41, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/Groups.proto b/pkg/signalmeow/protobuf/Groups.proto index 9843d1c..448846a 100644 --- a/pkg/signalmeow/protobuf/Groups.proto +++ b/pkg/signalmeow/protobuf/Groups.proto @@ -69,7 +69,6 @@ message AccessControl { AccessRequired attributes = 1; AccessRequired members = 2; AccessRequired addFromInviteLink = 3; - AccessRequired memberLabel = 4; } message Group { @@ -88,8 +87,7 @@ message Group { bytes inviteLinkPassword = 10; bool announcements_only = 12; repeated MemberBanned members_banned = 13; - bool terminated = 14; - // next: 15 + // next: 14 } message GroupAttributeBlob { @@ -227,10 +225,6 @@ message GroupChange { AccessControl.AccessRequired addFromInviteLinkAccess = 1; } - message ModifyMemberLabelAccessControlAction { - AccessControl.AccessRequired memberLabelAccess = 1; - } - message ModifyInviteLinkPasswordAction { bytes inviteLinkPassword = 1; } @@ -239,8 +233,6 @@ message GroupChange { bool announcements_only = 1; } - message TerminateGroupAction {} - bytes sourceUserId = 1; // clients should not provide this value; the server will provide it in the response buffer to ensure the signature is binding to a particular group // if clients set it during a request the server will respond with 400. @@ -270,9 +262,7 @@ message GroupChange { repeated DeleteMemberBannedAction delete_members_banned = 23; // change epoch = 4 repeated PromoteMemberPendingPniAciProfileKeyAction promote_members_pending_pni_aci_profile_key = 24; // change epoch = 5 repeated ModifyMemberLabelAction modifyMemberLabels = 26; // change epoch = 6; - ModifyMemberLabelAccessControlAction modifyMemberLabelAccess = 27; // change epoch = 6 - TerminateGroupAction terminate_group = 28; // change epoch = 7 - // next: 29 + // next: 27 } bytes actions = 1; diff --git a/pkg/signalmeow/protobuf/Provisioning.pb.go b/pkg/signalmeow/protobuf/Provisioning.pb.go index 88ebe90..0231512 100644 --- a/pkg/signalmeow/protobuf/Provisioning.pb.go +++ b/pkg/signalmeow/protobuf/Provisioning.pb.go @@ -5,7 +5,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: Provisioning.proto package signalpb @@ -199,6 +199,7 @@ type ProvisionMessage struct { ProfileKey []byte `protobuf:"bytes,6,opt,name=profileKey" json:"profileKey,omitempty"` ReadReceipts *bool `protobuf:"varint,7,opt,name=readReceipts" json:"readReceipts,omitempty"` ProvisioningVersion *uint32 `protobuf:"varint,9,opt,name=provisioningVersion" json:"provisioningVersion,omitempty"` + MasterKey []byte `protobuf:"bytes,13,opt,name=masterKey" json:"masterKey,omitempty"` // Deprecated, but required by linked devices EphemeralBackupKey []byte `protobuf:"bytes,14,opt,name=ephemeralBackupKey" json:"ephemeralBackupKey,omitempty"` // 32 bytes AccountEntropyPool *string `protobuf:"bytes,15,opt,name=accountEntropyPool" json:"accountEntropyPool,omitempty"` MediaRootBackupKey []byte `protobuf:"bytes,16,opt,name=mediaRootBackupKey" json:"mediaRootBackupKey,omitempty"` // 32-bytes @@ -322,6 +323,13 @@ func (x *ProvisionMessage) GetProvisioningVersion() uint32 { return 0 } +func (x *ProvisionMessage) GetMasterKey() []byte { + if x != nil { + return x.MasterKey + } + return nil +} + func (x *ProvisionMessage) GetEphemeralBackupKey() []byte { if x != nil { return x.EphemeralBackupKey @@ -366,7 +374,7 @@ const file_Provisioning_proto_rawDesc = "" + "\aaddress\x18\x01 \x01(\tR\aaddress\"E\n" + "\x11ProvisionEnvelope\x12\x1c\n" + "\tpublicKey\x18\x01 \x01(\fR\tpublicKey\x12\x12\n" + - "\x04body\x18\x02 \x01(\fR\x04body\"\xb4\x05\n" + + "\x04body\x18\x02 \x01(\fR\x04body\"\xcc\x05\n" + "\x10ProvisionMessage\x122\n" + "\x14aciIdentityKeyPublic\x18\x01 \x01(\fR\x14aciIdentityKeyPublic\x124\n" + "\x15aciIdentityKeyPrivate\x18\x02 \x01(\fR\x15aciIdentityKeyPrivate\x122\n" + @@ -382,12 +390,13 @@ const file_Provisioning_proto_rawDesc = "" + "profileKey\x18\x06 \x01(\fR\n" + "profileKey\x12\"\n" + "\freadReceipts\x18\a \x01(\bR\freadReceipts\x120\n" + - "\x13provisioningVersion\x18\t \x01(\rR\x13provisioningVersion\x12.\n" + + "\x13provisioningVersion\x18\t \x01(\rR\x13provisioningVersion\x12\x1c\n" + + "\tmasterKey\x18\r \x01(\fR\tmasterKey\x12.\n" + "\x12ephemeralBackupKey\x18\x0e \x01(\fR\x12ephemeralBackupKey\x12.\n" + "\x12accountEntropyPool\x18\x0f \x01(\tR\x12accountEntropyPool\x12.\n" + "\x12mediaRootBackupKey\x18\x10 \x01(\fR\x12mediaRootBackupKey\x12\x1c\n" + "\taciBinary\x18\x11 \x01(\fR\taciBinary\x12\x1c\n" + - "\tpniBinary\x18\x12 \x01(\fR\tpniBinaryJ\x04\b\r\x10\x0e*G\n" + + "\tpniBinary\x18\x12 \x01(\fR\tpniBinary*G\n" + "\x13ProvisioningVersion\x12\v\n" + "\aINITIAL\x10\x00\x12\x12\n" + "\x0eTABLET_SUPPORT\x10\x01\x12\v\n" + diff --git a/pkg/signalmeow/protobuf/Provisioning.proto b/pkg/signalmeow/protobuf/Provisioning.proto index b5eeaf6..2fde938 100644 --- a/pkg/signalmeow/protobuf/Provisioning.proto +++ b/pkg/signalmeow/protobuf/Provisioning.proto @@ -38,7 +38,7 @@ message ProvisionMessage { optional bytes profileKey = 6; optional bool readReceipts = 7; optional uint32 provisioningVersion = 9; - reserved /*masterKey*/ 13; // Deprecated in favor of accountEntropyPool + optional bytes masterKey = 13; // Deprecated, but required by linked devices optional bytes ephemeralBackupKey = 14; // 32 bytes optional string accountEntropyPool = 15; optional bytes mediaRootBackupKey = 16; // 32-bytes diff --git a/pkg/signalmeow/protobuf/SignalService.pb.go b/pkg/signalmeow/protobuf/SignalService.pb.go index 1544d05..5866dbb 100644 --- a/pkg/signalmeow/protobuf/SignalService.pb.go +++ b/pkg/signalmeow/protobuf/SignalService.pb.go @@ -5,7 +5,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: SignalService.proto package signalpb @@ -28,71 +28,33 @@ const ( type Envelope_Type int32 const ( - Envelope_UNKNOWN Envelope_Type = 0 - // * - // A double-ratchet message represents a "normal," "unsealed-sender" message - // encrypted using the Double Ratchet within an established Signal session. - // Double-ratchet messages include sender information in the plaintext - // portion of the `Envelope`. - Envelope_DOUBLE_RATCHET Envelope_Type = 1 // content => (version byte | SignalMessage{Content}) - // * - // A prekey message begins a new Signal session. The `content` of a prekey - // message is a superset of a double-ratchet message's `content` and - // contains the sender's identity public key and information identifying the - // pre-keys used in the message's ciphertext. Like double-ratchet messages, - // prekey messages contain sender information in the plaintext portion of - // the `Envelope`. - Envelope_PREKEY_MESSAGE Envelope_Type = 3 // content => (version byte | PreKeySignalMessage{Content}) - // * - // Server delivery receipts are generated by the server when - // "unsealed-sender" messages are delivered to and acknowledged by the - // destination device. Server delivery receipts identify the sender in the - // plaintext portion of the `Envelope` and have no `content`. Note that - // receipts for sealed-sender messages are generated by clients as - // `UNIDENTIFIED_SENDER` messages. - // - // Note that, with server delivery receipts, the "client timestamp" on - // the envelope refers to the timestamp of the original message (i.e. the - // message the server just delivered) and not to the time of delivery. The - // "server timestamp" refers to the time of delivery. - Envelope_SERVER_DELIVERY_RECEIPT Envelope_Type = 5 // content => [] - // * - // An unidentified sender message represents a message with no sender - // information in the plaintext portion of the `Envelope`. Unidentified - // sender messages always contain an additional `subtype` in their - // `content`. They may or may not be part of an existing Signal session - // (i.e. an unidentified sender message may have a "prekey message" - // subtype or may indicate an encryption error). - Envelope_UNIDENTIFIED_SENDER Envelope_Type = 6 // content => ((version byte | UnidentifiedSenderMessage) OR (version byte | Multi-Recipient Sealed Sender Format)) - // * - // A plaintext message is used solely to convey encryption error receipts - // and never contains encrypted message content. Encryption error receipts - // must be delivered in plaintext because, encryption/decryption of a prior - // message failed and there is no reason to believe that - // encryption/decryption of subsequent messages with the same key material - // would succeed. - // - // Critically, plaintext messages never have "real" message content - // generated by users. Plaintext messages include sender information. - Envelope_PLAINTEXT_CONTENT Envelope_Type = 8 // content => (marker byte | Content) + Envelope_UNKNOWN Envelope_Type = 0 + Envelope_CIPHERTEXT Envelope_Type = 1 // content => (version byte | SignalMessage{Content}) + Envelope_PREKEY_BUNDLE Envelope_Type = 3 // content => (version byte | PreKeySignalMessage{Content}) + Envelope_SERVER_DELIVERY_RECEIPT Envelope_Type = 5 // legacyMessage => [] AND content => [] + Envelope_UNIDENTIFIED_SENDER Envelope_Type = 6 // legacyMessage => [] AND content => ((version byte | UnidentifiedSenderMessage) OR (version byte | Multi-Recipient Sealed Sender Format)) + Envelope_SENDERKEY_MESSAGE Envelope_Type = 7 // legacyMessage => [] AND content => (version byte | SenderKeyMessage) + Envelope_PLAINTEXT_CONTENT Envelope_Type = 8 // legacyMessage => [] AND content => (marker byte | Content) ) // Enum value maps for Envelope_Type. var ( Envelope_Type_name = map[int32]string{ 0: "UNKNOWN", - 1: "DOUBLE_RATCHET", - 3: "PREKEY_MESSAGE", + 1: "CIPHERTEXT", + 3: "PREKEY_BUNDLE", 5: "SERVER_DELIVERY_RECEIPT", 6: "UNIDENTIFIED_SENDER", + 7: "SENDERKEY_MESSAGE", 8: "PLAINTEXT_CONTENT", } Envelope_Type_value = map[string]int32{ "UNKNOWN": 0, - "DOUBLE_RATCHET": 1, - "PREKEY_MESSAGE": 3, + "CIPHERTEXT": 1, + "PREKEY_BUNDLE": 3, "SERVER_DELIVERY_RECEIPT": 5, "UNIDENTIFIED_SENDER": 6, + "SENDERKEY_MESSAGE": 7, "PLAINTEXT_CONTENT": 8, } ) @@ -314,6 +276,7 @@ func (CallMessage_Opaque_Urgency) EnumDescriptor() ([]byte, []int) { type DataMessage_Flags int32 const ( + DataMessage_END_SESSION DataMessage_Flags = 1 DataMessage_EXPIRATION_TIMER_UPDATE DataMessage_Flags = 2 DataMessage_PROFILE_KEY_UPDATE DataMessage_Flags = 4 DataMessage_FORWARD DataMessage_Flags = 8 @@ -322,11 +285,13 @@ const ( // Enum value maps for DataMessage_Flags. var ( DataMessage_Flags_name = map[int32]string{ + 1: "END_SESSION", 2: "EXPIRATION_TIMER_UPDATE", 4: "PROFILE_KEY_UPDATE", 8: "FORWARD", } DataMessage_Flags_value = map[string]int32{ + "END_SESSION": 1, "EXPIRATION_TIMER_UPDATE": 2, "PROFILE_KEY_UPDATE": 4, "FORWARD": 8, @@ -1788,9 +1753,9 @@ type Envelope struct { state protoimpl.MessageState `protogen:"open.v1"` Type *Envelope_Type `protobuf:"varint,1,opt,name=type,enum=signalservice.Envelope_Type" json:"type,omitempty"` SourceServiceId *string `protobuf:"bytes,11,opt,name=sourceServiceId" json:"sourceServiceId,omitempty"` - SourceDeviceId *uint32 `protobuf:"varint,7,opt,name=sourceDeviceId" json:"sourceDeviceId,omitempty"` + SourceDevice *uint32 `protobuf:"varint,7,opt,name=sourceDevice" json:"sourceDevice,omitempty"` DestinationServiceId *string `protobuf:"bytes,13,opt,name=destinationServiceId" json:"destinationServiceId,omitempty"` - ClientTimestamp *uint64 `protobuf:"varint,5,opt,name=clientTimestamp" json:"clientTimestamp,omitempty"` + Timestamp *uint64 `protobuf:"varint,5,opt,name=timestamp" json:"timestamp,omitempty"` Content []byte `protobuf:"bytes,8,opt,name=content" json:"content,omitempty"` // Contains an encrypted Content ServerGuid *string `protobuf:"bytes,9,opt,name=serverGuid" json:"serverGuid,omitempty"` ServerTimestamp *uint64 `protobuf:"varint,10,opt,name=serverTimestamp" json:"serverTimestamp,omitempty"` @@ -1856,9 +1821,9 @@ func (x *Envelope) GetSourceServiceId() string { return "" } -func (x *Envelope) GetSourceDeviceId() uint32 { - if x != nil && x.SourceDeviceId != nil { - return *x.SourceDeviceId +func (x *Envelope) GetSourceDevice() uint32 { + if x != nil && x.SourceDevice != nil { + return *x.SourceDevice } return 0 } @@ -1870,9 +1835,9 @@ func (x *Envelope) GetDestinationServiceId() string { return "" } -func (x *Envelope) GetClientTimestamp() uint64 { - if x != nil && x.ClientTimestamp != nil { - return *x.ClientTimestamp +func (x *Envelope) GetTimestamp() uint64 { + if x != nil && x.Timestamp != nil { + return *x.Timestamp } return 0 } @@ -1962,21 +1927,18 @@ func (x *Envelope) GetUpdatedPniBinary() []byte { } type Content struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Content: - // - // *Content_DataMessage - // *Content_SyncMessage - // *Content_CallMessage - // *Content_NullMessage - // *Content_ReceiptMessage - // *Content_TypingMessage - // *Content_DecryptionErrorMessage - // *Content_StoryMessage - // *Content_EditMessage - Content isContent_Content `protobuf_oneof:"content"` - SenderKeyDistributionMessage []byte `protobuf:"bytes,7,opt,name=senderKeyDistributionMessage" json:"senderKeyDistributionMessage,omitempty"` - PniSignatureMessage *PniSignatureMessage `protobuf:"bytes,10,opt,name=pniSignatureMessage" json:"pniSignatureMessage,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + DataMessage *DataMessage `protobuf:"bytes,1,opt,name=dataMessage" json:"dataMessage,omitempty"` + SyncMessage *SyncMessage `protobuf:"bytes,2,opt,name=syncMessage" json:"syncMessage,omitempty"` + CallMessage *CallMessage `protobuf:"bytes,3,opt,name=callMessage" json:"callMessage,omitempty"` + NullMessage *NullMessage `protobuf:"bytes,4,opt,name=nullMessage" json:"nullMessage,omitempty"` + ReceiptMessage *ReceiptMessage `protobuf:"bytes,5,opt,name=receiptMessage" json:"receiptMessage,omitempty"` + TypingMessage *TypingMessage `protobuf:"bytes,6,opt,name=typingMessage" json:"typingMessage,omitempty"` + SenderKeyDistributionMessage []byte `protobuf:"bytes,7,opt,name=senderKeyDistributionMessage" json:"senderKeyDistributionMessage,omitempty"` + DecryptionErrorMessage []byte `protobuf:"bytes,8,opt,name=decryptionErrorMessage" json:"decryptionErrorMessage,omitempty"` + StoryMessage *StoryMessage `protobuf:"bytes,9,opt,name=storyMessage" json:"storyMessage,omitempty"` + PniSignatureMessage *PniSignatureMessage `protobuf:"bytes,10,opt,name=pniSignatureMessage" json:"pniSignatureMessage,omitempty"` + EditMessage *EditMessage `protobuf:"bytes,11,opt,name=editMessage" json:"editMessage,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2011,90 +1973,44 @@ func (*Content) Descriptor() ([]byte, []int) { return file_SignalService_proto_rawDescGZIP(), []int{1} } -func (x *Content) GetContent() isContent_Content { - if x != nil { - return x.Content - } - return nil -} - func (x *Content) GetDataMessage() *DataMessage { if x != nil { - if x, ok := x.Content.(*Content_DataMessage); ok { - return x.DataMessage - } + return x.DataMessage } return nil } func (x *Content) GetSyncMessage() *SyncMessage { if x != nil { - if x, ok := x.Content.(*Content_SyncMessage); ok { - return x.SyncMessage - } + return x.SyncMessage } return nil } func (x *Content) GetCallMessage() *CallMessage { if x != nil { - if x, ok := x.Content.(*Content_CallMessage); ok { - return x.CallMessage - } + return x.CallMessage } return nil } func (x *Content) GetNullMessage() *NullMessage { if x != nil { - if x, ok := x.Content.(*Content_NullMessage); ok { - return x.NullMessage - } + return x.NullMessage } return nil } func (x *Content) GetReceiptMessage() *ReceiptMessage { if x != nil { - if x, ok := x.Content.(*Content_ReceiptMessage); ok { - return x.ReceiptMessage - } + return x.ReceiptMessage } return nil } func (x *Content) GetTypingMessage() *TypingMessage { if x != nil { - if x, ok := x.Content.(*Content_TypingMessage); ok { - return x.TypingMessage - } - } - return nil -} - -func (x *Content) GetDecryptionErrorMessage() []byte { - if x != nil { - if x, ok := x.Content.(*Content_DecryptionErrorMessage); ok { - return x.DecryptionErrorMessage - } - } - return nil -} - -func (x *Content) GetStoryMessage() *StoryMessage { - if x != nil { - if x, ok := x.Content.(*Content_StoryMessage); ok { - return x.StoryMessage - } - } - return nil -} - -func (x *Content) GetEditMessage() *EditMessage { - if x != nil { - if x, ok := x.Content.(*Content_EditMessage); ok { - return x.EditMessage - } + return x.TypingMessage } return nil } @@ -2106,6 +2022,20 @@ func (x *Content) GetSenderKeyDistributionMessage() []byte { return nil } +func (x *Content) GetDecryptionErrorMessage() []byte { + if x != nil { + return x.DecryptionErrorMessage + } + return nil +} + +func (x *Content) GetStoryMessage() *StoryMessage { + if x != nil { + return x.StoryMessage + } + return nil +} + func (x *Content) GetPniSignatureMessage() *PniSignatureMessage { if x != nil { return x.PniSignatureMessage @@ -2113,64 +2043,13 @@ func (x *Content) GetPniSignatureMessage() *PniSignatureMessage { return nil } -type isContent_Content interface { - isContent_Content() +func (x *Content) GetEditMessage() *EditMessage { + if x != nil { + return x.EditMessage + } + return nil } -type Content_DataMessage struct { - DataMessage *DataMessage `protobuf:"bytes,1,opt,name=dataMessage,oneof"` -} - -type Content_SyncMessage struct { - SyncMessage *SyncMessage `protobuf:"bytes,2,opt,name=syncMessage,oneof"` -} - -type Content_CallMessage struct { - CallMessage *CallMessage `protobuf:"bytes,3,opt,name=callMessage,oneof"` -} - -type Content_NullMessage struct { - NullMessage *NullMessage `protobuf:"bytes,4,opt,name=nullMessage,oneof"` -} - -type Content_ReceiptMessage struct { - ReceiptMessage *ReceiptMessage `protobuf:"bytes,5,opt,name=receiptMessage,oneof"` -} - -type Content_TypingMessage struct { - TypingMessage *TypingMessage `protobuf:"bytes,6,opt,name=typingMessage,oneof"` -} - -type Content_DecryptionErrorMessage struct { - DecryptionErrorMessage []byte `protobuf:"bytes,8,opt,name=decryptionErrorMessage,oneof"` -} - -type Content_StoryMessage struct { - StoryMessage *StoryMessage `protobuf:"bytes,9,opt,name=storyMessage,oneof"` -} - -type Content_EditMessage struct { - EditMessage *EditMessage `protobuf:"bytes,11,opt,name=editMessage,oneof"` -} - -func (*Content_DataMessage) isContent_Content() {} - -func (*Content_SyncMessage) isContent_Content() {} - -func (*Content_CallMessage) isContent_Content() {} - -func (*Content_NullMessage) isContent_Content() {} - -func (*Content_ReceiptMessage) isContent_Content() {} - -func (*Content_TypingMessage) isContent_Content() {} - -func (*Content_DecryptionErrorMessage) isContent_Content() {} - -func (*Content_StoryMessage) isContent_Content() {} - -func (*Content_EditMessage) isContent_Content() {} - type CallMessage struct { state protoimpl.MessageState `protogen:"open.v1"` Offer *CallMessage_Offer `protobuf:"bytes,1,opt,name=offer" json:"offer,omitempty"` @@ -2290,8 +2169,7 @@ type DataMessage struct { PollTerminate *DataMessage_PollTerminate `protobuf:"bytes,25,opt,name=pollTerminate" json:"pollTerminate,omitempty"` PollVote *DataMessage_PollVote `protobuf:"bytes,26,opt,name=pollVote" json:"pollVote,omitempty"` PinMessage *DataMessage_PinMessage `protobuf:"bytes,27,opt,name=pinMessage" json:"pinMessage,omitempty"` - UnpinMessage *DataMessage_UnpinMessage `protobuf:"bytes,28,opt,name=unpinMessage" json:"unpinMessage,omitempty"` - AdminDelete *DataMessage_AdminDelete `protobuf:"bytes,29,opt,name=adminDelete" json:"adminDelete,omitempty"` // NEXT ID: 30 + UnpinMessage *DataMessage_UnpinMessage `protobuf:"bytes,28,opt,name=unpinMessage" json:"unpinMessage,omitempty"` // NEXT ID: 29 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2508,13 +2386,6 @@ func (x *DataMessage) GetUnpinMessage() *DataMessage_UnpinMessage { return nil } -func (x *DataMessage) GetAdminDelete() *DataMessage_AdminDelete { - if x != nil { - return x.AdminDelete - } - return nil -} - type NullMessage struct { state protoimpl.MessageState `protogen:"open.v1"` Padding []byte `protobuf:"bytes,1,opt,name=padding" json:"padding,omitempty"` @@ -3060,39 +2931,32 @@ func (x *Verified) GetDestinationAciBinary() []byte { } type SyncMessage struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Content: - // - // *SyncMessage_Sent_ - // *SyncMessage_Contacts_ - // *SyncMessage_Request_ - // *SyncMessage_Blocked_ - // *SyncMessage_Verified - // *SyncMessage_Configuration_ - // *SyncMessage_ViewOnceOpen_ - // *SyncMessage_FetchLatest_ - // *SyncMessage_Keys_ - // *SyncMessage_MessageRequestResponse_ - // *SyncMessage_OutgoingPayment_ - // *SyncMessage_PniChangeNumber_ - // *SyncMessage_CallEvent_ - // *SyncMessage_CallLinkUpdate_ - // *SyncMessage_CallLogEvent_ - // *SyncMessage_DeleteForMe_ - // *SyncMessage_DeviceNameChange_ - // *SyncMessage_AttachmentBackfillRequest_ - // *SyncMessage_AttachmentBackfillResponse_ - // *SyncMessage_UsernameChange_ - Content isSyncMessage_Content `protobuf_oneof:"content"` - // Protobufs don't allow `repeated` fields to be inside of `oneof` so while - // the fields below are mutually exclusive with the rest of the values above - // we have to place them outside of `oneof`. - Read []*SyncMessage_Read `protobuf:"bytes,5,rep,name=read" json:"read,omitempty"` - StickerPackOperation []*SyncMessage_StickerPackOperation `protobuf:"bytes,10,rep,name=stickerPackOperation" json:"stickerPackOperation,omitempty"` - Viewed []*SyncMessage_Viewed `protobuf:"bytes,16,rep,name=viewed" json:"viewed,omitempty"` - Padding []byte `protobuf:"bytes,8,opt,name=padding" json:"padding,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Sent *SyncMessage_Sent `protobuf:"bytes,1,opt,name=sent" json:"sent,omitempty"` + Contacts *SyncMessage_Contacts `protobuf:"bytes,2,opt,name=contacts" json:"contacts,omitempty"` + Request *SyncMessage_Request `protobuf:"bytes,4,opt,name=request" json:"request,omitempty"` + Read []*SyncMessage_Read `protobuf:"bytes,5,rep,name=read" json:"read,omitempty"` + Blocked *SyncMessage_Blocked `protobuf:"bytes,6,opt,name=blocked" json:"blocked,omitempty"` + Verified *Verified `protobuf:"bytes,7,opt,name=verified" json:"verified,omitempty"` + Configuration *SyncMessage_Configuration `protobuf:"bytes,9,opt,name=configuration" json:"configuration,omitempty"` + Padding []byte `protobuf:"bytes,8,opt,name=padding" json:"padding,omitempty"` + StickerPackOperation []*SyncMessage_StickerPackOperation `protobuf:"bytes,10,rep,name=stickerPackOperation" json:"stickerPackOperation,omitempty"` + ViewOnceOpen *SyncMessage_ViewOnceOpen `protobuf:"bytes,11,opt,name=viewOnceOpen" json:"viewOnceOpen,omitempty"` + FetchLatest *SyncMessage_FetchLatest `protobuf:"bytes,12,opt,name=fetchLatest" json:"fetchLatest,omitempty"` + Keys *SyncMessage_Keys `protobuf:"bytes,13,opt,name=keys" json:"keys,omitempty"` + MessageRequestResponse *SyncMessage_MessageRequestResponse `protobuf:"bytes,14,opt,name=messageRequestResponse" json:"messageRequestResponse,omitempty"` + OutgoingPayment *SyncMessage_OutgoingPayment `protobuf:"bytes,15,opt,name=outgoingPayment" json:"outgoingPayment,omitempty"` + Viewed []*SyncMessage_Viewed `protobuf:"bytes,16,rep,name=viewed" json:"viewed,omitempty"` + PniChangeNumber *SyncMessage_PniChangeNumber `protobuf:"bytes,18,opt,name=pniChangeNumber" json:"pniChangeNumber,omitempty"` + CallEvent *SyncMessage_CallEvent `protobuf:"bytes,19,opt,name=callEvent" json:"callEvent,omitempty"` + CallLinkUpdate *SyncMessage_CallLinkUpdate `protobuf:"bytes,20,opt,name=callLinkUpdate" json:"callLinkUpdate,omitempty"` + CallLogEvent *SyncMessage_CallLogEvent `protobuf:"bytes,21,opt,name=callLogEvent" json:"callLogEvent,omitempty"` + DeleteForMe *SyncMessage_DeleteForMe `protobuf:"bytes,22,opt,name=deleteForMe" json:"deleteForMe,omitempty"` + DeviceNameChange *SyncMessage_DeviceNameChange `protobuf:"bytes,23,opt,name=deviceNameChange" json:"deviceNameChange,omitempty"` + AttachmentBackfillRequest *SyncMessage_AttachmentBackfillRequest `protobuf:"bytes,24,opt,name=attachmentBackfillRequest" json:"attachmentBackfillRequest,omitempty"` + AttachmentBackfillResponse *SyncMessage_AttachmentBackfillResponse `protobuf:"bytes,25,opt,name=attachmentBackfillResponse" json:"attachmentBackfillResponse,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SyncMessage) Reset() { @@ -3125,189 +2989,23 @@ func (*SyncMessage) Descriptor() ([]byte, []int) { return file_SignalService_proto_rawDescGZIP(), []int{11} } -func (x *SyncMessage) GetContent() isSyncMessage_Content { - if x != nil { - return x.Content - } - return nil -} - func (x *SyncMessage) GetSent() *SyncMessage_Sent { if x != nil { - if x, ok := x.Content.(*SyncMessage_Sent_); ok { - return x.Sent - } + return x.Sent } return nil } func (x *SyncMessage) GetContacts() *SyncMessage_Contacts { if x != nil { - if x, ok := x.Content.(*SyncMessage_Contacts_); ok { - return x.Contacts - } + return x.Contacts } return nil } func (x *SyncMessage) GetRequest() *SyncMessage_Request { if x != nil { - if x, ok := x.Content.(*SyncMessage_Request_); ok { - return x.Request - } - } - return nil -} - -func (x *SyncMessage) GetBlocked() *SyncMessage_Blocked { - if x != nil { - if x, ok := x.Content.(*SyncMessage_Blocked_); ok { - return x.Blocked - } - } - return nil -} - -func (x *SyncMessage) GetVerified() *Verified { - if x != nil { - if x, ok := x.Content.(*SyncMessage_Verified); ok { - return x.Verified - } - } - return nil -} - -func (x *SyncMessage) GetConfiguration() *SyncMessage_Configuration { - if x != nil { - if x, ok := x.Content.(*SyncMessage_Configuration_); ok { - return x.Configuration - } - } - return nil -} - -func (x *SyncMessage) GetViewOnceOpen() *SyncMessage_ViewOnceOpen { - if x != nil { - if x, ok := x.Content.(*SyncMessage_ViewOnceOpen_); ok { - return x.ViewOnceOpen - } - } - return nil -} - -func (x *SyncMessage) GetFetchLatest() *SyncMessage_FetchLatest { - if x != nil { - if x, ok := x.Content.(*SyncMessage_FetchLatest_); ok { - return x.FetchLatest - } - } - return nil -} - -func (x *SyncMessage) GetKeys() *SyncMessage_Keys { - if x != nil { - if x, ok := x.Content.(*SyncMessage_Keys_); ok { - return x.Keys - } - } - return nil -} - -func (x *SyncMessage) GetMessageRequestResponse() *SyncMessage_MessageRequestResponse { - if x != nil { - if x, ok := x.Content.(*SyncMessage_MessageRequestResponse_); ok { - return x.MessageRequestResponse - } - } - return nil -} - -func (x *SyncMessage) GetOutgoingPayment() *SyncMessage_OutgoingPayment { - if x != nil { - if x, ok := x.Content.(*SyncMessage_OutgoingPayment_); ok { - return x.OutgoingPayment - } - } - return nil -} - -func (x *SyncMessage) GetPniChangeNumber() *SyncMessage_PniChangeNumber { - if x != nil { - if x, ok := x.Content.(*SyncMessage_PniChangeNumber_); ok { - return x.PniChangeNumber - } - } - return nil -} - -func (x *SyncMessage) GetCallEvent() *SyncMessage_CallEvent { - if x != nil { - if x, ok := x.Content.(*SyncMessage_CallEvent_); ok { - return x.CallEvent - } - } - return nil -} - -func (x *SyncMessage) GetCallLinkUpdate() *SyncMessage_CallLinkUpdate { - if x != nil { - if x, ok := x.Content.(*SyncMessage_CallLinkUpdate_); ok { - return x.CallLinkUpdate - } - } - return nil -} - -func (x *SyncMessage) GetCallLogEvent() *SyncMessage_CallLogEvent { - if x != nil { - if x, ok := x.Content.(*SyncMessage_CallLogEvent_); ok { - return x.CallLogEvent - } - } - return nil -} - -func (x *SyncMessage) GetDeleteForMe() *SyncMessage_DeleteForMe { - if x != nil { - if x, ok := x.Content.(*SyncMessage_DeleteForMe_); ok { - return x.DeleteForMe - } - } - return nil -} - -func (x *SyncMessage) GetDeviceNameChange() *SyncMessage_DeviceNameChange { - if x != nil { - if x, ok := x.Content.(*SyncMessage_DeviceNameChange_); ok { - return x.DeviceNameChange - } - } - return nil -} - -func (x *SyncMessage) GetAttachmentBackfillRequest() *SyncMessage_AttachmentBackfillRequest { - if x != nil { - if x, ok := x.Content.(*SyncMessage_AttachmentBackfillRequest_); ok { - return x.AttachmentBackfillRequest - } - } - return nil -} - -func (x *SyncMessage) GetAttachmentBackfillResponse() *SyncMessage_AttachmentBackfillResponse { - if x != nil { - if x, ok := x.Content.(*SyncMessage_AttachmentBackfillResponse_); ok { - return x.AttachmentBackfillResponse - } - } - return nil -} - -func (x *SyncMessage) GetUsernameChange() *SyncMessage_UsernameChange { - if x != nil { - if x, ok := x.Content.(*SyncMessage_UsernameChange_); ok { - return x.UsernameChange - } + return x.Request } return nil } @@ -3319,16 +3017,23 @@ func (x *SyncMessage) GetRead() []*SyncMessage_Read { return nil } -func (x *SyncMessage) GetStickerPackOperation() []*SyncMessage_StickerPackOperation { +func (x *SyncMessage) GetBlocked() *SyncMessage_Blocked { if x != nil { - return x.StickerPackOperation + return x.Blocked } return nil } -func (x *SyncMessage) GetViewed() []*SyncMessage_Viewed { +func (x *SyncMessage) GetVerified() *Verified { if x != nil { - return x.Viewed + return x.Verified + } + return nil +} + +func (x *SyncMessage) GetConfiguration() *SyncMessage_Configuration { + if x != nil { + return x.Configuration } return nil } @@ -3340,130 +3045,111 @@ func (x *SyncMessage) GetPadding() []byte { return nil } -type isSyncMessage_Content interface { - isSyncMessage_Content() +func (x *SyncMessage) GetStickerPackOperation() []*SyncMessage_StickerPackOperation { + if x != nil { + return x.StickerPackOperation + } + return nil } -type SyncMessage_Sent_ struct { - Sent *SyncMessage_Sent `protobuf:"bytes,1,opt,name=sent,oneof"` +func (x *SyncMessage) GetViewOnceOpen() *SyncMessage_ViewOnceOpen { + if x != nil { + return x.ViewOnceOpen + } + return nil } -type SyncMessage_Contacts_ struct { - Contacts *SyncMessage_Contacts `protobuf:"bytes,2,opt,name=contacts,oneof"` +func (x *SyncMessage) GetFetchLatest() *SyncMessage_FetchLatest { + if x != nil { + return x.FetchLatest + } + return nil } -type SyncMessage_Request_ struct { - Request *SyncMessage_Request `protobuf:"bytes,4,opt,name=request,oneof"` +func (x *SyncMessage) GetKeys() *SyncMessage_Keys { + if x != nil { + return x.Keys + } + return nil } -type SyncMessage_Blocked_ struct { - Blocked *SyncMessage_Blocked `protobuf:"bytes,6,opt,name=blocked,oneof"` +func (x *SyncMessage) GetMessageRequestResponse() *SyncMessage_MessageRequestResponse { + if x != nil { + return x.MessageRequestResponse + } + return nil } -type SyncMessage_Verified struct { - Verified *Verified `protobuf:"bytes,7,opt,name=verified,oneof"` +func (x *SyncMessage) GetOutgoingPayment() *SyncMessage_OutgoingPayment { + if x != nil { + return x.OutgoingPayment + } + return nil } -type SyncMessage_Configuration_ struct { - Configuration *SyncMessage_Configuration `protobuf:"bytes,9,opt,name=configuration,oneof"` +func (x *SyncMessage) GetViewed() []*SyncMessage_Viewed { + if x != nil { + return x.Viewed + } + return nil } -type SyncMessage_ViewOnceOpen_ struct { - ViewOnceOpen *SyncMessage_ViewOnceOpen `protobuf:"bytes,11,opt,name=viewOnceOpen,oneof"` +func (x *SyncMessage) GetPniChangeNumber() *SyncMessage_PniChangeNumber { + if x != nil { + return x.PniChangeNumber + } + return nil } -type SyncMessage_FetchLatest_ struct { - FetchLatest *SyncMessage_FetchLatest `protobuf:"bytes,12,opt,name=fetchLatest,oneof"` +func (x *SyncMessage) GetCallEvent() *SyncMessage_CallEvent { + if x != nil { + return x.CallEvent + } + return nil } -type SyncMessage_Keys_ struct { - Keys *SyncMessage_Keys `protobuf:"bytes,13,opt,name=keys,oneof"` +func (x *SyncMessage) GetCallLinkUpdate() *SyncMessage_CallLinkUpdate { + if x != nil { + return x.CallLinkUpdate + } + return nil } -type SyncMessage_MessageRequestResponse_ struct { - MessageRequestResponse *SyncMessage_MessageRequestResponse `protobuf:"bytes,14,opt,name=messageRequestResponse,oneof"` +func (x *SyncMessage) GetCallLogEvent() *SyncMessage_CallLogEvent { + if x != nil { + return x.CallLogEvent + } + return nil } -type SyncMessage_OutgoingPayment_ struct { - OutgoingPayment *SyncMessage_OutgoingPayment `protobuf:"bytes,15,opt,name=outgoingPayment,oneof"` +func (x *SyncMessage) GetDeleteForMe() *SyncMessage_DeleteForMe { + if x != nil { + return x.DeleteForMe + } + return nil } -type SyncMessage_PniChangeNumber_ struct { - PniChangeNumber *SyncMessage_PniChangeNumber `protobuf:"bytes,18,opt,name=pniChangeNumber,oneof"` +func (x *SyncMessage) GetDeviceNameChange() *SyncMessage_DeviceNameChange { + if x != nil { + return x.DeviceNameChange + } + return nil } -type SyncMessage_CallEvent_ struct { - CallEvent *SyncMessage_CallEvent `protobuf:"bytes,19,opt,name=callEvent,oneof"` +func (x *SyncMessage) GetAttachmentBackfillRequest() *SyncMessage_AttachmentBackfillRequest { + if x != nil { + return x.AttachmentBackfillRequest + } + return nil } -type SyncMessage_CallLinkUpdate_ struct { - CallLinkUpdate *SyncMessage_CallLinkUpdate `protobuf:"bytes,20,opt,name=callLinkUpdate,oneof"` +func (x *SyncMessage) GetAttachmentBackfillResponse() *SyncMessage_AttachmentBackfillResponse { + if x != nil { + return x.AttachmentBackfillResponse + } + return nil } -type SyncMessage_CallLogEvent_ struct { - CallLogEvent *SyncMessage_CallLogEvent `protobuf:"bytes,21,opt,name=callLogEvent,oneof"` -} - -type SyncMessage_DeleteForMe_ struct { - DeleteForMe *SyncMessage_DeleteForMe `protobuf:"bytes,22,opt,name=deleteForMe,oneof"` -} - -type SyncMessage_DeviceNameChange_ struct { - DeviceNameChange *SyncMessage_DeviceNameChange `protobuf:"bytes,23,opt,name=deviceNameChange,oneof"` -} - -type SyncMessage_AttachmentBackfillRequest_ struct { - AttachmentBackfillRequest *SyncMessage_AttachmentBackfillRequest `protobuf:"bytes,24,opt,name=attachmentBackfillRequest,oneof"` -} - -type SyncMessage_AttachmentBackfillResponse_ struct { - AttachmentBackfillResponse *SyncMessage_AttachmentBackfillResponse `protobuf:"bytes,25,opt,name=attachmentBackfillResponse,oneof"` -} - -type SyncMessage_UsernameChange_ struct { - UsernameChange *SyncMessage_UsernameChange `protobuf:"bytes,26,opt,name=usernameChange,oneof"` -} - -func (*SyncMessage_Sent_) isSyncMessage_Content() {} - -func (*SyncMessage_Contacts_) isSyncMessage_Content() {} - -func (*SyncMessage_Request_) isSyncMessage_Content() {} - -func (*SyncMessage_Blocked_) isSyncMessage_Content() {} - -func (*SyncMessage_Verified) isSyncMessage_Content() {} - -func (*SyncMessage_Configuration_) isSyncMessage_Content() {} - -func (*SyncMessage_ViewOnceOpen_) isSyncMessage_Content() {} - -func (*SyncMessage_FetchLatest_) isSyncMessage_Content() {} - -func (*SyncMessage_Keys_) isSyncMessage_Content() {} - -func (*SyncMessage_MessageRequestResponse_) isSyncMessage_Content() {} - -func (*SyncMessage_OutgoingPayment_) isSyncMessage_Content() {} - -func (*SyncMessage_PniChangeNumber_) isSyncMessage_Content() {} - -func (*SyncMessage_CallEvent_) isSyncMessage_Content() {} - -func (*SyncMessage_CallLinkUpdate_) isSyncMessage_Content() {} - -func (*SyncMessage_CallLogEvent_) isSyncMessage_Content() {} - -func (*SyncMessage_DeleteForMe_) isSyncMessage_Content() {} - -func (*SyncMessage_DeviceNameChange_) isSyncMessage_Content() {} - -func (*SyncMessage_AttachmentBackfillRequest_) isSyncMessage_Content() {} - -func (*SyncMessage_AttachmentBackfillResponse_) isSyncMessage_Content() {} - -func (*SyncMessage_UsernameChange_) isSyncMessage_Content() {} - type AttachmentPointer struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to AttachmentIdentifier: @@ -5431,8 +5117,8 @@ type DataMessage_PollVote struct { state protoimpl.MessageState `protogen:"open.v1"` TargetAuthorAciBinary []byte `protobuf:"bytes,1,opt,name=targetAuthorAciBinary" json:"targetAuthorAciBinary,omitempty"` TargetSentTimestamp *uint64 `protobuf:"varint,2,opt,name=targetSentTimestamp" json:"targetSentTimestamp,omitempty"` - OptionIndexes []uint32 `protobuf:"varint,3,rep,name=optionIndexes" json:"optionIndexes,omitempty"` - VoteCount *uint32 `protobuf:"varint,4,opt,name=voteCount" json:"voteCount,omitempty"` + OptionIndexes []uint32 `protobuf:"varint,3,rep,name=optionIndexes" json:"optionIndexes,omitempty"` // must be in the range [0, options.length) from the PollCreate + VoteCount *uint32 `protobuf:"varint,4,opt,name=voteCount" json:"voteCount,omitempty"` // increment this by 1 each time you vote on a given poll unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -5645,58 +5331,6 @@ func (x *DataMessage_UnpinMessage) GetTargetSentTimestamp() uint64 { return 0 } -type DataMessage_AdminDelete struct { - state protoimpl.MessageState `protogen:"open.v1"` - TargetAuthorAciBinary []byte `protobuf:"bytes,1,opt,name=targetAuthorAciBinary" json:"targetAuthorAciBinary,omitempty"` // 16-byte UUID - TargetSentTimestamp *uint64 `protobuf:"varint,2,opt,name=targetSentTimestamp" json:"targetSentTimestamp,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DataMessage_AdminDelete) Reset() { - *x = DataMessage_AdminDelete{} - mi := &file_SignalService_proto_msgTypes[42] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DataMessage_AdminDelete) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DataMessage_AdminDelete) ProtoMessage() {} - -func (x *DataMessage_AdminDelete) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[42] - 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_AdminDelete.ProtoReflect.Descriptor instead. -func (*DataMessage_AdminDelete) Descriptor() ([]byte, []int) { - return file_SignalService_proto_rawDescGZIP(), []int{3, 14} -} - -func (x *DataMessage_AdminDelete) GetTargetAuthorAciBinary() []byte { - if x != nil { - return x.TargetAuthorAciBinary - } - return nil -} - -func (x *DataMessage_AdminDelete) GetTargetSentTimestamp() uint64 { - if x != nil && x.TargetSentTimestamp != nil { - return *x.TargetSentTimestamp - } - return 0 -} - type DataMessage_Payment_Amount struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Amount: @@ -5709,7 +5343,7 @@ type DataMessage_Payment_Amount struct { func (x *DataMessage_Payment_Amount) Reset() { *x = DataMessage_Payment_Amount{} - mi := &file_SignalService_proto_msgTypes[43] + mi := &file_SignalService_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5721,7 +5355,7 @@ func (x *DataMessage_Payment_Amount) String() string { func (*DataMessage_Payment_Amount) ProtoMessage() {} func (x *DataMessage_Payment_Amount) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[43] + mi := &file_SignalService_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5777,7 +5411,7 @@ type DataMessage_Payment_Notification struct { func (x *DataMessage_Payment_Notification) Reset() { *x = DataMessage_Payment_Notification{} - mi := &file_SignalService_proto_msgTypes[44] + mi := &file_SignalService_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5789,7 +5423,7 @@ func (x *DataMessage_Payment_Notification) String() string { func (*DataMessage_Payment_Notification) ProtoMessage() {} func (x *DataMessage_Payment_Notification) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[44] + mi := &file_SignalService_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5848,7 +5482,7 @@ type DataMessage_Payment_Activation struct { func (x *DataMessage_Payment_Activation) Reset() { *x = DataMessage_Payment_Activation{} - mi := &file_SignalService_proto_msgTypes[45] + mi := &file_SignalService_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5860,7 +5494,7 @@ func (x *DataMessage_Payment_Activation) String() string { func (*DataMessage_Payment_Activation) ProtoMessage() {} func (x *DataMessage_Payment_Activation) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[45] + mi := &file_SignalService_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5892,7 +5526,7 @@ type DataMessage_Payment_Amount_MobileCoin struct { func (x *DataMessage_Payment_Amount_MobileCoin) Reset() { *x = DataMessage_Payment_Amount_MobileCoin{} - mi := &file_SignalService_proto_msgTypes[46] + mi := &file_SignalService_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5904,7 +5538,7 @@ func (x *DataMessage_Payment_Amount_MobileCoin) String() string { func (*DataMessage_Payment_Amount_MobileCoin) ProtoMessage() {} func (x *DataMessage_Payment_Amount_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[46] + mi := &file_SignalService_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5936,7 +5570,7 @@ type DataMessage_Payment_Notification_MobileCoin struct { func (x *DataMessage_Payment_Notification_MobileCoin) Reset() { *x = DataMessage_Payment_Notification_MobileCoin{} - mi := &file_SignalService_proto_msgTypes[47] + mi := &file_SignalService_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5948,7 +5582,7 @@ func (x *DataMessage_Payment_Notification_MobileCoin) String() string { func (*DataMessage_Payment_Notification_MobileCoin) ProtoMessage() {} func (x *DataMessage_Payment_Notification_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[47] + mi := &file_SignalService_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5982,7 +5616,7 @@ type DataMessage_Quote_QuotedAttachment struct { func (x *DataMessage_Quote_QuotedAttachment) Reset() { *x = DataMessage_Quote_QuotedAttachment{} - mi := &file_SignalService_proto_msgTypes[48] + mi := &file_SignalService_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5994,7 +5628,7 @@ func (x *DataMessage_Quote_QuotedAttachment) String() string { func (*DataMessage_Quote_QuotedAttachment) ProtoMessage() {} func (x *DataMessage_Quote_QuotedAttachment) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[48] + mi := &file_SignalService_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6045,7 +5679,7 @@ type DataMessage_Contact_Name struct { func (x *DataMessage_Contact_Name) Reset() { *x = DataMessage_Contact_Name{} - mi := &file_SignalService_proto_msgTypes[49] + mi := &file_SignalService_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6057,7 +5691,7 @@ func (x *DataMessage_Contact_Name) String() string { func (*DataMessage_Contact_Name) ProtoMessage() {} func (x *DataMessage_Contact_Name) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[49] + mi := &file_SignalService_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6126,7 +5760,7 @@ type DataMessage_Contact_Phone struct { func (x *DataMessage_Contact_Phone) Reset() { *x = DataMessage_Contact_Phone{} - mi := &file_SignalService_proto_msgTypes[50] + mi := &file_SignalService_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6138,7 +5772,7 @@ func (x *DataMessage_Contact_Phone) String() string { func (*DataMessage_Contact_Phone) ProtoMessage() {} func (x *DataMessage_Contact_Phone) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[50] + mi := &file_SignalService_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6186,7 +5820,7 @@ type DataMessage_Contact_Email struct { func (x *DataMessage_Contact_Email) Reset() { *x = DataMessage_Contact_Email{} - mi := &file_SignalService_proto_msgTypes[51] + mi := &file_SignalService_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6198,7 +5832,7 @@ func (x *DataMessage_Contact_Email) String() string { func (*DataMessage_Contact_Email) ProtoMessage() {} func (x *DataMessage_Contact_Email) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[51] + mi := &file_SignalService_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6252,7 +5886,7 @@ type DataMessage_Contact_PostalAddress struct { func (x *DataMessage_Contact_PostalAddress) Reset() { *x = DataMessage_Contact_PostalAddress{} - mi := &file_SignalService_proto_msgTypes[52] + mi := &file_SignalService_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6264,7 +5898,7 @@ func (x *DataMessage_Contact_PostalAddress) String() string { func (*DataMessage_Contact_PostalAddress) ProtoMessage() {} func (x *DataMessage_Contact_PostalAddress) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[52] + mi := &file_SignalService_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6353,7 +5987,7 @@ type DataMessage_Contact_Avatar struct { func (x *DataMessage_Contact_Avatar) Reset() { *x = DataMessage_Contact_Avatar{} - mi := &file_SignalService_proto_msgTypes[53] + mi := &file_SignalService_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6365,7 +5999,7 @@ func (x *DataMessage_Contact_Avatar) String() string { func (*DataMessage_Contact_Avatar) ProtoMessage() {} func (x *DataMessage_Contact_Avatar) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[53] + mi := &file_SignalService_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6408,7 +6042,7 @@ type TextAttachment_Gradient struct { func (x *TextAttachment_Gradient) Reset() { *x = TextAttachment_Gradient{} - mi := &file_SignalService_proto_msgTypes[54] + mi := &file_SignalService_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6420,7 +6054,7 @@ func (x *TextAttachment_Gradient) String() string { func (*TextAttachment_Gradient) ProtoMessage() {} func (x *TextAttachment_Gradient) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[54] + mi := &file_SignalService_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6495,7 +6129,7 @@ const ( func (x *SyncMessage_Sent) Reset() { *x = SyncMessage_Sent{} - mi := &file_SignalService_proto_msgTypes[55] + mi := &file_SignalService_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6507,7 +6141,7 @@ func (x *SyncMessage_Sent) String() string { func (*SyncMessage_Sent) ProtoMessage() {} func (x *SyncMessage_Sent) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[55] + mi := &file_SignalService_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6615,7 +6249,7 @@ const ( func (x *SyncMessage_Contacts) Reset() { *x = SyncMessage_Contacts{} - mi := &file_SignalService_proto_msgTypes[56] + mi := &file_SignalService_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6627,7 +6261,7 @@ func (x *SyncMessage_Contacts) String() string { func (*SyncMessage_Contacts) ProtoMessage() {} func (x *SyncMessage_Contacts) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[56] + mi := &file_SignalService_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6669,7 +6303,7 @@ type SyncMessage_Blocked struct { func (x *SyncMessage_Blocked) Reset() { *x = SyncMessage_Blocked{} - mi := &file_SignalService_proto_msgTypes[57] + mi := &file_SignalService_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6681,7 +6315,7 @@ func (x *SyncMessage_Blocked) String() string { func (*SyncMessage_Blocked) ProtoMessage() {} func (x *SyncMessage_Blocked) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[57] + mi := &file_SignalService_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6734,7 +6368,7 @@ type SyncMessage_Request struct { func (x *SyncMessage_Request) Reset() { *x = SyncMessage_Request{} - mi := &file_SignalService_proto_msgTypes[58] + mi := &file_SignalService_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6746,7 +6380,7 @@ func (x *SyncMessage_Request) String() string { func (*SyncMessage_Request) ProtoMessage() {} func (x *SyncMessage_Request) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[58] + mi := &file_SignalService_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6780,7 +6414,7 @@ type SyncMessage_Read struct { func (x *SyncMessage_Read) Reset() { *x = SyncMessage_Read{} - mi := &file_SignalService_proto_msgTypes[59] + mi := &file_SignalService_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6792,7 +6426,7 @@ func (x *SyncMessage_Read) String() string { func (*SyncMessage_Read) ProtoMessage() {} func (x *SyncMessage_Read) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[59] + mi := &file_SignalService_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6840,7 +6474,7 @@ type SyncMessage_Viewed struct { func (x *SyncMessage_Viewed) Reset() { *x = SyncMessage_Viewed{} - mi := &file_SignalService_proto_msgTypes[60] + mi := &file_SignalService_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6852,7 +6486,7 @@ func (x *SyncMessage_Viewed) String() string { func (*SyncMessage_Viewed) ProtoMessage() {} func (x *SyncMessage_Viewed) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[60] + mi := &file_SignalService_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6894,6 +6528,7 @@ type SyncMessage_Configuration struct { ReadReceipts *bool `protobuf:"varint,1,opt,name=readReceipts" json:"readReceipts,omitempty"` UnidentifiedDeliveryIndicators *bool `protobuf:"varint,2,opt,name=unidentifiedDeliveryIndicators" json:"unidentifiedDeliveryIndicators,omitempty"` TypingIndicators *bool `protobuf:"varint,3,opt,name=typingIndicators" json:"typingIndicators,omitempty"` + ProvisioningVersion *uint32 `protobuf:"varint,5,opt,name=provisioningVersion" json:"provisioningVersion,omitempty"` LinkPreviews *bool `protobuf:"varint,6,opt,name=linkPreviews" json:"linkPreviews,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -6901,7 +6536,7 @@ type SyncMessage_Configuration struct { func (x *SyncMessage_Configuration) Reset() { *x = SyncMessage_Configuration{} - mi := &file_SignalService_proto_msgTypes[61] + mi := &file_SignalService_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6913,7 +6548,7 @@ func (x *SyncMessage_Configuration) String() string { func (*SyncMessage_Configuration) ProtoMessage() {} func (x *SyncMessage_Configuration) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[61] + mi := &file_SignalService_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6950,6 +6585,13 @@ func (x *SyncMessage_Configuration) GetTypingIndicators() bool { return false } +func (x *SyncMessage_Configuration) GetProvisioningVersion() uint32 { + if x != nil && x.ProvisioningVersion != nil { + return *x.ProvisioningVersion + } + return 0 +} + func (x *SyncMessage_Configuration) GetLinkPreviews() bool { if x != nil && x.LinkPreviews != nil { return *x.LinkPreviews @@ -6968,7 +6610,7 @@ type SyncMessage_StickerPackOperation struct { func (x *SyncMessage_StickerPackOperation) Reset() { *x = SyncMessage_StickerPackOperation{} - mi := &file_SignalService_proto_msgTypes[62] + mi := &file_SignalService_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6980,7 +6622,7 @@ func (x *SyncMessage_StickerPackOperation) String() string { func (*SyncMessage_StickerPackOperation) ProtoMessage() {} func (x *SyncMessage_StickerPackOperation) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[62] + mi := &file_SignalService_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7028,7 +6670,7 @@ type SyncMessage_ViewOnceOpen struct { func (x *SyncMessage_ViewOnceOpen) Reset() { *x = SyncMessage_ViewOnceOpen{} - mi := &file_SignalService_proto_msgTypes[63] + mi := &file_SignalService_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7040,7 +6682,7 @@ func (x *SyncMessage_ViewOnceOpen) String() string { func (*SyncMessage_ViewOnceOpen) ProtoMessage() {} func (x *SyncMessage_ViewOnceOpen) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[63] + mi := &file_SignalService_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7086,7 +6728,7 @@ type SyncMessage_FetchLatest struct { func (x *SyncMessage_FetchLatest) Reset() { *x = SyncMessage_FetchLatest{} - mi := &file_SignalService_proto_msgTypes[64] + mi := &file_SignalService_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7098,7 +6740,7 @@ func (x *SyncMessage_FetchLatest) String() string { func (*SyncMessage_FetchLatest) ProtoMessage() {} func (x *SyncMessage_FetchLatest) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[64] + mi := &file_SignalService_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7123,6 +6765,7 @@ func (x *SyncMessage_FetchLatest) GetType() SyncMessage_FetchLatest_Type { type SyncMessage_Keys struct { state protoimpl.MessageState `protogen:"open.v1"` + Master []byte `protobuf:"bytes,2,opt,name=master" json:"master,omitempty"` // deprecated: this field will be removed in a future release. AccountEntropyPool *string `protobuf:"bytes,3,opt,name=accountEntropyPool" json:"accountEntropyPool,omitempty"` MediaRootBackupKey []byte `protobuf:"bytes,4,opt,name=mediaRootBackupKey" json:"mediaRootBackupKey,omitempty"` unknownFields protoimpl.UnknownFields @@ -7131,7 +6774,7 @@ type SyncMessage_Keys struct { func (x *SyncMessage_Keys) Reset() { *x = SyncMessage_Keys{} - mi := &file_SignalService_proto_msgTypes[65] + mi := &file_SignalService_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7143,7 +6786,7 @@ func (x *SyncMessage_Keys) String() string { func (*SyncMessage_Keys) ProtoMessage() {} func (x *SyncMessage_Keys) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[65] + mi := &file_SignalService_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7159,6 +6802,13 @@ func (*SyncMessage_Keys) Descriptor() ([]byte, []int) { return file_SignalService_proto_rawDescGZIP(), []int{11, 10} } +func (x *SyncMessage_Keys) GetMaster() []byte { + if x != nil { + return x.Master + } + return nil +} + func (x *SyncMessage_Keys) GetAccountEntropyPool() string { if x != nil && x.AccountEntropyPool != nil { return *x.AccountEntropyPool @@ -7183,7 +6833,7 @@ type SyncMessage_PniIdentity struct { func (x *SyncMessage_PniIdentity) Reset() { *x = SyncMessage_PniIdentity{} - mi := &file_SignalService_proto_msgTypes[66] + mi := &file_SignalService_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7195,7 +6845,7 @@ func (x *SyncMessage_PniIdentity) String() string { func (*SyncMessage_PniIdentity) ProtoMessage() {} func (x *SyncMessage_PniIdentity) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[66] + mi := &file_SignalService_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7237,7 +6887,7 @@ type SyncMessage_MessageRequestResponse struct { func (x *SyncMessage_MessageRequestResponse) Reset() { *x = SyncMessage_MessageRequestResponse{} - mi := &file_SignalService_proto_msgTypes[67] + mi := &file_SignalService_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7249,7 +6899,7 @@ func (x *SyncMessage_MessageRequestResponse) String() string { func (*SyncMessage_MessageRequestResponse) ProtoMessage() {} func (x *SyncMessage_MessageRequestResponse) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[67] + mi := &file_SignalService_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7307,7 +6957,7 @@ type SyncMessage_OutgoingPayment struct { func (x *SyncMessage_OutgoingPayment) Reset() { *x = SyncMessage_OutgoingPayment{} - mi := &file_SignalService_proto_msgTypes[68] + mi := &file_SignalService_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7319,7 +6969,7 @@ func (x *SyncMessage_OutgoingPayment) String() string { func (*SyncMessage_OutgoingPayment) ProtoMessage() {} func (x *SyncMessage_OutgoingPayment) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[68] + mi := &file_SignalService_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7389,7 +7039,7 @@ type SyncMessage_PniChangeNumber struct { func (x *SyncMessage_PniChangeNumber) Reset() { *x = SyncMessage_PniChangeNumber{} - mi := &file_SignalService_proto_msgTypes[69] + mi := &file_SignalService_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7401,7 +7051,7 @@ func (x *SyncMessage_PniChangeNumber) String() string { func (*SyncMessage_PniChangeNumber) ProtoMessage() {} func (x *SyncMessage_PniChangeNumber) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[69] + mi := &file_SignalService_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7471,7 +7121,7 @@ type SyncMessage_CallEvent struct { func (x *SyncMessage_CallEvent) Reset() { *x = SyncMessage_CallEvent{} - mi := &file_SignalService_proto_msgTypes[70] + mi := &file_SignalService_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7483,7 +7133,7 @@ func (x *SyncMessage_CallEvent) String() string { func (*SyncMessage_CallEvent) ProtoMessage() {} func (x *SyncMessage_CallEvent) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[70] + mi := &file_SignalService_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7546,13 +7196,14 @@ type SyncMessage_CallLinkUpdate struct { RootKey []byte `protobuf:"bytes,1,opt,name=rootKey" json:"rootKey,omitempty"` AdminPasskey []byte `protobuf:"bytes,2,opt,name=adminPasskey" json:"adminPasskey,omitempty"` Type *SyncMessage_CallLinkUpdate_Type `protobuf:"varint,3,opt,name=type,enum=signalservice.SyncMessage_CallLinkUpdate_Type" json:"type,omitempty"` // defaults to UPDATE + Epoch []byte `protobuf:"bytes,4,opt,name=epoch" json:"epoch,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SyncMessage_CallLinkUpdate) Reset() { *x = SyncMessage_CallLinkUpdate{} - mi := &file_SignalService_proto_msgTypes[71] + mi := &file_SignalService_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7564,7 +7215,7 @@ func (x *SyncMessage_CallLinkUpdate) String() string { func (*SyncMessage_CallLinkUpdate) ProtoMessage() {} func (x *SyncMessage_CallLinkUpdate) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[71] + mi := &file_SignalService_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7601,6 +7252,13 @@ func (x *SyncMessage_CallLinkUpdate) GetType() SyncMessage_CallLinkUpdate_Type { return SyncMessage_CallLinkUpdate_UPDATE } +func (x *SyncMessage_CallLinkUpdate) GetEpoch() []byte { + if x != nil { + return x.Epoch + } + return nil +} + type SyncMessage_CallLogEvent struct { state protoimpl.MessageState `protogen:"open.v1"` Type *SyncMessage_CallLogEvent_Type `protobuf:"varint,1,opt,name=type,enum=signalservice.SyncMessage_CallLogEvent_Type" json:"type,omitempty"` @@ -7618,7 +7276,7 @@ type SyncMessage_CallLogEvent struct { func (x *SyncMessage_CallLogEvent) Reset() { *x = SyncMessage_CallLogEvent{} - mi := &file_SignalService_proto_msgTypes[72] + mi := &file_SignalService_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7630,7 +7288,7 @@ func (x *SyncMessage_CallLogEvent) String() string { func (*SyncMessage_CallLogEvent) ProtoMessage() {} func (x *SyncMessage_CallLogEvent) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[72] + mi := &file_SignalService_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7686,7 +7344,7 @@ type SyncMessage_DeleteForMe struct { func (x *SyncMessage_DeleteForMe) Reset() { *x = SyncMessage_DeleteForMe{} - mi := &file_SignalService_proto_msgTypes[73] + mi := &file_SignalService_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7698,7 +7356,7 @@ func (x *SyncMessage_DeleteForMe) String() string { func (*SyncMessage_DeleteForMe) ProtoMessage() {} func (x *SyncMessage_DeleteForMe) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[73] + mi := &file_SignalService_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7751,7 +7409,7 @@ type SyncMessage_DeviceNameChange struct { func (x *SyncMessage_DeviceNameChange) Reset() { *x = SyncMessage_DeviceNameChange{} - mi := &file_SignalService_proto_msgTypes[74] + mi := &file_SignalService_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7763,7 +7421,7 @@ func (x *SyncMessage_DeviceNameChange) String() string { func (*SyncMessage_DeviceNameChange) ProtoMessage() {} func (x *SyncMessage_DeviceNameChange) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[74] + mi := &file_SignalService_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7796,7 +7454,7 @@ type SyncMessage_AttachmentBackfillRequest struct { func (x *SyncMessage_AttachmentBackfillRequest) Reset() { *x = SyncMessage_AttachmentBackfillRequest{} - mi := &file_SignalService_proto_msgTypes[75] + mi := &file_SignalService_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7808,7 +7466,7 @@ func (x *SyncMessage_AttachmentBackfillRequest) String() string { func (*SyncMessage_AttachmentBackfillRequest) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillRequest) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[75] + mi := &file_SignalService_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7853,7 +7511,7 @@ type SyncMessage_AttachmentBackfillResponse struct { func (x *SyncMessage_AttachmentBackfillResponse) Reset() { *x = SyncMessage_AttachmentBackfillResponse{} - mi := &file_SignalService_proto_msgTypes[76] + mi := &file_SignalService_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7865,7 +7523,7 @@ func (x *SyncMessage_AttachmentBackfillResponse) String() string { func (*SyncMessage_AttachmentBackfillResponse) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[76] + mi := &file_SignalService_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7938,42 +7596,6 @@ func (*SyncMessage_AttachmentBackfillResponse_Attachments) isSyncMessage_Attachm func (*SyncMessage_AttachmentBackfillResponse_Error_) isSyncMessage_AttachmentBackfillResponse_Data() { } -type SyncMessage_UsernameChange struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SyncMessage_UsernameChange) Reset() { - *x = SyncMessage_UsernameChange{} - mi := &file_SignalService_proto_msgTypes[77] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SyncMessage_UsernameChange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SyncMessage_UsernameChange) ProtoMessage() {} - -func (x *SyncMessage_UsernameChange) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[77] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SyncMessage_UsernameChange.ProtoReflect.Descriptor instead. -func (*SyncMessage_UsernameChange) Descriptor() ([]byte, []int) { - return file_SignalService_proto_rawDescGZIP(), []int{11, 22} -} - type SyncMessage_Sent_UnidentifiedDeliveryStatus struct { state protoimpl.MessageState `protogen:"open.v1"` DestinationServiceId *string `protobuf:"bytes,3,opt,name=destinationServiceId" json:"destinationServiceId,omitempty"` @@ -7986,7 +7608,7 @@ type SyncMessage_Sent_UnidentifiedDeliveryStatus struct { func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) Reset() { *x = SyncMessage_Sent_UnidentifiedDeliveryStatus{} - mi := &file_SignalService_proto_msgTypes[78] + mi := &file_SignalService_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7998,7 +7620,7 @@ func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) String() string { func (*SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoMessage() {} func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[78] + mi := &file_SignalService_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8054,7 +7676,7 @@ type SyncMessage_Sent_StoryMessageRecipient struct { func (x *SyncMessage_Sent_StoryMessageRecipient) Reset() { *x = SyncMessage_Sent_StoryMessageRecipient{} - mi := &file_SignalService_proto_msgTypes[79] + mi := &file_SignalService_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8066,7 +7688,7 @@ func (x *SyncMessage_Sent_StoryMessageRecipient) String() string { func (*SyncMessage_Sent_StoryMessageRecipient) ProtoMessage() {} func (x *SyncMessage_Sent_StoryMessageRecipient) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[79] + mi := &file_SignalService_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8126,7 +7748,7 @@ type SyncMessage_OutgoingPayment_MobileCoin struct { func (x *SyncMessage_OutgoingPayment_MobileCoin) Reset() { *x = SyncMessage_OutgoingPayment_MobileCoin{} - mi := &file_SignalService_proto_msgTypes[80] + mi := &file_SignalService_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8138,7 +7760,7 @@ func (x *SyncMessage_OutgoingPayment_MobileCoin) String() string { func (*SyncMessage_OutgoingPayment_MobileCoin) ProtoMessage() {} func (x *SyncMessage_OutgoingPayment_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[80] + mi := &file_SignalService_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8220,7 +7842,7 @@ type SyncMessage_DeleteForMe_MessageDeletes struct { func (x *SyncMessage_DeleteForMe_MessageDeletes) Reset() { *x = SyncMessage_DeleteForMe_MessageDeletes{} - mi := &file_SignalService_proto_msgTypes[81] + mi := &file_SignalService_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8232,7 +7854,7 @@ func (x *SyncMessage_DeleteForMe_MessageDeletes) String() string { func (*SyncMessage_DeleteForMe_MessageDeletes) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_MessageDeletes) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[81] + mi := &file_SignalService_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8278,7 +7900,7 @@ type SyncMessage_DeleteForMe_AttachmentDelete struct { func (x *SyncMessage_DeleteForMe_AttachmentDelete) Reset() { *x = SyncMessage_DeleteForMe_AttachmentDelete{} - mi := &file_SignalService_proto_msgTypes[82] + mi := &file_SignalService_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8290,7 +7912,7 @@ func (x *SyncMessage_DeleteForMe_AttachmentDelete) String() string { func (*SyncMessage_DeleteForMe_AttachmentDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_AttachmentDelete) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[82] + mi := &file_SignalService_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8353,7 +7975,7 @@ type SyncMessage_DeleteForMe_ConversationDelete struct { func (x *SyncMessage_DeleteForMe_ConversationDelete) Reset() { *x = SyncMessage_DeleteForMe_ConversationDelete{} - mi := &file_SignalService_proto_msgTypes[83] + mi := &file_SignalService_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8365,7 +7987,7 @@ func (x *SyncMessage_DeleteForMe_ConversationDelete) String() string { func (*SyncMessage_DeleteForMe_ConversationDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_ConversationDelete) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[83] + mi := &file_SignalService_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8418,7 +8040,7 @@ type SyncMessage_DeleteForMe_LocalOnlyConversationDelete struct { func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) Reset() { *x = SyncMessage_DeleteForMe_LocalOnlyConversationDelete{} - mi := &file_SignalService_proto_msgTypes[84] + mi := &file_SignalService_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8430,7 +8052,7 @@ func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) String() string { func (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoMessage() {} func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[84] + mi := &file_SignalService_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8466,7 +8088,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentData struct { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) Reset() { *x = SyncMessage_AttachmentBackfillResponse_AttachmentData{} - mi := &file_SignalService_proto_msgTypes[85] + mi := &file_SignalService_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8478,7 +8100,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) String() string func (*SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[85] + mi := &file_SignalService_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8547,7 +8169,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentDataList struct { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) Reset() { *x = SyncMessage_AttachmentBackfillResponse_AttachmentDataList{} - mi := &file_SignalService_proto_msgTypes[86] + mi := &file_SignalService_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8559,7 +8181,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) String() str func (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoMessage() {} func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[86] + mi := &file_SignalService_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8599,7 +8221,7 @@ type ContactDetails_Avatar struct { func (x *ContactDetails_Avatar) Reset() { *x = ContactDetails_Avatar{} - mi := &file_SignalService_proto_msgTypes[87] + mi := &file_SignalService_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8611,7 +8233,7 @@ func (x *ContactDetails_Avatar) String() string { func (*ContactDetails_Avatar) ProtoMessage() {} func (x *ContactDetails_Avatar) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[87] + mi := &file_SignalService_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8651,7 +8273,7 @@ type PaymentAddress_MobileCoin struct { func (x *PaymentAddress_MobileCoin) Reset() { *x = PaymentAddress_MobileCoin{} - mi := &file_SignalService_proto_msgTypes[88] + mi := &file_SignalService_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8663,7 +8285,7 @@ func (x *PaymentAddress_MobileCoin) String() string { func (*PaymentAddress_MobileCoin) ProtoMessage() {} func (x *PaymentAddress_MobileCoin) ProtoReflect() protoreflect.Message { - mi := &file_SignalService_proto_msgTypes[88] + mi := &file_SignalService_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8697,13 +8319,13 @@ var File_SignalService_proto protoreflect.FileDescriptor const file_SignalService_proto_rawDesc = "" + "\n" + - "\x13SignalService.proto\x12\rsignalservice\"\x8c\a\n" + + "\x13SignalService.proto\x12\rsignalservice\"\xf5\x06\n" + "\bEnvelope\x120\n" + "\x04type\x18\x01 \x01(\x0e2\x1c.signalservice.Envelope.TypeR\x04type\x12(\n" + - "\x0fsourceServiceId\x18\v \x01(\tR\x0fsourceServiceId\x12&\n" + - "\x0esourceDeviceId\x18\a \x01(\rR\x0esourceDeviceId\x122\n" + - "\x14destinationServiceId\x18\r \x01(\tR\x14destinationServiceId\x12(\n" + - "\x0fclientTimestamp\x18\x05 \x01(\x04R\x0fclientTimestamp\x12\x18\n" + + "\x0fsourceServiceId\x18\v \x01(\tR\x0fsourceServiceId\x12\"\n" + + "\fsourceDevice\x18\a \x01(\rR\fsourceDevice\x122\n" + + "\x14destinationServiceId\x18\r \x01(\tR\x14destinationServiceId\x12\x1c\n" + + "\ttimestamp\x18\x05 \x01(\x04R\ttimestamp\x12\x18\n" + "\acontent\x18\b \x01(\fR\acontent\x12\x1e\n" + "\n" + "serverGuid\x18\t \x01(\tR\n" + @@ -8720,28 +8342,29 @@ const file_SignalService_proto_rawDesc = "" + "\x15sourceServiceIdBinary\x18\x13 \x01(\fR\x15sourceServiceIdBinary\x12>\n" + "\x1adestinationServiceIdBinary\x18\x14 \x01(\fR\x1adestinationServiceIdBinary\x12*\n" + "\x10serverGuidBinary\x18\x15 \x01(\fR\x10serverGuidBinary\x12*\n" + - "\x10updatedPniBinary\x18\x16 \x01(\fR\x10updatedPniBinary\"\xb5\x01\n" + + "\x10updatedPniBinary\x18\x16 \x01(\fR\x10updatedPniBinary\"\xae\x01\n" + "\x04Type\x12\v\n" + - "\aUNKNOWN\x10\x00\x12\x12\n" + - "\x0eDOUBLE_RATCHET\x10\x01\x12\x12\n" + - "\x0ePREKEY_MESSAGE\x10\x03\x12\x1b\n" + + "\aUNKNOWN\x10\x00\x12\x0e\n" + + "\n" + + "CIPHERTEXT\x10\x01\x12\x11\n" + + "\rPREKEY_BUNDLE\x10\x03\x12\x1b\n" + "\x17SERVER_DELIVERY_RECEIPT\x10\x05\x12\x17\n" + "\x13UNIDENTIFIED_SENDER\x10\x06\x12\x15\n" + - "\x11PLAINTEXT_CONTENT\x10\b\"\x04\b\x02\x10\x02\"\x04\b\a\x10\a*\fKEY_EXCHANGE*\x11SENDERKEY_MESSAGEJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\x06\x10\aJ\x04\b\x12\x10\x13\"\xfa\x05\n" + - "\aContent\x12>\n" + - "\vdataMessage\x18\x01 \x01(\v2\x1a.signalservice.DataMessageH\x00R\vdataMessage\x12>\n" + - "\vsyncMessage\x18\x02 \x01(\v2\x1a.signalservice.SyncMessageH\x00R\vsyncMessage\x12>\n" + - "\vcallMessage\x18\x03 \x01(\v2\x1a.signalservice.CallMessageH\x00R\vcallMessage\x12>\n" + - "\vnullMessage\x18\x04 \x01(\v2\x1a.signalservice.NullMessageH\x00R\vnullMessage\x12G\n" + - "\x0ereceiptMessage\x18\x05 \x01(\v2\x1d.signalservice.ReceiptMessageH\x00R\x0ereceiptMessage\x12D\n" + - "\rtypingMessage\x18\x06 \x01(\v2\x1c.signalservice.TypingMessageH\x00R\rtypingMessage\x128\n" + - "\x16decryptionErrorMessage\x18\b \x01(\fH\x00R\x16decryptionErrorMessage\x12A\n" + - "\fstoryMessage\x18\t \x01(\v2\x1b.signalservice.StoryMessageH\x00R\fstoryMessage\x12>\n" + - "\veditMessage\x18\v \x01(\v2\x1a.signalservice.EditMessageH\x00R\veditMessage\x12B\n" + - "\x1csenderKeyDistributionMessage\x18\a \x01(\fR\x1csenderKeyDistributionMessage\x12T\n" + + "\x11SENDERKEY_MESSAGE\x10\a\x12\x15\n" + + "\x11PLAINTEXT_CONTENT\x10\b\"\x04\b\x02\x10\x02*\fKEY_EXCHANGEJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\x06\x10\aJ\x04\b\x12\x10\x13\"\xdd\x05\n" + + "\aContent\x12<\n" + + "\vdataMessage\x18\x01 \x01(\v2\x1a.signalservice.DataMessageR\vdataMessage\x12<\n" + + "\vsyncMessage\x18\x02 \x01(\v2\x1a.signalservice.SyncMessageR\vsyncMessage\x12<\n" + + "\vcallMessage\x18\x03 \x01(\v2\x1a.signalservice.CallMessageR\vcallMessage\x12<\n" + + "\vnullMessage\x18\x04 \x01(\v2\x1a.signalservice.NullMessageR\vnullMessage\x12E\n" + + "\x0ereceiptMessage\x18\x05 \x01(\v2\x1d.signalservice.ReceiptMessageR\x0ereceiptMessage\x12B\n" + + "\rtypingMessage\x18\x06 \x01(\v2\x1c.signalservice.TypingMessageR\rtypingMessage\x12B\n" + + "\x1csenderKeyDistributionMessage\x18\a \x01(\fR\x1csenderKeyDistributionMessage\x126\n" + + "\x16decryptionErrorMessage\x18\b \x01(\fR\x16decryptionErrorMessage\x12?\n" + + "\fstoryMessage\x18\t \x01(\v2\x1b.signalservice.StoryMessageR\fstoryMessage\x12T\n" + "\x13pniSignatureMessage\x18\n" + - " \x01(\v2\".signalservice.PniSignatureMessageR\x13pniSignatureMessageB\t\n" + - "\acontent\"\xf2\b\n" + + " \x01(\v2\".signalservice.PniSignatureMessageR\x13pniSignatureMessage\x12<\n" + + "\veditMessage\x18\v \x01(\v2\x1a.signalservice.EditMessageR\veditMessage\"\xf2\b\n" + "\vCallMessage\x126\n" + "\x05offer\x18\x01 \x01(\v2 .signalservice.CallMessage.OfferR\x05offer\x129\n" + "\x06answer\x18\x02 \x01(\v2!.signalservice.CallMessage.AnswerR\x06answer\x12B\n" + @@ -8781,7 +8404,7 @@ const file_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\"\x80.\n" + + "\x12HANDLE_IMMEDIATELY\x10\x01J\x04\b\x04\x10\x05J\x04\b\x06\x10\aJ\x04\b\b\x10\t\"\xca,\n" + "\vDataMessage\x12\x12\n" + "\x04body\x18\x01 \x01(\tR\x04body\x12B\n" + "\vattachments\x18\x02 \x03(\v2 .signalservice.AttachmentPointerR\vattachments\x127\n" + @@ -8819,8 +8442,7 @@ const file_SignalService_proto_rawDesc = "" + "\n" + "pinMessage\x18\x1b \x01(\v2%.signalservice.DataMessage.PinMessageR\n" + "pinMessage\x12K\n" + - "\funpinMessage\x18\x1c \x01(\v2'.signalservice.DataMessage.UnpinMessageR\funpinMessage\x12H\n" + - "\vadminDelete\x18\x1d \x01(\v2&.signalservice.DataMessage.AdminDeleteR\vadminDelete\x1a\x9a\x05\n" + + "\funpinMessage\x18\x1c \x01(\v2'.signalservice.DataMessage.UnpinMessageR\funpinMessage\x1a\x9a\x05\n" + "\aPayment\x12U\n" + "\fnotification\x18\x01 \x01(\v2/.signalservice.DataMessage.Payment.NotificationH\x00R\fnotification\x12O\n" + "\n" + @@ -8972,14 +8594,12 @@ const file_SignalService_proto_rawDesc = "" + "\vpinDuration\x1av\n" + "\fUnpinMessage\x124\n" + "\x15targetAuthorAciBinary\x18\x01 \x01(\fR\x15targetAuthorAciBinary\x120\n" + - "\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\x1au\n" + - "\vAdminDelete\x124\n" + - "\x15targetAuthorAciBinary\x18\x01 \x01(\fR\x15targetAuthorAciBinary\x120\n" + - "\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\"O\n" + - "\x05Flags\x12\x1b\n" + + "\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\"Z\n" + + "\x05Flags\x12\x0f\n" + + "\vEND_SESSION\x10\x01\x12\x1b\n" + "\x17EXPIRATION_TIMER_UPDATE\x10\x02\x12\x16\n" + "\x12PROFILE_KEY_UPDATE\x10\x04\x12\v\n" + - "\aFORWARD\x10\b\"\x04\b\x01\x10\x01\"\xbb\x01\n" + + "\aFORWARD\x10\b\"\xbb\x01\n" + "\x0fProtocolVersion\x12\v\n" + "\aINITIAL\x10\x00\x12\x12\n" + "\x0eMESSAGE_TIMERS\x10\x01\x12\r\n" + @@ -9063,33 +8683,32 @@ const file_SignalService_proto_rawDesc = "" + "\aDEFAULT\x10\x00\x12\f\n" + "\bVERIFIED\x10\x01\x12\x0e\n" + "\n" + - "UNVERIFIED\x10\x02J\x04\b\x01\x10\x02\"\xd8G\n" + - "\vSyncMessage\x125\n" + - "\x04sent\x18\x01 \x01(\v2\x1f.signalservice.SyncMessage.SentH\x00R\x04sent\x12A\n" + - "\bcontacts\x18\x02 \x01(\v2#.signalservice.SyncMessage.ContactsH\x00R\bcontacts\x12>\n" + - "\arequest\x18\x04 \x01(\v2\".signalservice.SyncMessage.RequestH\x00R\arequest\x12>\n" + - "\ablocked\x18\x06 \x01(\v2\".signalservice.SyncMessage.BlockedH\x00R\ablocked\x125\n" + - "\bverified\x18\a \x01(\v2\x17.signalservice.VerifiedH\x00R\bverified\x12P\n" + - "\rconfiguration\x18\t \x01(\v2(.signalservice.SyncMessage.ConfigurationH\x00R\rconfiguration\x12M\n" + - "\fviewOnceOpen\x18\v \x01(\v2'.signalservice.SyncMessage.ViewOnceOpenH\x00R\fviewOnceOpen\x12J\n" + - "\vfetchLatest\x18\f \x01(\v2&.signalservice.SyncMessage.FetchLatestH\x00R\vfetchLatest\x125\n" + - "\x04keys\x18\r \x01(\v2\x1f.signalservice.SyncMessage.KeysH\x00R\x04keys\x12k\n" + - "\x16messageRequestResponse\x18\x0e \x01(\v21.signalservice.SyncMessage.MessageRequestResponseH\x00R\x16messageRequestResponse\x12V\n" + - "\x0foutgoingPayment\x18\x0f \x01(\v2*.signalservice.SyncMessage.OutgoingPaymentH\x00R\x0foutgoingPayment\x12V\n" + - "\x0fpniChangeNumber\x18\x12 \x01(\v2*.signalservice.SyncMessage.PniChangeNumberH\x00R\x0fpniChangeNumber\x12D\n" + - "\tcallEvent\x18\x13 \x01(\v2$.signalservice.SyncMessage.CallEventH\x00R\tcallEvent\x12S\n" + - "\x0ecallLinkUpdate\x18\x14 \x01(\v2).signalservice.SyncMessage.CallLinkUpdateH\x00R\x0ecallLinkUpdate\x12M\n" + - "\fcallLogEvent\x18\x15 \x01(\v2'.signalservice.SyncMessage.CallLogEventH\x00R\fcallLogEvent\x12J\n" + - "\vdeleteForMe\x18\x16 \x01(\v2&.signalservice.SyncMessage.DeleteForMeH\x00R\vdeleteForMe\x12Y\n" + - "\x10deviceNameChange\x18\x17 \x01(\v2+.signalservice.SyncMessage.DeviceNameChangeH\x00R\x10deviceNameChange\x12t\n" + - "\x19attachmentBackfillRequest\x18\x18 \x01(\v24.signalservice.SyncMessage.AttachmentBackfillRequestH\x00R\x19attachmentBackfillRequest\x12w\n" + - "\x1aattachmentBackfillResponse\x18\x19 \x01(\v25.signalservice.SyncMessage.AttachmentBackfillResponseH\x00R\x1aattachmentBackfillResponse\x12S\n" + - "\x0eusernameChange\x18\x1a \x01(\v2).signalservice.SyncMessage.UsernameChangeH\x00R\x0eusernameChange\x123\n" + - "\x04read\x18\x05 \x03(\v2\x1f.signalservice.SyncMessage.ReadR\x04read\x12c\n" + + "UNVERIFIED\x10\x02J\x04\b\x01\x10\x02\"\x8fG\n" + + "\vSyncMessage\x123\n" + + "\x04sent\x18\x01 \x01(\v2\x1f.signalservice.SyncMessage.SentR\x04sent\x12?\n" + + "\bcontacts\x18\x02 \x01(\v2#.signalservice.SyncMessage.ContactsR\bcontacts\x12<\n" + + "\arequest\x18\x04 \x01(\v2\".signalservice.SyncMessage.RequestR\arequest\x123\n" + + "\x04read\x18\x05 \x03(\v2\x1f.signalservice.SyncMessage.ReadR\x04read\x12<\n" + + "\ablocked\x18\x06 \x01(\v2\".signalservice.SyncMessage.BlockedR\ablocked\x123\n" + + "\bverified\x18\a \x01(\v2\x17.signalservice.VerifiedR\bverified\x12N\n" + + "\rconfiguration\x18\t \x01(\v2(.signalservice.SyncMessage.ConfigurationR\rconfiguration\x12\x18\n" + + "\apadding\x18\b \x01(\fR\apadding\x12c\n" + "\x14stickerPackOperation\x18\n" + - " \x03(\v2/.signalservice.SyncMessage.StickerPackOperationR\x14stickerPackOperation\x129\n" + - "\x06viewed\x18\x10 \x03(\v2!.signalservice.SyncMessage.ViewedR\x06viewed\x12\x18\n" + - "\apadding\x18\b \x01(\fR\apadding\x1a\xbc\t\n" + + " \x03(\v2/.signalservice.SyncMessage.StickerPackOperationR\x14stickerPackOperation\x12K\n" + + "\fviewOnceOpen\x18\v \x01(\v2'.signalservice.SyncMessage.ViewOnceOpenR\fviewOnceOpen\x12H\n" + + "\vfetchLatest\x18\f \x01(\v2&.signalservice.SyncMessage.FetchLatestR\vfetchLatest\x123\n" + + "\x04keys\x18\r \x01(\v2\x1f.signalservice.SyncMessage.KeysR\x04keys\x12i\n" + + "\x16messageRequestResponse\x18\x0e \x01(\v21.signalservice.SyncMessage.MessageRequestResponseR\x16messageRequestResponse\x12T\n" + + "\x0foutgoingPayment\x18\x0f \x01(\v2*.signalservice.SyncMessage.OutgoingPaymentR\x0foutgoingPayment\x129\n" + + "\x06viewed\x18\x10 \x03(\v2!.signalservice.SyncMessage.ViewedR\x06viewed\x12T\n" + + "\x0fpniChangeNumber\x18\x12 \x01(\v2*.signalservice.SyncMessage.PniChangeNumberR\x0fpniChangeNumber\x12B\n" + + "\tcallEvent\x18\x13 \x01(\v2$.signalservice.SyncMessage.CallEventR\tcallEvent\x12Q\n" + + "\x0ecallLinkUpdate\x18\x14 \x01(\v2).signalservice.SyncMessage.CallLinkUpdateR\x0ecallLinkUpdate\x12K\n" + + "\fcallLogEvent\x18\x15 \x01(\v2'.signalservice.SyncMessage.CallLogEventR\fcallLogEvent\x12H\n" + + "\vdeleteForMe\x18\x16 \x01(\v2&.signalservice.SyncMessage.DeleteForMeR\vdeleteForMe\x12W\n" + + "\x10deviceNameChange\x18\x17 \x01(\v2+.signalservice.SyncMessage.DeviceNameChangeR\x10deviceNameChange\x12r\n" + + "\x19attachmentBackfillRequest\x18\x18 \x01(\v24.signalservice.SyncMessage.AttachmentBackfillRequestR\x19attachmentBackfillRequest\x12u\n" + + "\x1aattachmentBackfillResponse\x18\x19 \x01(\v25.signalservice.SyncMessage.AttachmentBackfillResponseR\x1aattachmentBackfillResponse\x1a\xbc\t\n" + "\x04Sent\x12(\n" + "\x0fdestinationE164\x18\x01 \x01(\tR\x0fdestinationE164\x122\n" + "\x14destinationServiceId\x18\a \x01(\tR\x14destinationServiceId\x12\x1c\n" + @@ -9138,12 +8757,13 @@ const file_SignalService_proto_rawDesc = "" + "\x06Viewed\x12\x1c\n" + "\tsenderAci\x18\x03 \x01(\tR\tsenderAci\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x12(\n" + - "\x0fsenderAciBinary\x18\x04 \x01(\fR\x0fsenderAciBinaryJ\x04\b\x01\x10\x02\x1a\xd7\x01\n" + + "\x0fsenderAciBinary\x18\x04 \x01(\fR\x0fsenderAciBinaryJ\x04\b\x01\x10\x02\x1a\x83\x02\n" + "\rConfiguration\x12\"\n" + "\freadReceipts\x18\x01 \x01(\bR\freadReceipts\x12F\n" + "\x1eunidentifiedDeliveryIndicators\x18\x02 \x01(\bR\x1eunidentifiedDeliveryIndicators\x12*\n" + - "\x10typingIndicators\x18\x03 \x01(\bR\x10typingIndicators\x12\"\n" + - "\flinkPreviews\x18\x06 \x01(\bR\flinkPreviewsJ\x04\b\x04\x10\x05J\x04\b\x05\x10\x06\x1a\xb3\x01\n" + + "\x10typingIndicators\x18\x03 \x01(\bR\x10typingIndicators\x120\n" + + "\x13provisioningVersion\x18\x05 \x01(\rR\x13provisioningVersion\x12\"\n" + + "\flinkPreviews\x18\x06 \x01(\bR\flinkPreviewsJ\x04\b\x04\x10\x05\x1a\xb3\x01\n" + "\x14StickerPackOperation\x12\x16\n" + "\x06packId\x18\x01 \x01(\fR\x06packId\x12\x18\n" + "\apackKey\x18\x02 \x01(\fR\apackKey\x12H\n" + @@ -9162,10 +8782,11 @@ const file_SignalService_proto_rawDesc = "" + "\aUNKNOWN\x10\x00\x12\x11\n" + "\rLOCAL_PROFILE\x10\x01\x12\x14\n" + "\x10STORAGE_MANIFEST\x10\x02\x12\x17\n" + - "\x13SUBSCRIPTION_STATUS\x10\x03\x1ar\n" + - "\x04Keys\x12.\n" + + "\x13SUBSCRIPTION_STATUS\x10\x03\x1a\x84\x01\n" + + "\x04Keys\x12\x16\n" + + "\x06master\x18\x02 \x01(\fR\x06master\x12.\n" + "\x12accountEntropyPool\x18\x03 \x01(\tR\x12accountEntropyPool\x12.\n" + - "\x12mediaRootBackupKey\x18\x04 \x01(\fR\x12mediaRootBackupKeyJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03\x1aK\n" + + "\x12mediaRootBackupKey\x18\x04 \x01(\fR\x12mediaRootBackupKeyJ\x04\b\x01\x10\x02\x1aK\n" + "\vPniIdentity\x12\x1c\n" + "\tpublicKey\x18\x01 \x01(\fR\tpublicKey\x12\x1e\n" + "\n" + @@ -9237,14 +8858,15 @@ const file_SignalService_proto_rawDesc = "" + "\fNOT_ACCEPTED\x10\x02\x12\n" + "\n" + "\x06DELETE\x10\x03\x12\f\n" + - "\bOBSERVED\x10\x04\x1a\xb2\x01\n" + + "\bOBSERVED\x10\x04\x1a\xc2\x01\n" + "\x0eCallLinkUpdate\x12\x18\n" + "\arootKey\x18\x01 \x01(\fR\arootKey\x12\"\n" + "\fadminPasskey\x18\x02 \x01(\fR\fadminPasskey\x12B\n" + - "\x04type\x18\x03 \x01(\x0e2..signalservice.SyncMessage.CallLinkUpdate.TypeR\x04type\"\x18\n" + + "\x04type\x18\x03 \x01(\x0e2..signalservice.SyncMessage.CallLinkUpdate.TypeR\x04type\x12\x14\n" + + "\x05epoch\x18\x04 \x01(\fR\x05epoch\"\x18\n" + "\x04Type\x12\n" + "\n" + - "\x06UPDATE\x10\x00\"\x04\b\x01\x10\x01J\x04\b\x04\x10\x05\x1a\x94\x02\n" + + "\x06UPDATE\x10\x00\"\x04\b\x01\x10\x01\x1a\x94\x02\n" + "\fCallLogEvent\x12@\n" + "\x04type\x18\x01 \x01(\x0e2,.signalservice.SyncMessage.CallLogEvent.TypeR\x04type\x12\x1c\n" + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x12&\n" + @@ -9303,9 +8925,7 @@ const file_SignalService_proto_rawDesc = "" + "\blongText\x18\x02 \x01(\v2D.signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataR\blongText\"\x1e\n" + "\x05Error\x12\x15\n" + "\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\"\xe7\x04\n" + + "\x04dataJ\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" + @@ -9421,7 +9041,7 @@ func file_SignalService_proto_rawDescGZIP() []byte { } var file_SignalService_proto_enumTypes = make([]protoimpl.EnumInfo, 28) -var file_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 89) +var file_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 87) var file_SignalService_proto_goTypes = []any{ (Envelope_Type)(0), // 0: signalservice.Envelope.Type (CallMessage_Offer_Type)(0), // 1: signalservice.CallMessage.Offer.Type @@ -9493,53 +9113,51 @@ var file_SignalService_proto_goTypes = []any{ (*DataMessage_PollVote)(nil), // 67: signalservice.DataMessage.PollVote (*DataMessage_PinMessage)(nil), // 68: signalservice.DataMessage.PinMessage (*DataMessage_UnpinMessage)(nil), // 69: signalservice.DataMessage.UnpinMessage - (*DataMessage_AdminDelete)(nil), // 70: signalservice.DataMessage.AdminDelete - (*DataMessage_Payment_Amount)(nil), // 71: signalservice.DataMessage.Payment.Amount - (*DataMessage_Payment_Notification)(nil), // 72: signalservice.DataMessage.Payment.Notification - (*DataMessage_Payment_Activation)(nil), // 73: signalservice.DataMessage.Payment.Activation - (*DataMessage_Payment_Amount_MobileCoin)(nil), // 74: signalservice.DataMessage.Payment.Amount.MobileCoin - (*DataMessage_Payment_Notification_MobileCoin)(nil), // 75: signalservice.DataMessage.Payment.Notification.MobileCoin - (*DataMessage_Quote_QuotedAttachment)(nil), // 76: signalservice.DataMessage.Quote.QuotedAttachment - (*DataMessage_Contact_Name)(nil), // 77: signalservice.DataMessage.Contact.Name - (*DataMessage_Contact_Phone)(nil), // 78: signalservice.DataMessage.Contact.Phone - (*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 - (*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_OutgoingPayment_MobileCoin)(nil), // 108: signalservice.SyncMessage.OutgoingPayment.MobileCoin - (*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 109: signalservice.SyncMessage.DeleteForMe.MessageDeletes - (*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 110: signalservice.SyncMessage.DeleteForMe.AttachmentDelete - (*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 111: signalservice.SyncMessage.DeleteForMe.ConversationDelete - (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 112: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete - (*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 113: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 114: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList - (*ContactDetails_Avatar)(nil), // 115: signalservice.ContactDetails.Avatar - (*PaymentAddress_MobileCoin)(nil), // 116: signalservice.PaymentAddress.MobileCoin + (*DataMessage_Payment_Amount)(nil), // 70: signalservice.DataMessage.Payment.Amount + (*DataMessage_Payment_Notification)(nil), // 71: signalservice.DataMessage.Payment.Notification + (*DataMessage_Payment_Activation)(nil), // 72: signalservice.DataMessage.Payment.Activation + (*DataMessage_Payment_Amount_MobileCoin)(nil), // 73: signalservice.DataMessage.Payment.Amount.MobileCoin + (*DataMessage_Payment_Notification_MobileCoin)(nil), // 74: signalservice.DataMessage.Payment.Notification.MobileCoin + (*DataMessage_Quote_QuotedAttachment)(nil), // 75: signalservice.DataMessage.Quote.QuotedAttachment + (*DataMessage_Contact_Name)(nil), // 76: signalservice.DataMessage.Contact.Name + (*DataMessage_Contact_Phone)(nil), // 77: signalservice.DataMessage.Contact.Phone + (*DataMessage_Contact_Email)(nil), // 78: signalservice.DataMessage.Contact.Email + (*DataMessage_Contact_PostalAddress)(nil), // 79: signalservice.DataMessage.Contact.PostalAddress + (*DataMessage_Contact_Avatar)(nil), // 80: signalservice.DataMessage.Contact.Avatar + (*TextAttachment_Gradient)(nil), // 81: signalservice.TextAttachment.Gradient + (*SyncMessage_Sent)(nil), // 82: signalservice.SyncMessage.Sent + (*SyncMessage_Contacts)(nil), // 83: signalservice.SyncMessage.Contacts + (*SyncMessage_Blocked)(nil), // 84: signalservice.SyncMessage.Blocked + (*SyncMessage_Request)(nil), // 85: signalservice.SyncMessage.Request + (*SyncMessage_Read)(nil), // 86: signalservice.SyncMessage.Read + (*SyncMessage_Viewed)(nil), // 87: signalservice.SyncMessage.Viewed + (*SyncMessage_Configuration)(nil), // 88: signalservice.SyncMessage.Configuration + (*SyncMessage_StickerPackOperation)(nil), // 89: signalservice.SyncMessage.StickerPackOperation + (*SyncMessage_ViewOnceOpen)(nil), // 90: signalservice.SyncMessage.ViewOnceOpen + (*SyncMessage_FetchLatest)(nil), // 91: signalservice.SyncMessage.FetchLatest + (*SyncMessage_Keys)(nil), // 92: signalservice.SyncMessage.Keys + (*SyncMessage_PniIdentity)(nil), // 93: signalservice.SyncMessage.PniIdentity + (*SyncMessage_MessageRequestResponse)(nil), // 94: signalservice.SyncMessage.MessageRequestResponse + (*SyncMessage_OutgoingPayment)(nil), // 95: signalservice.SyncMessage.OutgoingPayment + (*SyncMessage_PniChangeNumber)(nil), // 96: signalservice.SyncMessage.PniChangeNumber + (*SyncMessage_CallEvent)(nil), // 97: signalservice.SyncMessage.CallEvent + (*SyncMessage_CallLinkUpdate)(nil), // 98: signalservice.SyncMessage.CallLinkUpdate + (*SyncMessage_CallLogEvent)(nil), // 99: signalservice.SyncMessage.CallLogEvent + (*SyncMessage_DeleteForMe)(nil), // 100: signalservice.SyncMessage.DeleteForMe + (*SyncMessage_DeviceNameChange)(nil), // 101: signalservice.SyncMessage.DeviceNameChange + (*SyncMessage_AttachmentBackfillRequest)(nil), // 102: signalservice.SyncMessage.AttachmentBackfillRequest + (*SyncMessage_AttachmentBackfillResponse)(nil), // 103: signalservice.SyncMessage.AttachmentBackfillResponse + (*SyncMessage_Sent_UnidentifiedDeliveryStatus)(nil), // 104: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus + (*SyncMessage_Sent_StoryMessageRecipient)(nil), // 105: signalservice.SyncMessage.Sent.StoryMessageRecipient + (*SyncMessage_OutgoingPayment_MobileCoin)(nil), // 106: signalservice.SyncMessage.OutgoingPayment.MobileCoin + (*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 107: signalservice.SyncMessage.DeleteForMe.MessageDeletes + (*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 108: signalservice.SyncMessage.DeleteForMe.AttachmentDelete + (*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 109: signalservice.SyncMessage.DeleteForMe.ConversationDelete + (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 110: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete + (*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 111: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 112: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList + (*ContactDetails_Avatar)(nil), // 113: signalservice.ContactDetails.Avatar + (*PaymentAddress_MobileCoin)(nil), // 114: signalservice.PaymentAddress.MobileCoin } var file_SignalService_proto_depIdxs = []int32{ 0, // 0: signalservice.Envelope.type:type_name -> signalservice.Envelope.Type @@ -9550,8 +9168,8 @@ var file_SignalService_proto_depIdxs = []int32{ 33, // 5: signalservice.Content.receiptMessage:type_name -> signalservice.ReceiptMessage 34, // 6: signalservice.Content.typingMessage:type_name -> signalservice.TypingMessage 35, // 7: signalservice.Content.storyMessage:type_name -> signalservice.StoryMessage - 46, // 8: signalservice.Content.editMessage:type_name -> signalservice.EditMessage - 45, // 9: signalservice.Content.pniSignatureMessage:type_name -> signalservice.PniSignatureMessage + 45, // 8: signalservice.Content.pniSignatureMessage:type_name -> signalservice.PniSignatureMessage + 46, // 9: signalservice.Content.editMessage:type_name -> signalservice.EditMessage 50, // 10: signalservice.CallMessage.offer:type_name -> signalservice.CallMessage.Offer 51, // 11: signalservice.CallMessage.answer:type_name -> signalservice.CallMessage.Answer 52, // 12: signalservice.CallMessage.iceUpdate:type_name -> signalservice.CallMessage.IceUpdate @@ -9576,110 +9194,108 @@ var file_SignalService_proto_depIdxs = []int32{ 67, // 31: signalservice.DataMessage.pollVote:type_name -> signalservice.DataMessage.PollVote 68, // 32: signalservice.DataMessage.pinMessage:type_name -> signalservice.DataMessage.PinMessage 69, // 33: signalservice.DataMessage.unpinMessage:type_name -> signalservice.DataMessage.UnpinMessage - 70, // 34: signalservice.DataMessage.adminDelete:type_name -> signalservice.DataMessage.AdminDelete - 11, // 35: signalservice.ReceiptMessage.type:type_name -> signalservice.ReceiptMessage.Type - 12, // 36: signalservice.TypingMessage.action:type_name -> signalservice.TypingMessage.Action - 41, // 37: signalservice.StoryMessage.group:type_name -> signalservice.GroupContextV2 - 40, // 38: signalservice.StoryMessage.fileAttachment:type_name -> signalservice.AttachmentPointer - 37, // 39: signalservice.StoryMessage.textAttachment:type_name -> signalservice.TextAttachment - 47, // 40: signalservice.StoryMessage.bodyRanges:type_name -> signalservice.BodyRange - 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 - 82, // 44: signalservice.TextAttachment.gradient:type_name -> signalservice.TextAttachment.Gradient - 14, // 45: signalservice.Verified.state:type_name -> signalservice.Verified.State - 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 + 11, // 34: signalservice.ReceiptMessage.type:type_name -> signalservice.ReceiptMessage.Type + 12, // 35: signalservice.TypingMessage.action:type_name -> signalservice.TypingMessage.Action + 41, // 36: signalservice.StoryMessage.group:type_name -> signalservice.GroupContextV2 + 40, // 37: signalservice.StoryMessage.fileAttachment:type_name -> signalservice.AttachmentPointer + 37, // 38: signalservice.StoryMessage.textAttachment:type_name -> signalservice.TextAttachment + 47, // 39: signalservice.StoryMessage.bodyRanges:type_name -> signalservice.BodyRange + 40, // 40: signalservice.Preview.image:type_name -> signalservice.AttachmentPointer + 13, // 41: signalservice.TextAttachment.textStyle:type_name -> signalservice.TextAttachment.Style + 36, // 42: signalservice.TextAttachment.preview:type_name -> signalservice.Preview + 81, // 43: signalservice.TextAttachment.gradient:type_name -> signalservice.TextAttachment.Gradient + 14, // 44: signalservice.Verified.state:type_name -> signalservice.Verified.State + 82, // 45: signalservice.SyncMessage.sent:type_name -> signalservice.SyncMessage.Sent + 83, // 46: signalservice.SyncMessage.contacts:type_name -> signalservice.SyncMessage.Contacts + 85, // 47: signalservice.SyncMessage.request:type_name -> signalservice.SyncMessage.Request + 86, // 48: signalservice.SyncMessage.read:type_name -> signalservice.SyncMessage.Read + 84, // 49: signalservice.SyncMessage.blocked:type_name -> signalservice.SyncMessage.Blocked 38, // 50: signalservice.SyncMessage.verified:type_name -> signalservice.Verified - 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 - 115, // 69: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar - 116, // 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 - 2, // 74: signalservice.CallMessage.Hangup.type:type_name -> signalservice.CallMessage.Hangup.Type - 3, // 75: signalservice.CallMessage.Opaque.urgency:type_name -> signalservice.CallMessage.Opaque.Urgency - 72, // 76: signalservice.DataMessage.Payment.notification:type_name -> signalservice.DataMessage.Payment.Notification - 73, // 77: signalservice.DataMessage.Payment.activation:type_name -> signalservice.DataMessage.Payment.Activation - 76, // 78: signalservice.DataMessage.Quote.attachments:type_name -> signalservice.DataMessage.Quote.QuotedAttachment - 47, // 79: signalservice.DataMessage.Quote.bodyRanges:type_name -> signalservice.BodyRange - 7, // 80: signalservice.DataMessage.Quote.type:type_name -> signalservice.DataMessage.Quote.Type - 77, // 81: signalservice.DataMessage.Contact.name:type_name -> signalservice.DataMessage.Contact.Name - 78, // 82: signalservice.DataMessage.Contact.number:type_name -> signalservice.DataMessage.Contact.Phone - 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 - 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 - 15, // 101: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type - 16, // 102: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type - 17, // 103: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type - 18, // 104: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type - 108, // 105: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin - 19, // 106: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type - 20, // 107: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction - 21, // 108: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event - 22, // 109: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type - 23, // 110: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type - 109, // 111: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes - 111, // 112: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete - 112, // 113: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete - 110, // 114: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete - 48, // 115: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 116: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier - 48, // 117: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 118: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier - 114, // 119: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList - 24, // 120: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error - 49, // 121: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 122: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage - 49, // 123: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 124: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage - 49, // 125: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier - 48, // 126: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage - 48, // 127: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage - 49, // 128: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier - 40, // 129: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer - 25, // 130: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status - 113, // 131: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - 113, // 132: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData - 133, // [133:133] is the sub-list for method output_type - 133, // [133:133] is the sub-list for method input_type - 133, // [133:133] is the sub-list for extension type_name - 133, // [133:133] is the sub-list for extension extendee - 0, // [0:133] is the sub-list for field type_name + 88, // 51: signalservice.SyncMessage.configuration:type_name -> signalservice.SyncMessage.Configuration + 89, // 52: signalservice.SyncMessage.stickerPackOperation:type_name -> signalservice.SyncMessage.StickerPackOperation + 90, // 53: signalservice.SyncMessage.viewOnceOpen:type_name -> signalservice.SyncMessage.ViewOnceOpen + 91, // 54: signalservice.SyncMessage.fetchLatest:type_name -> signalservice.SyncMessage.FetchLatest + 92, // 55: signalservice.SyncMessage.keys:type_name -> signalservice.SyncMessage.Keys + 94, // 56: signalservice.SyncMessage.messageRequestResponse:type_name -> signalservice.SyncMessage.MessageRequestResponse + 95, // 57: signalservice.SyncMessage.outgoingPayment:type_name -> signalservice.SyncMessage.OutgoingPayment + 87, // 58: signalservice.SyncMessage.viewed:type_name -> signalservice.SyncMessage.Viewed + 96, // 59: signalservice.SyncMessage.pniChangeNumber:type_name -> signalservice.SyncMessage.PniChangeNumber + 97, // 60: signalservice.SyncMessage.callEvent:type_name -> signalservice.SyncMessage.CallEvent + 98, // 61: signalservice.SyncMessage.callLinkUpdate:type_name -> signalservice.SyncMessage.CallLinkUpdate + 99, // 62: signalservice.SyncMessage.callLogEvent:type_name -> signalservice.SyncMessage.CallLogEvent + 100, // 63: signalservice.SyncMessage.deleteForMe:type_name -> signalservice.SyncMessage.DeleteForMe + 101, // 64: signalservice.SyncMessage.deviceNameChange:type_name -> signalservice.SyncMessage.DeviceNameChange + 102, // 65: signalservice.SyncMessage.attachmentBackfillRequest:type_name -> signalservice.SyncMessage.AttachmentBackfillRequest + 103, // 66: signalservice.SyncMessage.attachmentBackfillResponse:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse + 113, // 67: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar + 114, // 68: signalservice.PaymentAddress.mobileCoin:type_name -> signalservice.PaymentAddress.MobileCoin + 31, // 69: signalservice.EditMessage.dataMessage:type_name -> signalservice.DataMessage + 27, // 70: signalservice.BodyRange.style:type_name -> signalservice.BodyRange.Style + 1, // 71: signalservice.CallMessage.Offer.type:type_name -> signalservice.CallMessage.Offer.Type + 2, // 72: signalservice.CallMessage.Hangup.type:type_name -> signalservice.CallMessage.Hangup.Type + 3, // 73: signalservice.CallMessage.Opaque.urgency:type_name -> signalservice.CallMessage.Opaque.Urgency + 71, // 74: signalservice.DataMessage.Payment.notification:type_name -> signalservice.DataMessage.Payment.Notification + 72, // 75: signalservice.DataMessage.Payment.activation:type_name -> signalservice.DataMessage.Payment.Activation + 75, // 76: signalservice.DataMessage.Quote.attachments:type_name -> signalservice.DataMessage.Quote.QuotedAttachment + 47, // 77: signalservice.DataMessage.Quote.bodyRanges:type_name -> signalservice.BodyRange + 7, // 78: signalservice.DataMessage.Quote.type:type_name -> signalservice.DataMessage.Quote.Type + 76, // 79: signalservice.DataMessage.Contact.name:type_name -> signalservice.DataMessage.Contact.Name + 77, // 80: signalservice.DataMessage.Contact.number:type_name -> signalservice.DataMessage.Contact.Phone + 78, // 81: signalservice.DataMessage.Contact.email:type_name -> signalservice.DataMessage.Contact.Email + 79, // 82: signalservice.DataMessage.Contact.address:type_name -> signalservice.DataMessage.Contact.PostalAddress + 80, // 83: signalservice.DataMessage.Contact.avatar:type_name -> signalservice.DataMessage.Contact.Avatar + 40, // 84: signalservice.DataMessage.Sticker.data:type_name -> signalservice.AttachmentPointer + 73, // 85: signalservice.DataMessage.Payment.Amount.mobileCoin:type_name -> signalservice.DataMessage.Payment.Amount.MobileCoin + 74, // 86: signalservice.DataMessage.Payment.Notification.mobileCoin:type_name -> signalservice.DataMessage.Payment.Notification.MobileCoin + 6, // 87: signalservice.DataMessage.Payment.Activation.type:type_name -> signalservice.DataMessage.Payment.Activation.Type + 40, // 88: signalservice.DataMessage.Quote.QuotedAttachment.thumbnail:type_name -> signalservice.AttachmentPointer + 8, // 89: signalservice.DataMessage.Contact.Phone.type:type_name -> signalservice.DataMessage.Contact.Phone.Type + 9, // 90: signalservice.DataMessage.Contact.Email.type:type_name -> signalservice.DataMessage.Contact.Email.Type + 10, // 91: signalservice.DataMessage.Contact.PostalAddress.type:type_name -> signalservice.DataMessage.Contact.PostalAddress.Type + 40, // 92: signalservice.DataMessage.Contact.Avatar.avatar:type_name -> signalservice.AttachmentPointer + 31, // 93: signalservice.SyncMessage.Sent.message:type_name -> signalservice.DataMessage + 104, // 94: signalservice.SyncMessage.Sent.unidentifiedStatus:type_name -> signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus + 35, // 95: signalservice.SyncMessage.Sent.storyMessage:type_name -> signalservice.StoryMessage + 105, // 96: signalservice.SyncMessage.Sent.storyMessageRecipients:type_name -> signalservice.SyncMessage.Sent.StoryMessageRecipient + 46, // 97: signalservice.SyncMessage.Sent.editMessage:type_name -> signalservice.EditMessage + 40, // 98: signalservice.SyncMessage.Contacts.blob:type_name -> signalservice.AttachmentPointer + 15, // 99: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type + 16, // 100: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type + 17, // 101: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type + 18, // 102: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type + 106, // 103: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin + 19, // 104: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type + 20, // 105: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction + 21, // 106: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event + 22, // 107: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type + 23, // 108: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type + 107, // 109: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes + 109, // 110: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete + 110, // 111: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete + 108, // 112: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete + 48, // 113: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 114: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier + 48, // 115: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 116: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier + 112, // 117: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList + 24, // 118: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error + 49, // 119: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 120: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage + 49, // 121: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 122: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage + 49, // 123: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier + 48, // 124: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage + 48, // 125: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage + 49, // 126: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier + 40, // 127: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer + 25, // 128: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status + 111, // 129: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + 111, // 130: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData + 131, // [131:131] is the sub-list for method output_type + 131, // [131:131] is the sub-list for method input_type + 131, // [131:131] is the sub-list for extension type_name + 131, // [131:131] is the sub-list for extension extendee + 0, // [0:131] is the sub-list for field type_name } func init() { file_SignalService_proto_init() } @@ -9687,17 +9303,6 @@ func file_SignalService_proto_init() { if File_SignalService_proto != nil { return } - file_SignalService_proto_msgTypes[1].OneofWrappers = []any{ - (*Content_DataMessage)(nil), - (*Content_SyncMessage)(nil), - (*Content_CallMessage)(nil), - (*Content_NullMessage)(nil), - (*Content_ReceiptMessage)(nil), - (*Content_TypingMessage)(nil), - (*Content_DecryptionErrorMessage)(nil), - (*Content_StoryMessage)(nil), - (*Content_EditMessage)(nil), - } file_SignalService_proto_msgTypes[7].OneofWrappers = []any{ (*StoryMessage_FileAttachment)(nil), (*StoryMessage_TextAttachment)(nil), @@ -9706,28 +9311,6 @@ func file_SignalService_proto_init() { (*TextAttachment_Gradient_)(nil), (*TextAttachment_Color)(nil), } - file_SignalService_proto_msgTypes[11].OneofWrappers = []any{ - (*SyncMessage_Sent_)(nil), - (*SyncMessage_Contacts_)(nil), - (*SyncMessage_Request_)(nil), - (*SyncMessage_Blocked_)(nil), - (*SyncMessage_Verified)(nil), - (*SyncMessage_Configuration_)(nil), - (*SyncMessage_ViewOnceOpen_)(nil), - (*SyncMessage_FetchLatest_)(nil), - (*SyncMessage_Keys_)(nil), - (*SyncMessage_MessageRequestResponse_)(nil), - (*SyncMessage_OutgoingPayment_)(nil), - (*SyncMessage_PniChangeNumber_)(nil), - (*SyncMessage_CallEvent_)(nil), - (*SyncMessage_CallLinkUpdate_)(nil), - (*SyncMessage_CallLogEvent_)(nil), - (*SyncMessage_DeleteForMe_)(nil), - (*SyncMessage_DeviceNameChange_)(nil), - (*SyncMessage_AttachmentBackfillRequest_)(nil), - (*SyncMessage_AttachmentBackfillResponse_)(nil), - (*SyncMessage_UsernameChange_)(nil), - } file_SignalService_proto_msgTypes[12].OneofWrappers = []any{ (*AttachmentPointer_CdnId)(nil), (*AttachmentPointer_CdnKey)(nil), @@ -9759,20 +9342,20 @@ func file_SignalService_proto_init() { (*DataMessage_PinMessage_PinDurationSeconds)(nil), (*DataMessage_PinMessage_PinDurationForever)(nil), } - file_SignalService_proto_msgTypes[43].OneofWrappers = []any{ + file_SignalService_proto_msgTypes[42].OneofWrappers = []any{ (*DataMessage_Payment_Amount_MobileCoin_)(nil), } - file_SignalService_proto_msgTypes[44].OneofWrappers = []any{ + file_SignalService_proto_msgTypes[43].OneofWrappers = []any{ (*DataMessage_Payment_Notification_MobileCoin_)(nil), } - file_SignalService_proto_msgTypes[68].OneofWrappers = []any{ + file_SignalService_proto_msgTypes[67].OneofWrappers = []any{ (*SyncMessage_OutgoingPayment_MobileCoin_)(nil), } - file_SignalService_proto_msgTypes[76].OneofWrappers = []any{ + file_SignalService_proto_msgTypes[75].OneofWrappers = []any{ (*SyncMessage_AttachmentBackfillResponse_Attachments)(nil), (*SyncMessage_AttachmentBackfillResponse_Error_)(nil), } - file_SignalService_proto_msgTypes[85].OneofWrappers = []any{ + file_SignalService_proto_msgTypes[83].OneofWrappers = []any{ (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Attachment)(nil), (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Status_)(nil), } @@ -9782,7 +9365,7 @@ func file_SignalService_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_SignalService_proto_rawDesc), len(file_SignalService_proto_rawDesc)), NumEnums: 28, - NumMessages: 89, + NumMessages: 87, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/SignalService.proto b/pkg/signalmeow/protobuf/SignalService.proto index 58d0b0f..da4d44f 100644 --- a/pkg/signalmeow/protobuf/SignalService.proto +++ b/pkg/signalmeow/protobuf/SignalService.proto @@ -13,79 +13,23 @@ option java_outer_classname = "SignalServiceProtos"; message Envelope { enum Type { UNKNOWN = 0; - - /** - * A double-ratchet message represents a "normal," "unsealed-sender" message - * encrypted using the Double Ratchet within an established Signal session. - * Double-ratchet messages include sender information in the plaintext - * portion of the `Envelope`. - */ - DOUBLE_RATCHET = 1; // content => (version byte | SignalMessage{Content}) - + CIPHERTEXT = 1; // content => (version byte | SignalMessage{Content}) reserved 2; reserved "KEY_EXCHANGE"; - - /** - * A prekey message begins a new Signal session. The `content` of a prekey - * message is a superset of a double-ratchet message's `content` and - * contains the sender's identity public key and information identifying the - * pre-keys used in the message's ciphertext. Like double-ratchet messages, - * prekey messages contain sender information in the plaintext portion of - * the `Envelope`. - */ - PREKEY_MESSAGE = 3; // content => (version byte | PreKeySignalMessage{Content}) - - /** - * Server delivery receipts are generated by the server when - * "unsealed-sender" messages are delivered to and acknowledged by the - * destination device. Server delivery receipts identify the sender in the - * plaintext portion of the `Envelope` and have no `content`. Note that - * receipts for sealed-sender messages are generated by clients as - * `UNIDENTIFIED_SENDER` messages. - * - * Note that, with server delivery receipts, the "client timestamp" on - * the envelope refers to the timestamp of the original message (i.e. the - * message the server just delivered) and not to the time of delivery. The - * "server timestamp" refers to the time of delivery. - */ - SERVER_DELIVERY_RECEIPT = 5; // content => [] - - /** - * An unidentified sender message represents a message with no sender - * information in the plaintext portion of the `Envelope`. Unidentified - * sender messages always contain an additional `subtype` in their - * `content`. They may or may not be part of an existing Signal session - * (i.e. an unidentified sender message may have a "prekey message" - * subtype or may indicate an encryption error). - */ - UNIDENTIFIED_SENDER = 6; // content => ((version byte | UnidentifiedSenderMessage) OR (version byte | Multi-Recipient Sealed Sender Format)) - - reserved 7; - reserved "SENDERKEY_MESSAGE"; - - /** - * A plaintext message is used solely to convey encryption error receipts - * and never contains encrypted message content. Encryption error receipts - * must be delivered in plaintext because, encryption/decryption of a prior - * message failed and there is no reason to believe that - * encryption/decryption of subsequent messages with the same key material - * would succeed. - * - * Critically, plaintext messages never have "real" message content - * generated by users. Plaintext messages include sender information. - */ - PLAINTEXT_CONTENT = 8; // content => (marker byte | Content) - - // next: 9 + PREKEY_BUNDLE = 3; // content => (version byte | PreKeySignalMessage{Content}) + SERVER_DELIVERY_RECEIPT = 5; // legacyMessage => [] AND content => [] + UNIDENTIFIED_SENDER = 6; // legacyMessage => [] AND content => ((version byte | UnidentifiedSenderMessage) OR (version byte | Multi-Recipient Sealed Sender Format)) + SENDERKEY_MESSAGE = 7; // legacyMessage => [] AND content => (version byte | SenderKeyMessage) + PLAINTEXT_CONTENT = 8; // legacyMessage => [] AND content => (marker byte | Content) } optional Type type = 1; reserved 2; // formerly optional string sourceE164 = 2; optional string sourceServiceId = 11; - optional uint32 sourceDeviceId = 7; + optional uint32 sourceDevice = 7; optional string destinationServiceId = 13; reserved 3; // formerly optional string relay = 3; - optional uint64 clientTimestamp = 5; + optional uint64 timestamp = 5; reserved 6; // formerly optional bytes legacyMessage = 6; // Contains an encrypted DataMessage; this field could have been set historically for type 1 or 3 messages; no longer in use optional bytes content = 8; // Contains an encrypted Content optional string serverGuid = 9; @@ -104,20 +48,17 @@ message Envelope { } message Content { - oneof content { - DataMessage dataMessage = 1; - SyncMessage syncMessage = 2; - CallMessage callMessage = 3; - NullMessage nullMessage = 4; - ReceiptMessage receiptMessage = 5; - TypingMessage typingMessage = 6; - bytes /* DecryptionErrorMessage */ decryptionErrorMessage = 8; - StoryMessage storyMessage = 9; - EditMessage editMessage = 11; - } - + optional DataMessage dataMessage = 1; + optional SyncMessage syncMessage = 2; + optional CallMessage callMessage = 3; + optional NullMessage nullMessage = 4; + optional ReceiptMessage receiptMessage = 5; + optional TypingMessage typingMessage = 6; optional bytes /* SenderKeyDistributionMessage */ senderKeyDistributionMessage = 7; + optional bytes /* DecryptionErrorMessage */ decryptionErrorMessage = 8; + optional StoryMessage storyMessage = 9; optional PniSignatureMessage pniSignatureMessage = 10; + optional EditMessage editMessage = 11; } message CallMessage { @@ -187,7 +128,7 @@ message CallMessage { message DataMessage { enum Flags { - reserved /*END_SESSION*/ 1; + END_SESSION = 1; EXPIRATION_TIMER_UPDATE = 2; PROFILE_KEY_UPDATE = 4; FORWARD = 8; @@ -390,8 +331,8 @@ message DataMessage { message PollVote { optional bytes targetAuthorAciBinary = 1; optional uint64 targetSentTimestamp = 2; - repeated uint32 optionIndexes = 3; - optional uint32 voteCount = 4; + repeated uint32 optionIndexes = 3; // must be in the range [0, options.length) from the PollCreate + optional uint32 voteCount = 4; // increment this by 1 each time you vote on a given poll } message PinMessage { @@ -408,11 +349,6 @@ message DataMessage { optional uint64 targetSentTimestamp = 2; } - message AdminDelete { - optional bytes targetAuthorAciBinary = 1; // 16-byte UUID - optional uint64 targetSentTimestamp = 2; - } - optional string body = 1; repeated AttachmentPointer attachments = 2; reserved /*groupV1*/ 3; @@ -440,8 +376,7 @@ message DataMessage { optional PollVote pollVote = 26; optional PinMessage pinMessage = 27; optional UnpinMessage unpinMessage = 28; - optional AdminDelete adminDelete = 29; - // NEXT ID: 30 + // NEXT ID: 29 } message NullMessage { @@ -500,12 +435,6 @@ message TextAttachment { } message Gradient { - // Color ordering: - // 0 degrees: bottom-to-top - // 90 degrees: left-to-right - // 180 degrees: top-to-bottom - // 270 degrees: right-to-left - optional uint32 startColor = 1; // deprecated: this field will be removed in a future release. optional uint32 endColor = 2; // deprecated: this field will be removed in a future release. optional uint32 angle = 3; // degrees @@ -618,7 +547,7 @@ message SyncMessage { optional bool unidentifiedDeliveryIndicators = 2; optional bool typingIndicators = 3; reserved /* linkPreviews */ 4; - reserved /* provisioningVersion */ 5; + optional uint32 provisioningVersion = 5; optional bool linkPreviews = 6; } @@ -653,7 +582,7 @@ message SyncMessage { message Keys { reserved /* storageService */ 1; - reserved /* master */ 2; + optional bytes master = 2; // deprecated: this field will be removed in a future release. optional string accountEntropyPool = 3; optional bytes mediaRootBackupKey = 4; } @@ -753,7 +682,7 @@ message SyncMessage { optional bytes rootKey = 1; optional bytes adminPasskey = 2; optional Type type = 3; // defaults to UPDATE - reserved /*epoch*/ 4; + optional bytes epoch = 4; } message CallLogEvent { @@ -850,43 +779,31 @@ message SyncMessage { } } - message UsernameChange {} - - oneof content { - Sent sent = 1; - Contacts contacts = 2; - Request request = 4; - Blocked blocked = 6; - Verified verified = 7; - Configuration configuration = 9; - ViewOnceOpen viewOnceOpen = 11; - FetchLatest fetchLatest = 12; - Keys keys = 13; - MessageRequestResponse messageRequestResponse = 14; - OutgoingPayment outgoingPayment = 15; - PniChangeNumber pniChangeNumber = 18; - CallEvent callEvent = 19; - CallLinkUpdate callLinkUpdate = 20; - CallLogEvent callLogEvent = 21; - DeleteForMe deleteForMe = 22; - DeviceNameChange deviceNameChange = 23; - AttachmentBackfillRequest attachmentBackfillRequest = 24; - AttachmentBackfillResponse attachmentBackfillResponse = 25; - UsernameChange usernameChange = 26; - } - + optional Sent sent = 1; + optional Contacts contacts = 2; reserved /*groups*/ 3; - - // Protobufs don't allow `repeated` fields to be inside of `oneof` so while - // the fields below are mutually exclusive with the rest of the values above - // we have to place them outside of `oneof`. + optional Request request = 4; repeated Read read = 5; - repeated StickerPackOperation stickerPackOperation = 10; - repeated Viewed viewed = 16; - - reserved /*pniIdentity*/ 17; - + optional Blocked blocked = 6; + optional Verified verified = 7; + optional Configuration configuration = 9; optional bytes padding = 8; + repeated StickerPackOperation stickerPackOperation = 10; + optional ViewOnceOpen viewOnceOpen = 11; + optional FetchLatest fetchLatest = 12; + optional Keys keys = 13; + optional MessageRequestResponse messageRequestResponse = 14; + optional OutgoingPayment outgoingPayment = 15; + repeated Viewed viewed = 16; + reserved /*pniIdentity*/ 17; + optional PniChangeNumber pniChangeNumber = 18; + optional CallEvent callEvent = 19; + optional CallLinkUpdate callLinkUpdate = 20; + optional CallLogEvent callLogEvent = 21; + optional DeleteForMe deleteForMe = 22; + optional DeviceNameChange deviceNameChange = 23; + optional AttachmentBackfillRequest attachmentBackfillRequest = 24; + optional AttachmentBackfillResponse attachmentBackfillResponse = 25; } message AttachmentPointer { diff --git a/pkg/signalmeow/protobuf/StickerResources.pb.go b/pkg/signalmeow/protobuf/StickerResources.pb.go index f8194aa..e83cda1 100644 --- a/pkg/signalmeow/protobuf/StickerResources.pb.go +++ b/pkg/signalmeow/protobuf/StickerResources.pb.go @@ -6,7 +6,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: StickerResources.proto package signalpb diff --git a/pkg/signalmeow/protobuf/StorageService.pb.go b/pkg/signalmeow/protobuf/StorageService.pb.go index 0d650af..9a27146 100644 --- a/pkg/signalmeow/protobuf/StorageService.pb.go +++ b/pkg/signalmeow/protobuf/StorageService.pb.go @@ -6,7 +6,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: StorageService.proto package signalpb @@ -1401,7 +1401,6 @@ type GroupV2Record struct { HideStory bool `protobuf:"varint,8,opt,name=hideStory,proto3" json:"hideStory,omitempty"` StorySendMode GroupV2Record_StorySendMode `protobuf:"varint,10,opt,name=storySendMode,proto3,enum=signalservice.GroupV2Record_StorySendMode" json:"storySendMode,omitempty"` AvatarColor *AvatarColor `protobuf:"varint,11,opt,name=avatarColor,proto3,enum=signalservice.AvatarColor,oneof" json:"avatarColor,omitempty"` - VerifiedNameHash []byte `protobuf:"bytes,12,opt,name=verifiedNameHash,proto3" json:"verifiedNameHash,omitempty"` // SHA-256 of UTF-8 encoded decrypted group title that was last verified unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1506,13 +1505,6 @@ func (x *GroupV2Record) GetAvatarColor() AvatarColor { return AvatarColor_A100 } -func (x *GroupV2Record) GetVerifiedNameHash() []byte { - if x != nil { - return x.VerifiedNameHash - } - return nil -} - type Payments struct { state protoimpl.MessageState `protogen:"open.v1"` Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` @@ -1566,52 +1558,48 @@ func (x *Payments) GetEntropy() []byte { } type AccountRecord struct { - state protoimpl.MessageState `protogen:"open.v1"` - ProfileKey []byte `protobuf:"bytes,1,opt,name=profileKey,proto3" json:"profileKey,omitempty"` - GivenName string `protobuf:"bytes,2,opt,name=givenName,proto3" json:"givenName,omitempty"` - FamilyName string `protobuf:"bytes,3,opt,name=familyName,proto3" json:"familyName,omitempty"` - AvatarUrlPath string `protobuf:"bytes,4,opt,name=avatarUrlPath,proto3" json:"avatarUrlPath,omitempty"` - NoteToSelfArchived bool `protobuf:"varint,5,opt,name=noteToSelfArchived,proto3" json:"noteToSelfArchived,omitempty"` - ReadReceipts bool `protobuf:"varint,6,opt,name=readReceipts,proto3" json:"readReceipts,omitempty"` - SealedSenderIndicators bool `protobuf:"varint,7,opt,name=sealedSenderIndicators,proto3" json:"sealedSenderIndicators,omitempty"` - TypingIndicators bool `protobuf:"varint,8,opt,name=typingIndicators,proto3" json:"typingIndicators,omitempty"` - NoteToSelfMarkedUnread bool `protobuf:"varint,10,opt,name=noteToSelfMarkedUnread,proto3" json:"noteToSelfMarkedUnread,omitempty"` - LinkPreviews bool `protobuf:"varint,11,opt,name=linkPreviews,proto3" json:"linkPreviews,omitempty"` - PhoneNumberSharingMode AccountRecord_PhoneNumberSharingMode `protobuf:"varint,12,opt,name=phoneNumberSharingMode,proto3,enum=signalservice.AccountRecord_PhoneNumberSharingMode" json:"phoneNumberSharingMode,omitempty"` - UnlistedPhoneNumber bool `protobuf:"varint,13,opt,name=unlistedPhoneNumber,proto3" json:"unlistedPhoneNumber,omitempty"` - PinnedConversations []*AccountRecord_PinnedConversation `protobuf:"bytes,14,rep,name=pinnedConversations,proto3" json:"pinnedConversations,omitempty"` - PreferContactAvatars bool `protobuf:"varint,15,opt,name=preferContactAvatars,proto3" json:"preferContactAvatars,omitempty"` - Payments *Payments `protobuf:"bytes,16,opt,name=payments,proto3" json:"payments,omitempty"` - UniversalExpireTimer uint32 `protobuf:"varint,17,opt,name=universalExpireTimer,proto3" json:"universalExpireTimer,omitempty"` - PrimarySendsSms bool `protobuf:"varint,18,opt,name=primarySendsSms,proto3" json:"primarySendsSms,omitempty"` - PreferredReactionEmoji []string `protobuf:"bytes,20,rep,name=preferredReactionEmoji,proto3" json:"preferredReactionEmoji,omitempty"` - SubscriberId []byte `protobuf:"bytes,21,opt,name=subscriberId,proto3" json:"subscriberId,omitempty"` - SubscriberCurrencyCode string `protobuf:"bytes,22,opt,name=subscriberCurrencyCode,proto3" json:"subscriberCurrencyCode,omitempty"` - DisplayBadgesOnProfile bool `protobuf:"varint,23,opt,name=displayBadgesOnProfile,proto3" json:"displayBadgesOnProfile,omitempty"` - SubscriptionManuallyCancelled bool `protobuf:"varint,24,opt,name=subscriptionManuallyCancelled,proto3" json:"subscriptionManuallyCancelled,omitempty"` - KeepMutedChatsArchived bool `protobuf:"varint,25,opt,name=keepMutedChatsArchived,proto3" json:"keepMutedChatsArchived,omitempty"` - HasSetMyStoriesPrivacy bool `protobuf:"varint,26,opt,name=hasSetMyStoriesPrivacy,proto3" json:"hasSetMyStoriesPrivacy,omitempty"` - HasViewedOnboardingStory bool `protobuf:"varint,27,opt,name=hasViewedOnboardingStory,proto3" json:"hasViewedOnboardingStory,omitempty"` - StoriesDisabled bool `protobuf:"varint,29,opt,name=storiesDisabled,proto3" json:"storiesDisabled,omitempty"` - StoryViewReceiptsEnabled OptionalBool `protobuf:"varint,30,opt,name=storyViewReceiptsEnabled,proto3,enum=signalservice.OptionalBool" json:"storyViewReceiptsEnabled,omitempty"` - HasSeenGroupStoryEducationSheet bool `protobuf:"varint,32,opt,name=hasSeenGroupStoryEducationSheet,proto3" json:"hasSeenGroupStoryEducationSheet,omitempty"` - Username string `protobuf:"bytes,33,opt,name=username,proto3" json:"username,omitempty"` - HasCompletedUsernameOnboarding bool `protobuf:"varint,34,opt,name=hasCompletedUsernameOnboarding,proto3" json:"hasCompletedUsernameOnboarding,omitempty"` - UsernameLink *AccountRecord_UsernameLink `protobuf:"bytes,35,opt,name=usernameLink,proto3" json:"usernameLink,omitempty"` - BackupTier *uint64 `protobuf:"varint,40,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` // See zkgroup for integer particular values. Unset if backups are not enabled. - BackupSubscriberData *AccountRecord_IAPSubscriberData `protobuf:"bytes,41,opt,name=backupSubscriberData,proto3" json:"backupSubscriberData,omitempty"` - AvatarColor *AvatarColor `protobuf:"varint,42,opt,name=avatarColor,proto3,enum=signalservice.AvatarColor,oneof" json:"avatarColor,omitempty"` - BackupTierHistory *AccountRecord_BackupTierHistory `protobuf:"bytes,43,opt,name=backupTierHistory,proto3" json:"backupTierHistory,omitempty"` - NotificationProfileManualOverride *AccountRecord_NotificationProfileManualOverride `protobuf:"bytes,44,opt,name=notificationProfileManualOverride,proto3" json:"notificationProfileManualOverride,omitempty"` - NotificationProfileSyncDisabled bool `protobuf:"varint,45,opt,name=notificationProfileSyncDisabled,proto3" json:"notificationProfileSyncDisabled,omitempty"` - AutomaticKeyVerificationDisabled bool `protobuf:"varint,46,opt,name=automaticKeyVerificationDisabled,proto3" json:"automaticKeyVerificationDisabled,omitempty"` - HasSeenAdminDeleteEducationDialog bool `protobuf:"varint,47,opt,name=hasSeenAdminDeleteEducationDialog,proto3" json:"hasSeenAdminDeleteEducationDialog,omitempty"` - ReleaseNotesChatArchived *bool `protobuf:"varint,48,opt,name=releaseNotesChatArchived,proto3,oneof" json:"releaseNotesChatArchived,omitempty"` - ReleaseNotesChatMutedUntilTimestamp *uint64 `protobuf:"varint,49,opt,name=releaseNotesChatMutedUntilTimestamp,proto3,oneof" json:"releaseNotesChatMutedUntilTimestamp,omitempty"` - ReleaseNotesChatBlocked *bool `protobuf:"varint,50,opt,name=releaseNotesChatBlocked,proto3,oneof" json:"releaseNotesChatBlocked,omitempty"` - ReleaseNotesChatMarkedUnread *bool `protobuf:"varint,51,opt,name=releaseNotesChatMarkedUnread,proto3,oneof" json:"releaseNotesChatMarkedUnread,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ProfileKey []byte `protobuf:"bytes,1,opt,name=profileKey,proto3" json:"profileKey,omitempty"` + GivenName string `protobuf:"bytes,2,opt,name=givenName,proto3" json:"givenName,omitempty"` + FamilyName string `protobuf:"bytes,3,opt,name=familyName,proto3" json:"familyName,omitempty"` + AvatarUrlPath string `protobuf:"bytes,4,opt,name=avatarUrlPath,proto3" json:"avatarUrlPath,omitempty"` + NoteToSelfArchived bool `protobuf:"varint,5,opt,name=noteToSelfArchived,proto3" json:"noteToSelfArchived,omitempty"` + ReadReceipts bool `protobuf:"varint,6,opt,name=readReceipts,proto3" json:"readReceipts,omitempty"` + SealedSenderIndicators bool `protobuf:"varint,7,opt,name=sealedSenderIndicators,proto3" json:"sealedSenderIndicators,omitempty"` + TypingIndicators bool `protobuf:"varint,8,opt,name=typingIndicators,proto3" json:"typingIndicators,omitempty"` + NoteToSelfMarkedUnread bool `protobuf:"varint,10,opt,name=noteToSelfMarkedUnread,proto3" json:"noteToSelfMarkedUnread,omitempty"` + LinkPreviews bool `protobuf:"varint,11,opt,name=linkPreviews,proto3" json:"linkPreviews,omitempty"` + PhoneNumberSharingMode AccountRecord_PhoneNumberSharingMode `protobuf:"varint,12,opt,name=phoneNumberSharingMode,proto3,enum=signalservice.AccountRecord_PhoneNumberSharingMode" json:"phoneNumberSharingMode,omitempty"` + UnlistedPhoneNumber bool `protobuf:"varint,13,opt,name=unlistedPhoneNumber,proto3" json:"unlistedPhoneNumber,omitempty"` + PinnedConversations []*AccountRecord_PinnedConversation `protobuf:"bytes,14,rep,name=pinnedConversations,proto3" json:"pinnedConversations,omitempty"` + PreferContactAvatars bool `protobuf:"varint,15,opt,name=preferContactAvatars,proto3" json:"preferContactAvatars,omitempty"` + Payments *Payments `protobuf:"bytes,16,opt,name=payments,proto3" json:"payments,omitempty"` + UniversalExpireTimer uint32 `protobuf:"varint,17,opt,name=universalExpireTimer,proto3" json:"universalExpireTimer,omitempty"` + PrimarySendsSms bool `protobuf:"varint,18,opt,name=primarySendsSms,proto3" json:"primarySendsSms,omitempty"` + PreferredReactionEmoji []string `protobuf:"bytes,20,rep,name=preferredReactionEmoji,proto3" json:"preferredReactionEmoji,omitempty"` + SubscriberId []byte `protobuf:"bytes,21,opt,name=subscriberId,proto3" json:"subscriberId,omitempty"` + SubscriberCurrencyCode string `protobuf:"bytes,22,opt,name=subscriberCurrencyCode,proto3" json:"subscriberCurrencyCode,omitempty"` + DisplayBadgesOnProfile bool `protobuf:"varint,23,opt,name=displayBadgesOnProfile,proto3" json:"displayBadgesOnProfile,omitempty"` + SubscriptionManuallyCancelled bool `protobuf:"varint,24,opt,name=subscriptionManuallyCancelled,proto3" json:"subscriptionManuallyCancelled,omitempty"` + KeepMutedChatsArchived bool `protobuf:"varint,25,opt,name=keepMutedChatsArchived,proto3" json:"keepMutedChatsArchived,omitempty"` + HasSetMyStoriesPrivacy bool `protobuf:"varint,26,opt,name=hasSetMyStoriesPrivacy,proto3" json:"hasSetMyStoriesPrivacy,omitempty"` + HasViewedOnboardingStory bool `protobuf:"varint,27,opt,name=hasViewedOnboardingStory,proto3" json:"hasViewedOnboardingStory,omitempty"` + StoriesDisabled bool `protobuf:"varint,29,opt,name=storiesDisabled,proto3" json:"storiesDisabled,omitempty"` + StoryViewReceiptsEnabled OptionalBool `protobuf:"varint,30,opt,name=storyViewReceiptsEnabled,proto3,enum=signalservice.OptionalBool" json:"storyViewReceiptsEnabled,omitempty"` + HasSeenGroupStoryEducationSheet bool `protobuf:"varint,32,opt,name=hasSeenGroupStoryEducationSheet,proto3" json:"hasSeenGroupStoryEducationSheet,omitempty"` + Username string `protobuf:"bytes,33,opt,name=username,proto3" json:"username,omitempty"` + HasCompletedUsernameOnboarding bool `protobuf:"varint,34,opt,name=hasCompletedUsernameOnboarding,proto3" json:"hasCompletedUsernameOnboarding,omitempty"` + UsernameLink *AccountRecord_UsernameLink `protobuf:"bytes,35,opt,name=usernameLink,proto3" json:"usernameLink,omitempty"` + HasBackup *bool `protobuf:"varint,39,opt,name=hasBackup,proto3,oneof" json:"hasBackup,omitempty"` // Set to true after backups are enabled and one is uploaded. + BackupTier *uint64 `protobuf:"varint,40,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` // See zkgroup for integer particular values. Unset if backups are not enabled. + BackupSubscriberData *AccountRecord_IAPSubscriberData `protobuf:"bytes,41,opt,name=backupSubscriberData,proto3" json:"backupSubscriberData,omitempty"` + AvatarColor *AvatarColor `protobuf:"varint,42,opt,name=avatarColor,proto3,enum=signalservice.AvatarColor,oneof" json:"avatarColor,omitempty"` + BackupTierHistory *AccountRecord_BackupTierHistory `protobuf:"bytes,43,opt,name=backupTierHistory,proto3" json:"backupTierHistory,omitempty"` + NotificationProfileManualOverride *AccountRecord_NotificationProfileManualOverride `protobuf:"bytes,44,opt,name=notificationProfileManualOverride,proto3" json:"notificationProfileManualOverride,omitempty"` + NotificationProfileSyncDisabled bool `protobuf:"varint,45,opt,name=notificationProfileSyncDisabled,proto3" json:"notificationProfileSyncDisabled,omitempty"` + AutomaticKeyVerificationDisabled bool `protobuf:"varint,46,opt,name=automaticKeyVerificationDisabled,proto3" json:"automaticKeyVerificationDisabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccountRecord) Reset() { @@ -1861,6 +1849,13 @@ func (x *AccountRecord) GetUsernameLink() *AccountRecord_UsernameLink { return nil } +func (x *AccountRecord) GetHasBackup() bool { + if x != nil && x.HasBackup != nil { + return *x.HasBackup + } + return false +} + func (x *AccountRecord) GetBackupTier() uint64 { if x != nil && x.BackupTier != nil { return *x.BackupTier @@ -1910,41 +1905,6 @@ func (x *AccountRecord) GetAutomaticKeyVerificationDisabled() bool { return false } -func (x *AccountRecord) GetHasSeenAdminDeleteEducationDialog() bool { - if x != nil { - return x.HasSeenAdminDeleteEducationDialog - } - return false -} - -func (x *AccountRecord) GetReleaseNotesChatArchived() bool { - if x != nil && x.ReleaseNotesChatArchived != nil { - return *x.ReleaseNotesChatArchived - } - return false -} - -func (x *AccountRecord) GetReleaseNotesChatMutedUntilTimestamp() uint64 { - if x != nil && x.ReleaseNotesChatMutedUntilTimestamp != nil { - return *x.ReleaseNotesChatMutedUntilTimestamp - } - return 0 -} - -func (x *AccountRecord) GetReleaseNotesChatBlocked() bool { - if x != nil && x.ReleaseNotesChatBlocked != nil { - return *x.ReleaseNotesChatBlocked - } - return false -} - -func (x *AccountRecord) GetReleaseNotesChatMarkedUnread() bool { - if x != nil && x.ReleaseNotesChatMarkedUnread != nil { - return *x.ReleaseNotesChatMarkedUnread - } - return false -} - type StoryDistributionListRecord struct { state protoimpl.MessageState `protogen:"open.v1"` Identifier []byte `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` @@ -2042,6 +2002,7 @@ type CallLinkRecord struct { RootKey []byte `protobuf:"bytes,1,opt,name=rootKey,proto3" json:"rootKey,omitempty"` AdminPasskey []byte `protobuf:"bytes,2,opt,name=adminPasskey,proto3" json:"adminPasskey,omitempty"` DeletedAtTimestampMs uint64 `protobuf:"varint,3,opt,name=deletedAtTimestampMs,proto3" json:"deletedAtTimestampMs,omitempty"` + Epoch []byte `protobuf:"bytes,4,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2097,6 +2058,13 @@ func (x *CallLinkRecord) GetDeletedAtTimestampMs() uint64 { return 0 } +func (x *CallLinkRecord) GetEpoch() []byte { + if x != nil { + return x.Epoch + } + return nil +} + type Recipient struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Identifier: @@ -2570,7 +2538,6 @@ type AccountRecord_PinnedConversation struct { // *AccountRecord_PinnedConversation_Contact_ // *AccountRecord_PinnedConversation_LegacyGroupId // *AccountRecord_PinnedConversation_GroupMasterKey - // *AccountRecord_PinnedConversation_ReleaseNotes_ Identifier isAccountRecord_PinnedConversation_Identifier `protobuf_oneof:"identifier"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -2640,15 +2607,6 @@ func (x *AccountRecord_PinnedConversation) GetGroupMasterKey() []byte { return nil } -func (x *AccountRecord_PinnedConversation) GetReleaseNotes() *AccountRecord_PinnedConversation_ReleaseNotes { - if x != nil { - if x, ok := x.Identifier.(*AccountRecord_PinnedConversation_ReleaseNotes_); ok { - return x.ReleaseNotes - } - } - return nil -} - type isAccountRecord_PinnedConversation_Identifier interface { isAccountRecord_PinnedConversation_Identifier() } @@ -2665,10 +2623,6 @@ type AccountRecord_PinnedConversation_GroupMasterKey struct { GroupMasterKey []byte `protobuf:"bytes,4,opt,name=groupMasterKey,proto3,oneof"` } -type AccountRecord_PinnedConversation_ReleaseNotes_ struct { - ReleaseNotes *AccountRecord_PinnedConversation_ReleaseNotes `protobuf:"bytes,5,opt,name=releaseNotes,proto3,oneof"` -} - func (*AccountRecord_PinnedConversation_Contact_) isAccountRecord_PinnedConversation_Identifier() {} func (*AccountRecord_PinnedConversation_LegacyGroupId) isAccountRecord_PinnedConversation_Identifier() { @@ -2677,9 +2631,6 @@ func (*AccountRecord_PinnedConversation_LegacyGroupId) isAccountRecord_PinnedCon func (*AccountRecord_PinnedConversation_GroupMasterKey) isAccountRecord_PinnedConversation_Identifier() { } -func (*AccountRecord_PinnedConversation_ReleaseNotes_) isAccountRecord_PinnedConversation_Identifier() { -} - type AccountRecord_UsernameLink struct { state protoimpl.MessageState `protogen:"open.v1"` Entropy []byte `protobuf:"bytes,1,opt,name=entropy,proto3" json:"entropy,omitempty"` // 32 bytes of entropy used for encryption @@ -3031,42 +2982,6 @@ func (x *AccountRecord_PinnedConversation_Contact) GetServiceIdBinary() []byte { return nil } -type AccountRecord_PinnedConversation_ReleaseNotes struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AccountRecord_PinnedConversation_ReleaseNotes) Reset() { - *x = AccountRecord_PinnedConversation_ReleaseNotes{} - mi := &file_StorageService_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AccountRecord_PinnedConversation_ReleaseNotes) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AccountRecord_PinnedConversation_ReleaseNotes) ProtoMessage() {} - -func (x *AccountRecord_PinnedConversation_ReleaseNotes) ProtoReflect() protoreflect.Message { - mi := &file_StorageService_proto_msgTypes[25] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AccountRecord_PinnedConversation_ReleaseNotes.ProtoReflect.Descriptor instead. -func (*AccountRecord_PinnedConversation_ReleaseNotes) Descriptor() ([]byte, []int) { - return file_StorageService_proto_rawDescGZIP(), []int{11, 0, 1} -} - type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct { state protoimpl.MessageState `protogen:"open.v1"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -3078,7 +2993,7 @@ type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct { func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) Reset() { *x = AccountRecord_NotificationProfileManualOverride_ManuallyEnabled{} - mi := &file_StorageService_proto_msgTypes[26] + mi := &file_StorageService_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3090,7 +3005,7 @@ func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) String func (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoMessage() {} func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoReflect() protoreflect.Message { - mi := &file_StorageService_proto_msgTypes[26] + mi := &file_StorageService_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3131,7 +3046,7 @@ type Recipient_Contact struct { func (x *Recipient_Contact) Reset() { *x = Recipient_Contact{} - mi := &file_StorageService_proto_msgTypes[27] + mi := &file_StorageService_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3143,7 +3058,7 @@ func (x *Recipient_Contact) String() string { func (*Recipient_Contact) ProtoMessage() {} func (x *Recipient_Contact) ProtoReflect() protoreflect.Message { - mi := &file_StorageService_proto_msgTypes[27] + mi := &file_StorageService_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3280,7 +3195,7 @@ const file_StorageService_proto_rawDesc = "" + "\vwhitelisted\x18\x03 \x01(\bR\vwhitelisted\x12\x1a\n" + "\barchived\x18\x04 \x01(\bR\barchived\x12\"\n" + "\fmarkedUnread\x18\x05 \x01(\bR\fmarkedUnread\x120\n" + - "\x13mutedUntilTimestamp\x18\x06 \x01(\x04R\x13mutedUntilTimestamp\"\xcd\x04\n" + + "\x13mutedUntilTimestamp\x18\x06 \x01(\x04R\x13mutedUntilTimestamp\"\xa1\x04\n" + "\rGroupV2Record\x12\x1c\n" + "\tmasterKey\x18\x01 \x01(\fR\tmasterKey\x12\x18\n" + "\ablocked\x18\x02 \x01(\bR\ablocked\x12 \n" + @@ -3292,8 +3207,7 @@ const file_StorageService_proto_rawDesc = "" + "\thideStory\x18\b \x01(\bR\thideStory\x12P\n" + "\rstorySendMode\x18\n" + " \x01(\x0e2*.signalservice.GroupV2Record.StorySendModeR\rstorySendMode\x12A\n" + - "\vavatarColor\x18\v \x01(\x0e2\x1a.signalservice.AvatarColorH\x00R\vavatarColor\x88\x01\x01\x12*\n" + - "\x10verifiedNameHash\x18\f \x01(\fR\x10verifiedNameHash\"7\n" + + "\vavatarColor\x18\v \x01(\x0e2\x1a.signalservice.AvatarColorH\x00R\vavatarColor\x88\x01\x01\"7\n" + "\rStorySendMode\x12\v\n" + "\aDEFAULT\x10\x00\x12\f\n" + "\bDISABLED\x10\x01\x12\v\n" + @@ -3302,7 +3216,7 @@ const file_StorageService_proto_rawDesc = "" + "\">\n" + "\bPayments\x12\x18\n" + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x18\n" + - "\aentropy\x18\x02 \x01(\fR\aentropy\"\x84!\n" + + "\aentropy\x18\x02 \x01(\fR\aentropy\"\xcb\x1c\n" + "\rAccountRecord\x12\x1e\n" + "\n" + "profileKey\x18\x01 \x01(\fR\n" + @@ -3339,31 +3253,25 @@ const file_StorageService_proto_rawDesc = "" + "\x1fhasSeenGroupStoryEducationSheet\x18 \x01(\bR\x1fhasSeenGroupStoryEducationSheet\x12\x1a\n" + "\busername\x18! \x01(\tR\busername\x12F\n" + "\x1ehasCompletedUsernameOnboarding\x18\" \x01(\bR\x1ehasCompletedUsernameOnboarding\x12M\n" + - "\fusernameLink\x18# \x01(\v2).signalservice.AccountRecord.UsernameLinkR\fusernameLink\x12#\n" + + "\fusernameLink\x18# \x01(\v2).signalservice.AccountRecord.UsernameLinkR\fusernameLink\x12!\n" + + "\thasBackup\x18' \x01(\bH\x00R\thasBackup\x88\x01\x01\x12#\n" + "\n" + - "backupTier\x18( \x01(\x04H\x00R\n" + + "backupTier\x18( \x01(\x04H\x01R\n" + "backupTier\x88\x01\x01\x12b\n" + "\x14backupSubscriberData\x18) \x01(\v2..signalservice.AccountRecord.IAPSubscriberDataR\x14backupSubscriberData\x12A\n" + - "\vavatarColor\x18* \x01(\x0e2\x1a.signalservice.AvatarColorH\x01R\vavatarColor\x88\x01\x01\x12\\\n" + + "\vavatarColor\x18* \x01(\x0e2\x1a.signalservice.AvatarColorH\x02R\vavatarColor\x88\x01\x01\x12\\\n" + "\x11backupTierHistory\x18+ \x01(\v2..signalservice.AccountRecord.BackupTierHistoryR\x11backupTierHistory\x12\x8c\x01\n" + "!notificationProfileManualOverride\x18, \x01(\v2>.signalservice.AccountRecord.NotificationProfileManualOverrideR!notificationProfileManualOverride\x12H\n" + "\x1fnotificationProfileSyncDisabled\x18- \x01(\bR\x1fnotificationProfileSyncDisabled\x12J\n" + - " automaticKeyVerificationDisabled\x18. \x01(\bR automaticKeyVerificationDisabled\x12L\n" + - "!hasSeenAdminDeleteEducationDialog\x18/ \x01(\bR!hasSeenAdminDeleteEducationDialog\x12?\n" + - "\x18releaseNotesChatArchived\x180 \x01(\bH\x02R\x18releaseNotesChatArchived\x88\x01\x01\x12U\n" + - "#releaseNotesChatMutedUntilTimestamp\x181 \x01(\x04H\x03R#releaseNotesChatMutedUntilTimestamp\x88\x01\x01\x12=\n" + - "\x17releaseNotesChatBlocked\x182 \x01(\bH\x04R\x17releaseNotesChatBlocked\x88\x01\x01\x12G\n" + - "\x1creleaseNotesChatMarkedUnread\x183 \x01(\bH\x05R\x1creleaseNotesChatMarkedUnread\x88\x01\x01\x1a\xa4\x03\n" + + " automaticKeyVerificationDisabled\x18. \x01(\bR automaticKeyVerificationDisabled\x1a\xb0\x02\n" + "\x12PinnedConversation\x12S\n" + "\acontact\x18\x01 \x01(\v27.signalservice.AccountRecord.PinnedConversation.ContactH\x00R\acontact\x12&\n" + "\rlegacyGroupId\x18\x03 \x01(\fH\x00R\rlegacyGroupId\x12(\n" + - "\x0egroupMasterKey\x18\x04 \x01(\fH\x00R\x0egroupMasterKey\x12b\n" + - "\freleaseNotes\x18\x05 \x01(\v2<.signalservice.AccountRecord.PinnedConversation.ReleaseNotesH\x00R\freleaseNotes\x1ae\n" + + "\x0egroupMasterKey\x18\x04 \x01(\fH\x00R\x0egroupMasterKey\x1ae\n" + "\aContact\x12\x1c\n" + "\tserviceId\x18\x01 \x01(\tR\tserviceId\x12\x12\n" + "\x04e164\x18\x02 \x01(\tR\x04e164\x12(\n" + - "\x0fserviceIdBinary\x18\x03 \x01(\fR\x0fserviceIdBinary\x1a\x0e\n" + - "\fReleaseNotesB\f\n" + + "\x0fserviceIdBinary\x18\x03 \x01(\fR\x0fserviceIdBinaryB\f\n" + "\n" + "identifier\x1a\xf8\x01\n" + "\fUsernameLink\x12\x18\n" + @@ -3406,14 +3314,12 @@ const file_StorageService_proto_rawDesc = "" + "\aUNKNOWN\x10\x00\x12\r\n" + "\tEVERYBODY\x10\x01\x12\n" + "\n" + - "\x06NOBODY\x10\x02B\r\n" + + "\x06NOBODY\x10\x02B\f\n" + + "\n" + + "_hasBackupB\r\n" + "\v_backupTierB\x0e\n" + - "\f_avatarColorB\x1b\n" + - "\x19_releaseNotesChatArchivedB&\n" + - "$_releaseNotesChatMutedUntilTimestampB\x1a\n" + - "\x18_releaseNotesChatBlockedB\x1f\n" + - "\x1d_releaseNotesChatMarkedUnreadJ\x04\b\t\x10\n" + - "J\x04\b\x13\x10\x14J\x04\b\x1c\x10\x1dJ\x04\b\x1f\x10 J\x04\b$\x10%J\x04\b%\x10&J\x04\b&\x10'J\x04\b'\x10(\"\xb9\x02\n" + + "\f_avatarColorJ\x04\b\t\x10\n" + + "J\x04\b\x13\x10\x14J\x04\b\x1c\x10\x1dJ\x04\b\x1f\x10 J\x04\b$\x10%J\x04\b%\x10&J\x04\b&\x10'\"\xb9\x02\n" + "\x1bStoryDistributionListRecord\x12\x1e\n" + "\n" + "identifier\x18\x01 \x01(\fR\n" + @@ -3423,11 +3329,13 @@ const file_StorageService_proto_rawDesc = "" + "\x12deletedAtTimestamp\x18\x04 \x01(\x04R\x12deletedAtTimestamp\x12$\n" + "\rallowsReplies\x18\x05 \x01(\bR\rallowsReplies\x12 \n" + "\visBlockList\x18\x06 \x01(\bR\visBlockList\x12<\n" + - "\x19recipientServiceIdsBinary\x18\a \x03(\fR\x19recipientServiceIdsBinary\"\x88\x01\n" + + "\x19recipientServiceIdsBinary\x18\a \x03(\fR\x19recipientServiceIdsBinary\"\xa7\x01\n" + "\x0eCallLinkRecord\x12\x18\n" + "\arootKey\x18\x01 \x01(\fR\arootKey\x12\"\n" + "\fadminPasskey\x18\x02 \x01(\fR\fadminPasskey\x122\n" + - "\x14deletedAtTimestampMs\x18\x03 \x01(\x04R\x14deletedAtTimestampMsJ\x04\b\x04\x10\x05\"\x90\x02\n" + + "\x14deletedAtTimestampMs\x18\x03 \x01(\x04R\x14deletedAtTimestampMs\x12\x19\n" + + "\x05epoch\x18\x04 \x01(\fH\x00R\x05epoch\x88\x01\x01B\b\n" + + "\x06_epoch\"\x90\x02\n" + "\tRecipient\x12<\n" + "\acontact\x18\x01 \x01(\v2 .signalservice.Recipient.ContactH\x00R\acontact\x12&\n" + "\rlegacyGroupId\x18\x02 \x01(\fH\x00R\rlegacyGroupId\x12(\n" + @@ -3522,7 +3430,7 @@ func file_StorageService_proto_rawDescGZIP() []byte { } var file_StorageService_proto_enumTypes = make([]protoimpl.EnumInfo, 9) -var file_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_StorageService_proto_goTypes = []any{ (OptionalBool)(0), // 0: signalservice.OptionalBool (AvatarColor)(0), // 1: signalservice.AvatarColor @@ -3558,9 +3466,8 @@ var file_StorageService_proto_goTypes = []any{ (*AccountRecord_BackupTierHistory)(nil), // 31: signalservice.AccountRecord.BackupTierHistory (*AccountRecord_NotificationProfileManualOverride)(nil), // 32: signalservice.AccountRecord.NotificationProfileManualOverride (*AccountRecord_PinnedConversation_Contact)(nil), // 33: signalservice.AccountRecord.PinnedConversation.Contact - (*AccountRecord_PinnedConversation_ReleaseNotes)(nil), // 34: signalservice.AccountRecord.PinnedConversation.ReleaseNotes - (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 35: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled - (*Recipient_Contact)(nil), // 36: signalservice.Recipient.Contact + (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 34: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled + (*Recipient_Contact)(nil), // 35: signalservice.Recipient.Contact } var file_StorageService_proto_depIdxs = []int32{ 10, // 0: signalservice.StorageItems.items:type_name -> signalservice.StorageItem @@ -3589,7 +3496,7 @@ var file_StorageService_proto_depIdxs = []int32{ 1, // 23: signalservice.AccountRecord.avatarColor:type_name -> signalservice.AvatarColor 31, // 24: signalservice.AccountRecord.backupTierHistory:type_name -> signalservice.AccountRecord.BackupTierHistory 32, // 25: signalservice.AccountRecord.notificationProfileManualOverride:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride - 36, // 26: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact + 35, // 26: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact 7, // 27: signalservice.ChatFolderRecord.folderType:type_name -> signalservice.ChatFolderRecord.FolderType 23, // 28: signalservice.ChatFolderRecord.includedRecipients:type_name -> signalservice.Recipient 23, // 29: signalservice.ChatFolderRecord.excludedRecipients:type_name -> signalservice.Recipient @@ -3597,14 +3504,13 @@ var file_StorageService_proto_depIdxs = []int32{ 8, // 31: signalservice.NotificationProfile.scheduleDaysEnabled:type_name -> signalservice.NotificationProfile.DayOfWeek 2, // 32: signalservice.ManifestRecord.Identifier.type:type_name -> signalservice.ManifestRecord.Identifier.Type 33, // 33: signalservice.AccountRecord.PinnedConversation.contact:type_name -> signalservice.AccountRecord.PinnedConversation.Contact - 34, // 34: signalservice.AccountRecord.PinnedConversation.releaseNotes:type_name -> signalservice.AccountRecord.PinnedConversation.ReleaseNotes - 6, // 35: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color - 35, // 36: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled - 37, // [37:37] is the sub-list for method output_type - 37, // [37:37] is the sub-list for method input_type - 37, // [37:37] is the sub-list for extension type_name - 37, // [37:37] is the sub-list for extension extendee - 0, // [0:37] is the sub-list for field type_name + 6, // 34: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color + 34, // 35: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled + 36, // [36:36] is the sub-list for method output_type + 36, // [36:36] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_StorageService_proto_init() } @@ -3625,6 +3531,7 @@ func file_StorageService_proto_init() { file_StorageService_proto_msgTypes[7].OneofWrappers = []any{} file_StorageService_proto_msgTypes[9].OneofWrappers = []any{} file_StorageService_proto_msgTypes[11].OneofWrappers = []any{} + file_StorageService_proto_msgTypes[13].OneofWrappers = []any{} file_StorageService_proto_msgTypes[14].OneofWrappers = []any{ (*Recipient_Contact_)(nil), (*Recipient_LegacyGroupId)(nil), @@ -3635,7 +3542,6 @@ func file_StorageService_proto_init() { (*AccountRecord_PinnedConversation_Contact_)(nil), (*AccountRecord_PinnedConversation_LegacyGroupId)(nil), (*AccountRecord_PinnedConversation_GroupMasterKey)(nil), - (*AccountRecord_PinnedConversation_ReleaseNotes_)(nil), } file_StorageService_proto_msgTypes[21].OneofWrappers = []any{ (*AccountRecord_IAPSubscriberData_PurchaseToken)(nil), @@ -3652,7 +3558,7 @@ func file_StorageService_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_StorageService_proto_rawDesc), len(file_StorageService_proto_rawDesc)), NumEnums: 9, - NumMessages: 28, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/StorageService.proto b/pkg/signalmeow/protobuf/StorageService.proto index 0072714..95ec845 100644 --- a/pkg/signalmeow/protobuf/StorageService.proto +++ b/pkg/signalmeow/protobuf/StorageService.proto @@ -172,7 +172,6 @@ message GroupV2Record { reserved /* storySendEnabled */ 9; StorySendMode storySendMode = 10; optional AvatarColor avatarColor = 11; - bytes verifiedNameHash = 12; // SHA-256 of UTF-8 encoded decrypted group title that was last verified } message Payments { @@ -195,13 +194,10 @@ message AccountRecord { bytes serviceIdBinary = 3; // service ID binary (i.e. 16 byte UUID for ACI, 1 byte prefix + 16 byte UUID for PNI) } - message ReleaseNotes {} - oneof identifier { - Contact contact = 1; - bytes legacyGroupId = 3; - bytes groupMasterKey = 4; - ReleaseNotes releaseNotes = 5; + Contact contact = 1; + bytes legacyGroupId = 3; + bytes groupMasterKey = 4; } } @@ -292,7 +288,7 @@ message AccountRecord { reserved /* backupsSubscriberId */ 36; reserved /* backupsSubscriberCurrencyCode */ 37; reserved /* backupsSubscriptionManuallyCancelled */ 38; - reserved /* hasBackup */ 39; + optional bool hasBackup = 39; // Set to true after backups are enabled and one is uploaded. optional uint64 backupTier = 40; // See zkgroup for integer particular values. Unset if backups are not enabled. IAPSubscriberData backupSubscriberData = 41; optional AvatarColor avatarColor = 42; @@ -300,11 +296,6 @@ message AccountRecord { NotificationProfileManualOverride notificationProfileManualOverride = 44; bool notificationProfileSyncDisabled = 45; bool automaticKeyVerificationDisabled = 46; - bool hasSeenAdminDeleteEducationDialog = 47; - optional bool releaseNotesChatArchived = 48; - optional uint64 releaseNotesChatMutedUntilTimestamp = 49; - optional bool releaseNotesChatBlocked = 50; - optional bool releaseNotesChatMarkedUnread = 51; } message StoryDistributionListRecord { @@ -321,7 +312,7 @@ message CallLinkRecord { bytes rootKey = 1; bytes adminPasskey = 2; uint64 deletedAtTimestampMs = 3; - reserved 4; // was epoch field, never used + optional bytes epoch = 4; } message Recipient { diff --git a/pkg/signalmeow/protobuf/UnidentifiedDelivery.pb.go b/pkg/signalmeow/protobuf/UnidentifiedDelivery.pb.go index 5979a4c..e30f6d6 100644 --- a/pkg/signalmeow/protobuf/UnidentifiedDelivery.pb.go +++ b/pkg/signalmeow/protobuf/UnidentifiedDelivery.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: UnidentifiedDelivery.proto // Copyright 2018 Signal Messenger, LLC diff --git a/pkg/signalmeow/protobuf/WebSocketResources.pb.go b/pkg/signalmeow/protobuf/WebSocketResources.pb.go index d52ae1e..f35110d 100644 --- a/pkg/signalmeow/protobuf/WebSocketResources.pb.go +++ b/pkg/signalmeow/protobuf/WebSocketResources.pb.go @@ -6,7 +6,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: WebSocketResources.proto package signalpb @@ -321,8 +321,8 @@ const file_WebSocketResources_proto_rawDesc = "" + "\x04Type\x12\v\n" + "\aUNKNOWN\x10\x00\x12\v\n" + "\aREQUEST\x10\x01\x12\f\n" + - "\bRESPONSE\x10\x02B/\n" + - "\x1corg.signal.network.websocketB\x0fWebSocketProtos" + "\bRESPONSE\x10\x02BF\n" + + "3org.whispersystems.signalservice.internal.websocketB\x0fWebSocketProtos" var ( file_WebSocketResources_proto_rawDescOnce sync.Once diff --git a/pkg/signalmeow/protobuf/WebSocketResources.proto b/pkg/signalmeow/protobuf/WebSocketResources.proto index e230ad7..376f8b2 100644 --- a/pkg/signalmeow/protobuf/WebSocketResources.proto +++ b/pkg/signalmeow/protobuf/WebSocketResources.proto @@ -7,7 +7,7 @@ syntax = "proto2"; package signalservice; -option java_package = "org.signal.network.websocket"; +option java_package = "org.whispersystems.signalservice.internal.websocket"; option java_outer_classname = "WebSocketProtos"; message WebSocketRequestMessage { diff --git a/pkg/signalmeow/protobuf/backuppb/Backup.pb.go b/pkg/signalmeow/protobuf/backuppb/Backup.pb.go index 975fd50..73930ae 100644 --- a/pkg/signalmeow/protobuf/backuppb/Backup.pb.go +++ b/pkg/signalmeow/protobuf/backuppb/Backup.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.11 -// protoc v7.34.1 +// protoc v6.33.5 // source: backuppb/Backup.proto package backuppb @@ -1504,7 +1504,7 @@ func (x IndividualCall_Type) Number() protoreflect.EnumNumber { // Deprecated: Use IndividualCall_Type.Descriptor instead. func (IndividualCall_Type) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{35, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{34, 0} } type IndividualCall_Direction int32 @@ -1553,7 +1553,7 @@ func (x IndividualCall_Direction) Number() protoreflect.EnumNumber { // Deprecated: Use IndividualCall_Direction.Descriptor instead. func (IndividualCall_Direction) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{35, 1} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{34, 1} } type IndividualCall_State int32 @@ -1612,7 +1612,7 @@ func (x IndividualCall_State) Number() protoreflect.EnumNumber { // Deprecated: Use IndividualCall_State.Descriptor instead. func (IndividualCall_State) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{35, 2} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{34, 2} } type GroupCall_State int32 @@ -1688,7 +1688,7 @@ func (x GroupCall_State) Number() protoreflect.EnumNumber { // Deprecated: Use GroupCall_State.Descriptor instead. func (GroupCall_State) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{36, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{35, 0} } type SimpleChatUpdate_Type int32 @@ -1779,7 +1779,7 @@ func (x SimpleChatUpdate_Type) Number() protoreflect.EnumNumber { // Deprecated: Use SimpleChatUpdate_Type.Descriptor instead. func (SimpleChatUpdate_Type) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{37, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{36, 0} } type ChatStyle_WallpaperPreset int32 @@ -1885,7 +1885,7 @@ func (x ChatStyle_WallpaperPreset) Number() protoreflect.EnumNumber { // Deprecated: Use ChatStyle_WallpaperPreset.Descriptor instead. func (ChatStyle_WallpaperPreset) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80, 0} } type ChatStyle_BubbleColorPreset int32 @@ -1994,7 +1994,7 @@ func (x ChatStyle_BubbleColorPreset) Number() protoreflect.EnumNumber { // Deprecated: Use ChatStyle_BubbleColorPreset.Descriptor instead. func (ChatStyle_BubbleColorPreset) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83, 1} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80, 1} } type NotificationProfile_DayOfWeek int32 @@ -2058,7 +2058,7 @@ func (x NotificationProfile_DayOfWeek) Number() protoreflect.EnumNumber { // Deprecated: Use NotificationProfile_DayOfWeek.Descriptor instead. func (NotificationProfile_DayOfWeek) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{84, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{81, 0} } // Represents the default "All chats" folder record vs all other custom folders @@ -2108,7 +2108,7 @@ func (x ChatFolder_FolderType) Number() protoreflect.EnumNumber { // Deprecated: Use ChatFolder_FolderType.Descriptor instead. func (ChatFolder_FolderType) EnumDescriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{85, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{82, 0} } type BackupInfo struct { @@ -2406,6 +2406,7 @@ 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"` + KeyTransparencyData []byte `protobuf:"bytes,15,opt,name=keyTransparencyData,proto3,oneof" json:"keyTransparencyData,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2531,6 +2532,13 @@ func (x *AccountData) GetBioEmoji() string { return "" } +func (x *AccountData) GetKeyTransparencyData() []byte { + if x != nil { + return x.KeyTransparencyData + } + 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 @@ -3233,6 +3241,7 @@ type CallLink struct { Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` Restrictions CallLink_Restrictions `protobuf:"varint,4,opt,name=restrictions,proto3,enum=signal.backup.CallLink_Restrictions" json:"restrictions,omitempty"` ExpirationMs uint64 `protobuf:"varint,5,opt,name=expirationMs,proto3" json:"expirationMs,omitempty"` + Epoch []byte `protobuf:"bytes,6,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"` // May be absent/empty for older links unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3302,6 +3311,13 @@ func (x *CallLink) GetExpirationMs() uint64 { return 0 } +func (x *CallLink) GetEpoch() []byte { + if x != nil { + return x.Epoch + } + return nil +} + type AdHocCall struct { state protoimpl.MessageState `protogen:"open.v1"` CallId uint64 `protobuf:"varint,1,opt,name=callId,proto3" json:"callId,omitempty"` @@ -3564,7 +3580,6 @@ type ChatItem struct { // *ChatItem_ViewOnceMessage // *ChatItem_DirectStoryReplyMessage // *ChatItem_Poll - // *ChatItem_AdminDeletedMessage Item isChatItem_Item `protobuf_oneof:"item"` PinDetails *ChatItem_PinDetails `protobuf:"bytes,21,opt,name=pinDetails,proto3" json:"pinDetails,omitempty"` // only set if message is pinned unknownFields protoimpl.UnknownFields @@ -3781,15 +3796,6 @@ func (x *ChatItem) GetPoll() *Poll { return nil } -func (x *ChatItem) GetAdminDeletedMessage() *AdminDeletedMessage { - if x != nil { - if x, ok := x.Item.(*ChatItem_AdminDeletedMessage); ok { - return x.AdminDeletedMessage - } - } - return nil -} - func (x *ChatItem) GetPinDetails() *ChatItem_PinDetails { if x != nil { return x.PinDetails @@ -3863,10 +3869,6 @@ type ChatItem_Poll struct { Poll *Poll `protobuf:"bytes,20,opt,name=poll,proto3,oneof"` } -type ChatItem_AdminDeletedMessage struct { - AdminDeletedMessage *AdminDeletedMessage `protobuf:"bytes,22,opt,name=adminDeletedMessage,proto3,oneof"` -} - func (*ChatItem_StandardMessage) isChatItem_Item() {} func (*ChatItem_ContactMessage) isChatItem_Item() {} @@ -3887,8 +3889,6 @@ func (*ChatItem_DirectStoryReplyMessage) isChatItem_Item() {} func (*ChatItem_Poll) isChatItem_Item() {} -func (*ChatItem_AdminDeletedMessage) isChatItem_Item() {} - type SendStatus struct { state protoimpl.MessageState `protogen:"open.v1"` RecipientId uint64 `protobuf:"varint,1,opt,name=recipientId,proto3" json:"recipientId,omitempty"` @@ -5355,50 +5355,6 @@ func (x *Poll) GetReactions() []*Reaction { return nil } -type AdminDeletedMessage struct { - state protoimpl.MessageState `protogen:"open.v1"` - AdminId uint64 `protobuf:"varint,1,opt,name=adminId,proto3" json:"adminId,omitempty"` // id of the admin that deleted the message - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *AdminDeletedMessage) Reset() { - *x = AdminDeletedMessage{} - mi := &file_backuppb_Backup_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *AdminDeletedMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AdminDeletedMessage) ProtoMessage() {} - -func (x *AdminDeletedMessage) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[33] - 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 AdminDeletedMessage.ProtoReflect.Descriptor instead. -func (*AdminDeletedMessage) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{33} -} - -func (x *AdminDeletedMessage) GetAdminId() uint64 { - if x != nil { - return x.AdminId - } - return 0 -} - type ChatUpdateMessage struct { state protoimpl.MessageState `protogen:"open.v1"` // If unset, importers should ignore the update message without throwing an error. @@ -5423,7 +5379,7 @@ type ChatUpdateMessage struct { func (x *ChatUpdateMessage) Reset() { *x = ChatUpdateMessage{} - mi := &file_backuppb_Backup_proto_msgTypes[34] + mi := &file_backuppb_Backup_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5435,7 +5391,7 @@ func (x *ChatUpdateMessage) String() string { func (*ChatUpdateMessage) ProtoMessage() {} func (x *ChatUpdateMessage) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[34] + mi := &file_backuppb_Backup_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5448,7 +5404,7 @@ func (x *ChatUpdateMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatUpdateMessage.ProtoReflect.Descriptor instead. func (*ChatUpdateMessage) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{34} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{33} } func (x *ChatUpdateMessage) GetUpdate() isChatUpdateMessage_Update { @@ -5641,7 +5597,7 @@ type IndividualCall struct { func (x *IndividualCall) Reset() { *x = IndividualCall{} - mi := &file_backuppb_Backup_proto_msgTypes[35] + mi := &file_backuppb_Backup_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5653,7 +5609,7 @@ func (x *IndividualCall) String() string { func (*IndividualCall) ProtoMessage() {} func (x *IndividualCall) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[35] + mi := &file_backuppb_Backup_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5666,7 +5622,7 @@ func (x *IndividualCall) ProtoReflect() protoreflect.Message { // Deprecated: Use IndividualCall.ProtoReflect.Descriptor instead. func (*IndividualCall) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{35} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{34} } func (x *IndividualCall) GetCallId() uint64 { @@ -5726,7 +5682,7 @@ type GroupCall struct { func (x *GroupCall) Reset() { *x = GroupCall{} - mi := &file_backuppb_Backup_proto_msgTypes[36] + mi := &file_backuppb_Backup_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5738,7 +5694,7 @@ func (x *GroupCall) String() string { func (*GroupCall) ProtoMessage() {} func (x *GroupCall) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[36] + mi := &file_backuppb_Backup_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5751,7 +5707,7 @@ func (x *GroupCall) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupCall.ProtoReflect.Descriptor instead. func (*GroupCall) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{36} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{35} } func (x *GroupCall) GetCallId() uint64 { @@ -5812,7 +5768,7 @@ type SimpleChatUpdate struct { func (x *SimpleChatUpdate) Reset() { *x = SimpleChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[37] + mi := &file_backuppb_Backup_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5824,7 +5780,7 @@ func (x *SimpleChatUpdate) String() string { func (*SimpleChatUpdate) ProtoMessage() {} func (x *SimpleChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[37] + mi := &file_backuppb_Backup_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5837,7 +5793,7 @@ func (x *SimpleChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SimpleChatUpdate.ProtoReflect.Descriptor instead. func (*SimpleChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{37} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{36} } func (x *SimpleChatUpdate) GetType() SimpleChatUpdate_Type { @@ -5858,7 +5814,7 @@ type ExpirationTimerChatUpdate struct { func (x *ExpirationTimerChatUpdate) Reset() { *x = ExpirationTimerChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[38] + mi := &file_backuppb_Backup_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5870,7 +5826,7 @@ func (x *ExpirationTimerChatUpdate) String() string { func (*ExpirationTimerChatUpdate) ProtoMessage() {} func (x *ExpirationTimerChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[38] + mi := &file_backuppb_Backup_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5883,7 +5839,7 @@ func (x *ExpirationTimerChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpirationTimerChatUpdate.ProtoReflect.Descriptor instead. func (*ExpirationTimerChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{38} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{37} } func (x *ExpirationTimerChatUpdate) GetExpiresInMs() uint64 { @@ -5903,7 +5859,7 @@ type ProfileChangeChatUpdate struct { func (x *ProfileChangeChatUpdate) Reset() { *x = ProfileChangeChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[39] + mi := &file_backuppb_Backup_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5915,7 +5871,7 @@ func (x *ProfileChangeChatUpdate) String() string { func (*ProfileChangeChatUpdate) ProtoMessage() {} func (x *ProfileChangeChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[39] + mi := &file_backuppb_Backup_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5928,7 +5884,7 @@ func (x *ProfileChangeChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileChangeChatUpdate.ProtoReflect.Descriptor instead. func (*ProfileChangeChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{39} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{38} } func (x *ProfileChangeChatUpdate) GetPreviousName() string { @@ -5960,7 +5916,7 @@ type LearnedProfileChatUpdate struct { func (x *LearnedProfileChatUpdate) Reset() { *x = LearnedProfileChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[40] + mi := &file_backuppb_Backup_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5972,7 +5928,7 @@ func (x *LearnedProfileChatUpdate) String() string { func (*LearnedProfileChatUpdate) ProtoMessage() {} func (x *LearnedProfileChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[40] + mi := &file_backuppb_Backup_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5985,7 +5941,7 @@ func (x *LearnedProfileChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use LearnedProfileChatUpdate.ProtoReflect.Descriptor instead. func (*LearnedProfileChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{40} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{39} } func (x *LearnedProfileChatUpdate) GetPreviousName() isLearnedProfileChatUpdate_PreviousName { @@ -6038,7 +5994,7 @@ type ThreadMergeChatUpdate struct { func (x *ThreadMergeChatUpdate) Reset() { *x = ThreadMergeChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[41] + mi := &file_backuppb_Backup_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6050,7 +6006,7 @@ func (x *ThreadMergeChatUpdate) String() string { func (*ThreadMergeChatUpdate) ProtoMessage() {} func (x *ThreadMergeChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[41] + mi := &file_backuppb_Backup_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6063,7 +6019,7 @@ func (x *ThreadMergeChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ThreadMergeChatUpdate.ProtoReflect.Descriptor instead. func (*ThreadMergeChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{41} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{40} } func (x *ThreadMergeChatUpdate) GetPreviousE164() uint64 { @@ -6082,7 +6038,7 @@ type SessionSwitchoverChatUpdate struct { func (x *SessionSwitchoverChatUpdate) Reset() { *x = SessionSwitchoverChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[42] + mi := &file_backuppb_Backup_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6094,7 +6050,7 @@ func (x *SessionSwitchoverChatUpdate) String() string { func (*SessionSwitchoverChatUpdate) ProtoMessage() {} func (x *SessionSwitchoverChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[42] + mi := &file_backuppb_Backup_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6107,7 +6063,7 @@ func (x *SessionSwitchoverChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionSwitchoverChatUpdate.ProtoReflect.Descriptor instead. func (*SessionSwitchoverChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{42} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{41} } func (x *SessionSwitchoverChatUpdate) GetE164() uint64 { @@ -6128,7 +6084,7 @@ type GroupChangeChatUpdate struct { func (x *GroupChangeChatUpdate) Reset() { *x = GroupChangeChatUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[43] + mi := &file_backuppb_Backup_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6140,7 +6096,7 @@ func (x *GroupChangeChatUpdate) String() string { func (*GroupChangeChatUpdate) ProtoMessage() {} func (x *GroupChangeChatUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[43] + mi := &file_backuppb_Backup_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6153,7 +6109,7 @@ func (x *GroupChangeChatUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupChangeChatUpdate.ProtoReflect.Descriptor instead. func (*GroupChangeChatUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{43} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{42} } func (x *GroupChangeChatUpdate) GetUpdates() []*GroupChangeChatUpdate_Update { @@ -6172,7 +6128,7 @@ type GenericGroupUpdate struct { func (x *GenericGroupUpdate) Reset() { *x = GenericGroupUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[44] + mi := &file_backuppb_Backup_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6184,7 +6140,7 @@ func (x *GenericGroupUpdate) String() string { func (*GenericGroupUpdate) ProtoMessage() {} func (x *GenericGroupUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[44] + mi := &file_backuppb_Backup_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6197,7 +6153,7 @@ func (x *GenericGroupUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GenericGroupUpdate.ProtoReflect.Descriptor instead. func (*GenericGroupUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{44} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{43} } func (x *GenericGroupUpdate) GetUpdaterAci() []byte { @@ -6216,7 +6172,7 @@ type GroupCreationUpdate struct { func (x *GroupCreationUpdate) Reset() { *x = GroupCreationUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[45] + mi := &file_backuppb_Backup_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6228,7 +6184,7 @@ func (x *GroupCreationUpdate) String() string { func (*GroupCreationUpdate) ProtoMessage() {} func (x *GroupCreationUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[45] + mi := &file_backuppb_Backup_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6241,7 +6197,7 @@ func (x *GroupCreationUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupCreationUpdate.ProtoReflect.Descriptor instead. func (*GroupCreationUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{45} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{44} } func (x *GroupCreationUpdate) GetUpdaterAci() []byte { @@ -6262,7 +6218,7 @@ type GroupNameUpdate struct { func (x *GroupNameUpdate) Reset() { *x = GroupNameUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[46] + mi := &file_backuppb_Backup_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6274,7 +6230,7 @@ func (x *GroupNameUpdate) String() string { func (*GroupNameUpdate) ProtoMessage() {} func (x *GroupNameUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[46] + mi := &file_backuppb_Backup_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6287,7 +6243,7 @@ func (x *GroupNameUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupNameUpdate.ProtoReflect.Descriptor instead. func (*GroupNameUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{46} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{45} } func (x *GroupNameUpdate) GetUpdaterAci() []byte { @@ -6314,7 +6270,7 @@ type GroupAvatarUpdate struct { func (x *GroupAvatarUpdate) Reset() { *x = GroupAvatarUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[47] + mi := &file_backuppb_Backup_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6326,7 +6282,7 @@ func (x *GroupAvatarUpdate) String() string { func (*GroupAvatarUpdate) ProtoMessage() {} func (x *GroupAvatarUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[47] + mi := &file_backuppb_Backup_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6339,7 +6295,7 @@ func (x *GroupAvatarUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupAvatarUpdate.ProtoReflect.Descriptor instead. func (*GroupAvatarUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{47} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{46} } func (x *GroupAvatarUpdate) GetUpdaterAci() []byte { @@ -6367,7 +6323,7 @@ type GroupDescriptionUpdate struct { func (x *GroupDescriptionUpdate) Reset() { *x = GroupDescriptionUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[48] + mi := &file_backuppb_Backup_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6379,7 +6335,7 @@ func (x *GroupDescriptionUpdate) String() string { func (*GroupDescriptionUpdate) ProtoMessage() {} func (x *GroupDescriptionUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[48] + mi := &file_backuppb_Backup_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6392,7 +6348,7 @@ func (x *GroupDescriptionUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupDescriptionUpdate.ProtoReflect.Descriptor instead. func (*GroupDescriptionUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{48} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{47} } func (x *GroupDescriptionUpdate) GetUpdaterAci() []byte { @@ -6419,7 +6375,7 @@ type GroupMembershipAccessLevelChangeUpdate struct { func (x *GroupMembershipAccessLevelChangeUpdate) Reset() { *x = GroupMembershipAccessLevelChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[49] + mi := &file_backuppb_Backup_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6431,7 +6387,7 @@ func (x *GroupMembershipAccessLevelChangeUpdate) String() string { func (*GroupMembershipAccessLevelChangeUpdate) ProtoMessage() {} func (x *GroupMembershipAccessLevelChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[49] + mi := &file_backuppb_Backup_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6444,7 +6400,7 @@ func (x *GroupMembershipAccessLevelChangeUpdate) ProtoReflect() protoreflect.Mes // Deprecated: Use GroupMembershipAccessLevelChangeUpdate.ProtoReflect.Descriptor instead. func (*GroupMembershipAccessLevelChangeUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{49} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{48} } func (x *GroupMembershipAccessLevelChangeUpdate) GetUpdaterAci() []byte { @@ -6471,7 +6427,7 @@ type GroupAttributesAccessLevelChangeUpdate struct { func (x *GroupAttributesAccessLevelChangeUpdate) Reset() { *x = GroupAttributesAccessLevelChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[50] + mi := &file_backuppb_Backup_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6483,7 +6439,7 @@ func (x *GroupAttributesAccessLevelChangeUpdate) String() string { func (*GroupAttributesAccessLevelChangeUpdate) ProtoMessage() {} func (x *GroupAttributesAccessLevelChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[50] + mi := &file_backuppb_Backup_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6496,7 +6452,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{50} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{49} } func (x *GroupAttributesAccessLevelChangeUpdate) GetUpdaterAci() []byte { @@ -6513,102 +6469,6 @@ 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"` @@ -6619,7 +6479,7 @@ type GroupAnnouncementOnlyChangeUpdate struct { func (x *GroupAnnouncementOnlyChangeUpdate) Reset() { *x = GroupAnnouncementOnlyChangeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[53] + mi := &file_backuppb_Backup_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6631,7 +6491,7 @@ func (x *GroupAnnouncementOnlyChangeUpdate) String() string { func (*GroupAnnouncementOnlyChangeUpdate) ProtoMessage() {} func (x *GroupAnnouncementOnlyChangeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[53] + mi := &file_backuppb_Backup_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6644,7 +6504,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{53} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{50} } func (x *GroupAnnouncementOnlyChangeUpdate) GetUpdaterAci() []byte { @@ -6673,7 +6533,7 @@ type GroupAdminStatusUpdate struct { func (x *GroupAdminStatusUpdate) Reset() { *x = GroupAdminStatusUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[54] + mi := &file_backuppb_Backup_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6685,7 +6545,7 @@ func (x *GroupAdminStatusUpdate) String() string { func (*GroupAdminStatusUpdate) ProtoMessage() {} func (x *GroupAdminStatusUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[54] + mi := &file_backuppb_Backup_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6698,7 +6558,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{54} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{51} } func (x *GroupAdminStatusUpdate) GetUpdaterAci() []byte { @@ -6731,7 +6591,7 @@ type GroupMemberLeftUpdate struct { func (x *GroupMemberLeftUpdate) Reset() { *x = GroupMemberLeftUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[55] + mi := &file_backuppb_Backup_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6743,7 +6603,7 @@ func (x *GroupMemberLeftUpdate) String() string { func (*GroupMemberLeftUpdate) ProtoMessage() {} func (x *GroupMemberLeftUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[55] + mi := &file_backuppb_Backup_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6756,7 +6616,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{55} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{52} } func (x *GroupMemberLeftUpdate) GetAci() []byte { @@ -6776,7 +6636,7 @@ type GroupMemberRemovedUpdate struct { func (x *GroupMemberRemovedUpdate) Reset() { *x = GroupMemberRemovedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[56] + mi := &file_backuppb_Backup_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6788,7 +6648,7 @@ func (x *GroupMemberRemovedUpdate) String() string { func (*GroupMemberRemovedUpdate) ProtoMessage() {} func (x *GroupMemberRemovedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[56] + mi := &file_backuppb_Backup_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6801,7 +6661,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{56} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{53} } func (x *GroupMemberRemovedUpdate) GetRemoverAci() []byte { @@ -6827,7 +6687,7 @@ type SelfInvitedToGroupUpdate struct { func (x *SelfInvitedToGroupUpdate) Reset() { *x = SelfInvitedToGroupUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[57] + mi := &file_backuppb_Backup_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6839,7 +6699,7 @@ func (x *SelfInvitedToGroupUpdate) String() string { func (*SelfInvitedToGroupUpdate) ProtoMessage() {} func (x *SelfInvitedToGroupUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[57] + mi := &file_backuppb_Backup_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6852,7 +6712,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{57} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{54} } func (x *SelfInvitedToGroupUpdate) GetInviterAci() []byte { @@ -6872,7 +6732,7 @@ type SelfInvitedOtherUserToGroupUpdate struct { func (x *SelfInvitedOtherUserToGroupUpdate) Reset() { *x = SelfInvitedOtherUserToGroupUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[58] + mi := &file_backuppb_Backup_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6884,7 +6744,7 @@ func (x *SelfInvitedOtherUserToGroupUpdate) String() string { func (*SelfInvitedOtherUserToGroupUpdate) ProtoMessage() {} func (x *SelfInvitedOtherUserToGroupUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[58] + mi := &file_backuppb_Backup_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6897,7 +6757,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{58} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{55} } func (x *SelfInvitedOtherUserToGroupUpdate) GetInviteeServiceId() []byte { @@ -6918,7 +6778,7 @@ type GroupUnknownInviteeUpdate struct { func (x *GroupUnknownInviteeUpdate) Reset() { *x = GroupUnknownInviteeUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[59] + mi := &file_backuppb_Backup_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6930,7 +6790,7 @@ func (x *GroupUnknownInviteeUpdate) String() string { func (*GroupUnknownInviteeUpdate) ProtoMessage() {} func (x *GroupUnknownInviteeUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[59] + mi := &file_backuppb_Backup_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6943,7 +6803,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{59} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{56} } func (x *GroupUnknownInviteeUpdate) GetInviterAci() []byte { @@ -6970,7 +6830,7 @@ type GroupInvitationAcceptedUpdate struct { func (x *GroupInvitationAcceptedUpdate) Reset() { *x = GroupInvitationAcceptedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[60] + mi := &file_backuppb_Backup_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6982,7 +6842,7 @@ func (x *GroupInvitationAcceptedUpdate) String() string { func (*GroupInvitationAcceptedUpdate) ProtoMessage() {} func (x *GroupInvitationAcceptedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[60] + mi := &file_backuppb_Backup_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6995,7 +6855,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{60} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{57} } func (x *GroupInvitationAcceptedUpdate) GetInviterAci() []byte { @@ -7023,7 +6883,7 @@ type GroupInvitationDeclinedUpdate struct { func (x *GroupInvitationDeclinedUpdate) Reset() { *x = GroupInvitationDeclinedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[61] + mi := &file_backuppb_Backup_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7035,7 +6895,7 @@ func (x *GroupInvitationDeclinedUpdate) String() string { func (*GroupInvitationDeclinedUpdate) ProtoMessage() {} func (x *GroupInvitationDeclinedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[61] + mi := &file_backuppb_Backup_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7048,7 +6908,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{61} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{58} } func (x *GroupInvitationDeclinedUpdate) GetInviterAci() []byte { @@ -7074,7 +6934,7 @@ type GroupMemberJoinedUpdate struct { func (x *GroupMemberJoinedUpdate) Reset() { *x = GroupMemberJoinedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[62] + mi := &file_backuppb_Backup_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7086,7 +6946,7 @@ func (x *GroupMemberJoinedUpdate) String() string { func (*GroupMemberJoinedUpdate) ProtoMessage() {} func (x *GroupMemberJoinedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[62] + mi := &file_backuppb_Backup_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7099,7 +6959,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{62} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{59} } func (x *GroupMemberJoinedUpdate) GetNewMemberAci() []byte { @@ -7122,7 +6982,7 @@ type GroupMemberAddedUpdate struct { func (x *GroupMemberAddedUpdate) Reset() { *x = GroupMemberAddedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[63] + mi := &file_backuppb_Backup_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7134,7 +6994,7 @@ func (x *GroupMemberAddedUpdate) String() string { func (*GroupMemberAddedUpdate) ProtoMessage() {} func (x *GroupMemberAddedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[63] + mi := &file_backuppb_Backup_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7147,7 +7007,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{63} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{60} } func (x *GroupMemberAddedUpdate) GetUpdaterAci() []byte { @@ -7188,7 +7048,7 @@ type GroupSelfInvitationRevokedUpdate struct { func (x *GroupSelfInvitationRevokedUpdate) Reset() { *x = GroupSelfInvitationRevokedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[64] + mi := &file_backuppb_Backup_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7200,7 +7060,7 @@ func (x *GroupSelfInvitationRevokedUpdate) String() string { func (*GroupSelfInvitationRevokedUpdate) ProtoMessage() {} func (x *GroupSelfInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[64] + mi := &file_backuppb_Backup_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7213,7 +7073,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{64} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{61} } func (x *GroupSelfInvitationRevokedUpdate) GetRevokerAci() []byte { @@ -7239,7 +7099,7 @@ type GroupInvitationRevokedUpdate struct { func (x *GroupInvitationRevokedUpdate) Reset() { *x = GroupInvitationRevokedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[65] + mi := &file_backuppb_Backup_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7251,7 +7111,7 @@ func (x *GroupInvitationRevokedUpdate) String() string { func (*GroupInvitationRevokedUpdate) ProtoMessage() {} func (x *GroupInvitationRevokedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[65] + mi := &file_backuppb_Backup_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7264,7 +7124,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{65} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{62} } func (x *GroupInvitationRevokedUpdate) GetUpdaterAci() []byte { @@ -7290,7 +7150,7 @@ type GroupJoinRequestUpdate struct { func (x *GroupJoinRequestUpdate) Reset() { *x = GroupJoinRequestUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[66] + mi := &file_backuppb_Backup_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7302,7 +7162,7 @@ func (x *GroupJoinRequestUpdate) String() string { func (*GroupJoinRequestUpdate) ProtoMessage() {} func (x *GroupJoinRequestUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[66] + mi := &file_backuppb_Backup_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7315,7 +7175,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{66} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{63} } func (x *GroupJoinRequestUpdate) GetRequestorAci() []byte { @@ -7337,7 +7197,7 @@ type GroupJoinRequestApprovalUpdate struct { func (x *GroupJoinRequestApprovalUpdate) Reset() { *x = GroupJoinRequestApprovalUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[67] + mi := &file_backuppb_Backup_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7349,7 +7209,7 @@ func (x *GroupJoinRequestApprovalUpdate) String() string { func (*GroupJoinRequestApprovalUpdate) ProtoMessage() {} func (x *GroupJoinRequestApprovalUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[67] + mi := &file_backuppb_Backup_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7362,7 +7222,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{67} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{64} } func (x *GroupJoinRequestApprovalUpdate) GetRequestorAci() []byte { @@ -7395,7 +7255,7 @@ type GroupJoinRequestCanceledUpdate struct { func (x *GroupJoinRequestCanceledUpdate) Reset() { *x = GroupJoinRequestCanceledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[68] + mi := &file_backuppb_Backup_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7407,7 +7267,7 @@ func (x *GroupJoinRequestCanceledUpdate) String() string { func (*GroupJoinRequestCanceledUpdate) ProtoMessage() {} func (x *GroupJoinRequestCanceledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[68] + mi := &file_backuppb_Backup_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7420,7 +7280,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{68} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{65} } func (x *GroupJoinRequestCanceledUpdate) GetRequestorAci() []byte { @@ -7446,7 +7306,7 @@ type GroupSequenceOfRequestsAndCancelsUpdate struct { func (x *GroupSequenceOfRequestsAndCancelsUpdate) Reset() { *x = GroupSequenceOfRequestsAndCancelsUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[69] + mi := &file_backuppb_Backup_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7458,7 +7318,7 @@ func (x *GroupSequenceOfRequestsAndCancelsUpdate) String() string { func (*GroupSequenceOfRequestsAndCancelsUpdate) ProtoMessage() {} func (x *GroupSequenceOfRequestsAndCancelsUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[69] + mi := &file_backuppb_Backup_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7471,7 +7331,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{69} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{66} } func (x *GroupSequenceOfRequestsAndCancelsUpdate) GetRequestorAci() []byte { @@ -7497,7 +7357,7 @@ type GroupInviteLinkResetUpdate struct { func (x *GroupInviteLinkResetUpdate) Reset() { *x = GroupInviteLinkResetUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[70] + mi := &file_backuppb_Backup_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7509,7 +7369,7 @@ func (x *GroupInviteLinkResetUpdate) String() string { func (*GroupInviteLinkResetUpdate) ProtoMessage() {} func (x *GroupInviteLinkResetUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[70] + mi := &file_backuppb_Backup_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7522,7 +7382,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{70} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{67} } func (x *GroupInviteLinkResetUpdate) GetUpdaterAci() []byte { @@ -7542,7 +7402,7 @@ type GroupInviteLinkEnabledUpdate struct { func (x *GroupInviteLinkEnabledUpdate) Reset() { *x = GroupInviteLinkEnabledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[71] + mi := &file_backuppb_Backup_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7554,7 +7414,7 @@ func (x *GroupInviteLinkEnabledUpdate) String() string { func (*GroupInviteLinkEnabledUpdate) ProtoMessage() {} func (x *GroupInviteLinkEnabledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[71] + mi := &file_backuppb_Backup_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7567,7 +7427,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{71} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{68} } func (x *GroupInviteLinkEnabledUpdate) GetUpdaterAci() []byte { @@ -7594,7 +7454,7 @@ type GroupInviteLinkAdminApprovalUpdate struct { func (x *GroupInviteLinkAdminApprovalUpdate) Reset() { *x = GroupInviteLinkAdminApprovalUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[72] + mi := &file_backuppb_Backup_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7606,7 +7466,7 @@ func (x *GroupInviteLinkAdminApprovalUpdate) String() string { func (*GroupInviteLinkAdminApprovalUpdate) ProtoMessage() {} func (x *GroupInviteLinkAdminApprovalUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[72] + mi := &file_backuppb_Backup_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7619,7 +7479,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{72} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{69} } func (x *GroupInviteLinkAdminApprovalUpdate) GetUpdaterAci() []byte { @@ -7645,7 +7505,7 @@ type GroupInviteLinkDisabledUpdate struct { func (x *GroupInviteLinkDisabledUpdate) Reset() { *x = GroupInviteLinkDisabledUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[73] + mi := &file_backuppb_Backup_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7657,7 +7517,7 @@ func (x *GroupInviteLinkDisabledUpdate) String() string { func (*GroupInviteLinkDisabledUpdate) ProtoMessage() {} func (x *GroupInviteLinkDisabledUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[73] + mi := &file_backuppb_Backup_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7670,7 +7530,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{73} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{70} } func (x *GroupInviteLinkDisabledUpdate) GetUpdaterAci() []byte { @@ -7689,7 +7549,7 @@ type GroupMemberJoinedByLinkUpdate struct { func (x *GroupMemberJoinedByLinkUpdate) Reset() { *x = GroupMemberJoinedByLinkUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[74] + mi := &file_backuppb_Backup_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7701,7 +7561,7 @@ func (x *GroupMemberJoinedByLinkUpdate) String() string { func (*GroupMemberJoinedByLinkUpdate) ProtoMessage() {} func (x *GroupMemberJoinedByLinkUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[74] + mi := &file_backuppb_Backup_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7714,7 +7574,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{74} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{71} } func (x *GroupMemberJoinedByLinkUpdate) GetNewMemberAci() []byte { @@ -7733,7 +7593,7 @@ type GroupV2MigrationUpdate struct { func (x *GroupV2MigrationUpdate) Reset() { *x = GroupV2MigrationUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[75] + mi := &file_backuppb_Backup_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7745,7 +7605,7 @@ func (x *GroupV2MigrationUpdate) String() string { func (*GroupV2MigrationUpdate) ProtoMessage() {} func (x *GroupV2MigrationUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[75] + mi := &file_backuppb_Backup_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7758,7 +7618,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{75} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{72} } // Another user migrated gv1->gv2 but was unable to add @@ -7771,7 +7631,7 @@ type GroupV2MigrationSelfInvitedUpdate struct { func (x *GroupV2MigrationSelfInvitedUpdate) Reset() { *x = GroupV2MigrationSelfInvitedUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[76] + mi := &file_backuppb_Backup_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7783,7 +7643,7 @@ func (x *GroupV2MigrationSelfInvitedUpdate) String() string { func (*GroupV2MigrationSelfInvitedUpdate) ProtoMessage() {} func (x *GroupV2MigrationSelfInvitedUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[76] + mi := &file_backuppb_Backup_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7796,7 +7656,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{76} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{73} } // The local user migrated gv1->gv2 but was unable to @@ -7811,7 +7671,7 @@ type GroupV2MigrationInvitedMembersUpdate struct { func (x *GroupV2MigrationInvitedMembersUpdate) Reset() { *x = GroupV2MigrationInvitedMembersUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[77] + mi := &file_backuppb_Backup_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7823,7 +7683,7 @@ func (x *GroupV2MigrationInvitedMembersUpdate) String() string { func (*GroupV2MigrationInvitedMembersUpdate) ProtoMessage() {} func (x *GroupV2MigrationInvitedMembersUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[77] + mi := &file_backuppb_Backup_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7836,7 +7696,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{77} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{74} } func (x *GroupV2MigrationInvitedMembersUpdate) GetInvitedMembersCount() uint32 { @@ -7858,7 +7718,7 @@ type GroupV2MigrationDroppedMembersUpdate struct { func (x *GroupV2MigrationDroppedMembersUpdate) Reset() { *x = GroupV2MigrationDroppedMembersUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[78] + mi := &file_backuppb_Backup_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7870,7 +7730,7 @@ func (x *GroupV2MigrationDroppedMembersUpdate) String() string { func (*GroupV2MigrationDroppedMembersUpdate) ProtoMessage() {} func (x *GroupV2MigrationDroppedMembersUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[78] + mi := &file_backuppb_Backup_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7883,7 +7743,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{78} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{75} } func (x *GroupV2MigrationDroppedMembersUpdate) GetDroppedMembersCount() uint32 { @@ -7904,7 +7764,7 @@ type GroupExpirationTimerUpdate struct { func (x *GroupExpirationTimerUpdate) Reset() { *x = GroupExpirationTimerUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[79] + mi := &file_backuppb_Backup_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7916,7 +7776,7 @@ func (x *GroupExpirationTimerUpdate) String() string { func (*GroupExpirationTimerUpdate) ProtoMessage() {} func (x *GroupExpirationTimerUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[79] + mi := &file_backuppb_Backup_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7929,7 +7789,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{79} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{76} } func (x *GroupExpirationTimerUpdate) GetExpiresInMs() uint64 { @@ -7956,7 +7816,7 @@ type PollTerminateUpdate struct { func (x *PollTerminateUpdate) Reset() { *x = PollTerminateUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[80] + mi := &file_backuppb_Backup_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7968,7 +7828,7 @@ func (x *PollTerminateUpdate) String() string { func (*PollTerminateUpdate) ProtoMessage() {} func (x *PollTerminateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[80] + mi := &file_backuppb_Backup_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7981,7 +7841,7 @@ func (x *PollTerminateUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use PollTerminateUpdate.ProtoReflect.Descriptor instead. func (*PollTerminateUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{80} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{77} } func (x *PollTerminateUpdate) GetTargetSentTimestamp() uint64 { @@ -8008,7 +7868,7 @@ type PinMessageUpdate struct { func (x *PinMessageUpdate) Reset() { *x = PinMessageUpdate{} - mi := &file_backuppb_Backup_proto_msgTypes[81] + mi := &file_backuppb_Backup_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8020,7 +7880,7 @@ func (x *PinMessageUpdate) String() string { func (*PinMessageUpdate) ProtoMessage() {} func (x *PinMessageUpdate) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[81] + mi := &file_backuppb_Backup_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8033,7 +7893,7 @@ func (x *PinMessageUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use PinMessageUpdate.ProtoReflect.Descriptor instead. func (*PinMessageUpdate) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{81} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{78} } func (x *PinMessageUpdate) GetTargetSentTimestamp() uint64 { @@ -8060,7 +7920,7 @@ type StickerPack struct { func (x *StickerPack) Reset() { *x = StickerPack{} - mi := &file_backuppb_Backup_proto_msgTypes[82] + mi := &file_backuppb_Backup_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8072,7 +7932,7 @@ func (x *StickerPack) String() string { func (*StickerPack) ProtoMessage() {} func (x *StickerPack) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[82] + mi := &file_backuppb_Backup_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8085,7 +7945,7 @@ func (x *StickerPack) ProtoReflect() protoreflect.Message { // Deprecated: Use StickerPack.ProtoReflect.Descriptor instead. func (*StickerPack) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{82} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{79} } func (x *StickerPack) GetPackId() []byte { @@ -8126,7 +7986,7 @@ type ChatStyle struct { func (x *ChatStyle) Reset() { *x = ChatStyle{} - mi := &file_backuppb_Backup_proto_msgTypes[83] + mi := &file_backuppb_Backup_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8138,7 +7998,7 @@ func (x *ChatStyle) String() string { func (*ChatStyle) ProtoMessage() {} func (x *ChatStyle) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[83] + mi := &file_backuppb_Backup_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8151,7 +8011,7 @@ func (x *ChatStyle) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatStyle.ProtoReflect.Descriptor instead. func (*ChatStyle) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80} } func (x *ChatStyle) GetWallpaper() isChatStyle_Wallpaper { @@ -8283,7 +8143,7 @@ type NotificationProfile struct { func (x *NotificationProfile) Reset() { *x = NotificationProfile{} - mi := &file_backuppb_Backup_proto_msgTypes[84] + mi := &file_backuppb_Backup_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8295,7 +8155,7 @@ func (x *NotificationProfile) String() string { func (*NotificationProfile) ProtoMessage() {} func (x *NotificationProfile) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[84] + mi := &file_backuppb_Backup_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8308,7 +8168,7 @@ func (x *NotificationProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use NotificationProfile.ProtoReflect.Descriptor instead. func (*NotificationProfile) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{84} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{81} } func (x *NotificationProfile) GetName() string { @@ -8414,7 +8274,7 @@ type ChatFolder struct { func (x *ChatFolder) Reset() { *x = ChatFolder{} - mi := &file_backuppb_Backup_proto_msgTypes[85] + mi := &file_backuppb_Backup_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8426,7 +8286,7 @@ func (x *ChatFolder) String() string { func (*ChatFolder) ProtoMessage() {} func (x *ChatFolder) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[85] + mi := &file_backuppb_Backup_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8439,7 +8299,7 @@ func (x *ChatFolder) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatFolder.ProtoReflect.Descriptor instead. func (*ChatFolder) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{85} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{82} } func (x *ChatFolder) GetName() string { @@ -8516,7 +8376,7 @@ type AccountData_UsernameLink struct { func (x *AccountData_UsernameLink) Reset() { *x = AccountData_UsernameLink{} - mi := &file_backuppb_Backup_proto_msgTypes[86] + mi := &file_backuppb_Backup_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8528,7 +8388,7 @@ func (x *AccountData_UsernameLink) String() string { func (*AccountData_UsernameLink) ProtoMessage() {} func (x *AccountData_UsernameLink) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[86] + mi := &file_backuppb_Backup_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8577,7 +8437,7 @@ type AccountData_AutoDownloadSettings struct { func (x *AccountData_AutoDownloadSettings) Reset() { *x = AccountData_AutoDownloadSettings{} - mi := &file_backuppb_Backup_proto_msgTypes[87] + mi := &file_backuppb_Backup_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8589,7 +8449,7 @@ func (x *AccountData_AutoDownloadSettings) String() string { func (*AccountData_AutoDownloadSettings) ProtoMessage() {} func (x *AccountData_AutoDownloadSettings) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[87] + mi := &file_backuppb_Backup_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8656,23 +8516,22 @@ type AccountData_AccountSettings struct { CustomChatColors []*ChatStyle_CustomChatColor `protobuf:"bytes,19,rep,name=customChatColors,proto3" json:"customChatColors,omitempty"` OptimizeOnDeviceStorage bool `protobuf:"varint,20,opt,name=optimizeOnDeviceStorage,proto3" json:"optimizeOnDeviceStorage,omitempty"` // See zkgroup for integer particular values. Unset if backups are not enabled. - BackupTier *uint64 `protobuf:"varint,21,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` - DefaultSentMediaQuality AccountData_SentMediaQuality `protobuf:"varint,23,opt,name=defaultSentMediaQuality,proto3,enum=signal.backup.AccountData_SentMediaQuality" json:"defaultSentMediaQuality,omitempty"` - AutoDownloadSettings *AccountData_AutoDownloadSettings `protobuf:"bytes,24,opt,name=autoDownloadSettings,proto3" json:"autoDownloadSettings,omitempty"` - ScreenLockTimeoutMinutes *uint32 `protobuf:"varint,26,opt,name=screenLockTimeoutMinutes,proto3,oneof" json:"screenLockTimeoutMinutes,omitempty"` // If unset, consider screen lock to be disabled. - PinReminders *bool `protobuf:"varint,27,opt,name=pinReminders,proto3,oneof" json:"pinReminders,omitempty"` // If unset, consider pin reminders to be enabled. - AppTheme AccountData_AppTheme `protobuf:"varint,28,opt,name=appTheme,proto3,enum=signal.backup.AccountData_AppTheme" json:"appTheme,omitempty"` // If unset, treat the same as "Unknown" case - CallsUseLessDataSetting AccountData_CallsUseLessDataSetting `protobuf:"varint,29,opt,name=callsUseLessDataSetting,proto3,enum=signal.backup.AccountData_CallsUseLessDataSetting" json:"callsUseLessDataSetting,omitempty"` // If unset, treat the same as "Unknown" case - AllowSealedSenderFromAnyone bool `protobuf:"varint,30,opt,name=allowSealedSenderFromAnyone,proto3" json:"allowSealedSenderFromAnyone,omitempty"` - AllowAutomaticKeyVerification bool `protobuf:"varint,31,opt,name=allowAutomaticKeyVerification,proto3" json:"allowAutomaticKeyVerification,omitempty"` - HasSeenAdminDeleteEducationDialog bool `protobuf:"varint,32,opt,name=hasSeenAdminDeleteEducationDialog,proto3" json:"hasSeenAdminDeleteEducationDialog,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + BackupTier *uint64 `protobuf:"varint,21,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` + DefaultSentMediaQuality AccountData_SentMediaQuality `protobuf:"varint,23,opt,name=defaultSentMediaQuality,proto3,enum=signal.backup.AccountData_SentMediaQuality" json:"defaultSentMediaQuality,omitempty"` + AutoDownloadSettings *AccountData_AutoDownloadSettings `protobuf:"bytes,24,opt,name=autoDownloadSettings,proto3" json:"autoDownloadSettings,omitempty"` + ScreenLockTimeoutMinutes *uint32 `protobuf:"varint,26,opt,name=screenLockTimeoutMinutes,proto3,oneof" json:"screenLockTimeoutMinutes,omitempty"` // If unset, consider screen lock to be disabled. + PinReminders *bool `protobuf:"varint,27,opt,name=pinReminders,proto3,oneof" json:"pinReminders,omitempty"` // If unset, consider pin reminders to be enabled. + AppTheme AccountData_AppTheme `protobuf:"varint,28,opt,name=appTheme,proto3,enum=signal.backup.AccountData_AppTheme" json:"appTheme,omitempty"` // If unset, treat the same as "Unknown" case + CallsUseLessDataSetting AccountData_CallsUseLessDataSetting `protobuf:"varint,29,opt,name=callsUseLessDataSetting,proto3,enum=signal.backup.AccountData_CallsUseLessDataSetting" json:"callsUseLessDataSetting,omitempty"` // If unset, treat the same as "Unknown" case + AllowSealedSenderFromAnyone bool `protobuf:"varint,30,opt,name=allowSealedSenderFromAnyone,proto3" json:"allowSealedSenderFromAnyone,omitempty"` + AllowAutomaticKeyVerification bool `protobuf:"varint,31,opt,name=allowAutomaticKeyVerification,proto3" json:"allowAutomaticKeyVerification,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AccountData_AccountSettings) Reset() { *x = AccountData_AccountSettings{} - mi := &file_backuppb_Backup_proto_msgTypes[88] + mi := &file_backuppb_Backup_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8684,7 +8543,7 @@ func (x *AccountData_AccountSettings) String() string { func (*AccountData_AccountSettings) ProtoMessage() {} func (x *AccountData_AccountSettings) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[88] + mi := &file_backuppb_Backup_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8903,13 +8762,6 @@ func (x *AccountData_AccountSettings) GetAllowAutomaticKeyVerification() bool { return false } -func (x *AccountData_AccountSettings) GetHasSeenAdminDeleteEducationDialog() bool { - if x != nil { - return x.HasSeenAdminDeleteEducationDialog - } - return false -} - type AccountData_SubscriberData struct { state protoimpl.MessageState `protogen:"open.v1"` SubscriberId []byte `protobuf:"bytes,1,opt,name=subscriberId,proto3" json:"subscriberId,omitempty"` @@ -8921,7 +8773,7 @@ type AccountData_SubscriberData struct { func (x *AccountData_SubscriberData) Reset() { *x = AccountData_SubscriberData{} - mi := &file_backuppb_Backup_proto_msgTypes[89] + mi := &file_backuppb_Backup_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8933,7 +8785,7 @@ func (x *AccountData_SubscriberData) String() string { func (*AccountData_SubscriberData) ProtoMessage() {} func (x *AccountData_SubscriberData) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[89] + mi := &file_backuppb_Backup_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8986,7 +8838,7 @@ type AccountData_IAPSubscriberData struct { func (x *AccountData_IAPSubscriberData) Reset() { *x = AccountData_IAPSubscriberData{} - mi := &file_backuppb_Backup_proto_msgTypes[90] + mi := &file_backuppb_Backup_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8998,7 +8850,7 @@ func (x *AccountData_IAPSubscriberData) String() string { func (*AccountData_IAPSubscriberData) ProtoMessage() {} func (x *AccountData_IAPSubscriberData) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[90] + mi := &file_backuppb_Backup_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9077,7 +8929,7 @@ type AccountData_AndroidSpecificSettings struct { func (x *AccountData_AndroidSpecificSettings) Reset() { *x = AccountData_AndroidSpecificSettings{} - mi := &file_backuppb_Backup_proto_msgTypes[91] + mi := &file_backuppb_Backup_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9089,7 +8941,7 @@ func (x *AccountData_AndroidSpecificSettings) String() string { func (*AccountData_AndroidSpecificSettings) ProtoMessage() {} func (x *AccountData_AndroidSpecificSettings) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[91] + mi := &file_backuppb_Backup_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9134,7 +8986,7 @@ type Contact_Registered struct { func (x *Contact_Registered) Reset() { *x = Contact_Registered{} - mi := &file_backuppb_Backup_proto_msgTypes[92] + mi := &file_backuppb_Backup_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9146,7 +8998,7 @@ func (x *Contact_Registered) String() string { func (*Contact_Registered) ProtoMessage() {} func (x *Contact_Registered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[92] + mi := &file_backuppb_Backup_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9171,7 +9023,7 @@ type Contact_NotRegistered struct { func (x *Contact_NotRegistered) Reset() { *x = Contact_NotRegistered{} - mi := &file_backuppb_Backup_proto_msgTypes[93] + mi := &file_backuppb_Backup_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9183,7 +9035,7 @@ func (x *Contact_NotRegistered) String() string { func (*Contact_NotRegistered) ProtoMessage() {} func (x *Contact_NotRegistered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[93] + mi := &file_backuppb_Backup_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9216,7 +9068,7 @@ type Contact_Name struct { func (x *Contact_Name) Reset() { *x = Contact_Name{} - mi := &file_backuppb_Backup_proto_msgTypes[94] + mi := &file_backuppb_Backup_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9228,7 +9080,7 @@ func (x *Contact_Name) String() string { func (*Contact_Name) ProtoMessage() {} func (x *Contact_Name) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[94] + mi := &file_backuppb_Backup_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9277,14 +9129,13 @@ type Group_GroupSnapshot struct { InviteLinkPassword []byte `protobuf:"bytes,10,opt,name=inviteLinkPassword,proto3" json:"inviteLinkPassword,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 } func (x *Group_GroupSnapshot) Reset() { *x = Group_GroupSnapshot{} - mi := &file_backuppb_Backup_proto_msgTypes[95] + mi := &file_backuppb_Backup_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9296,7 +9147,7 @@ func (x *Group_GroupSnapshot) String() string { func (*Group_GroupSnapshot) ProtoMessage() {} func (x *Group_GroupSnapshot) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[95] + mi := &file_backuppb_Backup_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9396,13 +9247,6 @@ func (x *Group_GroupSnapshot) GetMembersBanned() []*Group_MemberBanned { return nil } -func (x *Group_GroupSnapshot) GetTerminated() bool { - if x != nil { - return x.Terminated - } - return false -} - type Group_GroupAttributeBlob struct { state protoimpl.MessageState `protogen:"open.v1"` // If unset, consider the field it represents to not be present @@ -9420,7 +9264,7 @@ type Group_GroupAttributeBlob struct { func (x *Group_GroupAttributeBlob) Reset() { *x = Group_GroupAttributeBlob{} - mi := &file_backuppb_Backup_proto_msgTypes[96] + mi := &file_backuppb_Backup_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9432,7 +9276,7 @@ func (x *Group_GroupAttributeBlob) String() string { func (*Group_GroupAttributeBlob) ProtoMessage() {} func (x *Group_GroupAttributeBlob) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[96] + mi := &file_backuppb_Backup_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9524,15 +9368,13 @@ type Group_Member struct { UserId []byte `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` Role Group_Member_Role `protobuf:"varint,2,opt,name=role,proto3,enum=signal.backup.Group_Member_Role" json:"role,omitempty"` JoinedAtVersion uint32 `protobuf:"varint,5,opt,name=joinedAtVersion,proto3" json:"joinedAtVersion,omitempty"` - LabelEmoji string `protobuf:"bytes,6,opt,name=labelEmoji,proto3" json:"labelEmoji,omitempty"` - LabelString string `protobuf:"bytes,7,opt,name=labelString,proto3" json:"labelString,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Group_Member) Reset() { *x = Group_Member{} - mi := &file_backuppb_Backup_proto_msgTypes[97] + mi := &file_backuppb_Backup_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9544,7 +9386,7 @@ func (x *Group_Member) String() string { func (*Group_Member) ProtoMessage() {} func (x *Group_Member) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[97] + mi := &file_backuppb_Backup_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9581,20 +9423,6 @@ func (x *Group_Member) GetJoinedAtVersion() uint32 { return 0 } -func (x *Group_Member) GetLabelEmoji() string { - if x != nil { - return x.LabelEmoji - } - return "" -} - -func (x *Group_Member) GetLabelString() string { - if x != nil { - return x.LabelString - } - return "" -} - type Group_MemberPendingProfileKey struct { state protoimpl.MessageState `protogen:"open.v1"` Member *Group_Member `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"` @@ -9606,7 +9434,7 @@ type Group_MemberPendingProfileKey struct { func (x *Group_MemberPendingProfileKey) Reset() { *x = Group_MemberPendingProfileKey{} - mi := &file_backuppb_Backup_proto_msgTypes[98] + mi := &file_backuppb_Backup_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9618,7 +9446,7 @@ func (x *Group_MemberPendingProfileKey) String() string { func (*Group_MemberPendingProfileKey) ProtoMessage() {} func (x *Group_MemberPendingProfileKey) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[98] + mi := &file_backuppb_Backup_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9665,7 +9493,7 @@ type Group_MemberPendingAdminApproval struct { func (x *Group_MemberPendingAdminApproval) Reset() { *x = Group_MemberPendingAdminApproval{} - mi := &file_backuppb_Backup_proto_msgTypes[99] + mi := &file_backuppb_Backup_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9677,7 +9505,7 @@ func (x *Group_MemberPendingAdminApproval) String() string { func (*Group_MemberPendingAdminApproval) ProtoMessage() {} func (x *Group_MemberPendingAdminApproval) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[99] + mi := &file_backuppb_Backup_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9717,7 +9545,7 @@ type Group_MemberBanned struct { func (x *Group_MemberBanned) Reset() { *x = Group_MemberBanned{} - mi := &file_backuppb_Backup_proto_msgTypes[100] + mi := &file_backuppb_Backup_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9729,7 +9557,7 @@ func (x *Group_MemberBanned) String() string { func (*Group_MemberBanned) ProtoMessage() {} func (x *Group_MemberBanned) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[100] + mi := &file_backuppb_Backup_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9764,14 +9592,13 @@ type Group_AccessControl struct { Attributes Group_AccessControl_AccessRequired `protobuf:"varint,1,opt,name=attributes,proto3,enum=signal.backup.Group_AccessControl_AccessRequired" json:"attributes,omitempty"` Members Group_AccessControl_AccessRequired `protobuf:"varint,2,opt,name=members,proto3,enum=signal.backup.Group_AccessControl_AccessRequired" json:"members,omitempty"` AddFromInviteLink Group_AccessControl_AccessRequired `protobuf:"varint,3,opt,name=addFromInviteLink,proto3,enum=signal.backup.Group_AccessControl_AccessRequired" json:"addFromInviteLink,omitempty"` - MemberLabel Group_AccessControl_AccessRequired `protobuf:"varint,4,opt,name=memberLabel,proto3,enum=signal.backup.Group_AccessControl_AccessRequired" json:"memberLabel,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *Group_AccessControl) Reset() { *x = Group_AccessControl{} - mi := &file_backuppb_Backup_proto_msgTypes[101] + mi := &file_backuppb_Backup_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9783,7 +9610,7 @@ func (x *Group_AccessControl) String() string { func (*Group_AccessControl) ProtoMessage() {} func (x *Group_AccessControl) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[101] + mi := &file_backuppb_Backup_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9820,13 +9647,6 @@ func (x *Group_AccessControl) GetAddFromInviteLink() Group_AccessControl_AccessR return Group_AccessControl_UNKNOWN } -func (x *Group_AccessControl) GetMemberLabel() Group_AccessControl_AccessRequired { - if x != nil { - return x.MemberLabel - } - return Group_AccessControl_UNKNOWN -} - type ChatItem_IncomingMessageDetails struct { state protoimpl.MessageState `protogen:"open.v1"` DateReceived uint64 `protobuf:"varint,1,opt,name=dateReceived,proto3" json:"dateReceived,omitempty"` @@ -9839,7 +9659,7 @@ type ChatItem_IncomingMessageDetails struct { func (x *ChatItem_IncomingMessageDetails) Reset() { *x = ChatItem_IncomingMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[102] + mi := &file_backuppb_Backup_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9851,7 +9671,7 @@ func (x *ChatItem_IncomingMessageDetails) String() string { func (*ChatItem_IncomingMessageDetails) ProtoMessage() {} func (x *ChatItem_IncomingMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[102] + mi := &file_backuppb_Backup_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9905,7 +9725,7 @@ type ChatItem_OutgoingMessageDetails struct { func (x *ChatItem_OutgoingMessageDetails) Reset() { *x = ChatItem_OutgoingMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[103] + mi := &file_backuppb_Backup_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9917,7 +9737,7 @@ func (x *ChatItem_OutgoingMessageDetails) String() string { func (*ChatItem_OutgoingMessageDetails) ProtoMessage() {} func (x *ChatItem_OutgoingMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[103] + mi := &file_backuppb_Backup_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9955,7 +9775,7 @@ type ChatItem_DirectionlessMessageDetails struct { func (x *ChatItem_DirectionlessMessageDetails) Reset() { *x = ChatItem_DirectionlessMessageDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[104] + mi := &file_backuppb_Backup_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9967,7 +9787,7 @@ func (x *ChatItem_DirectionlessMessageDetails) String() string { func (*ChatItem_DirectionlessMessageDetails) ProtoMessage() {} func (x *ChatItem_DirectionlessMessageDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[104] + mi := &file_backuppb_Backup_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9997,7 +9817,7 @@ type ChatItem_PinDetails struct { func (x *ChatItem_PinDetails) Reset() { *x = ChatItem_PinDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[105] + mi := &file_backuppb_Backup_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10009,7 +9829,7 @@ func (x *ChatItem_PinDetails) String() string { func (*ChatItem_PinDetails) ProtoMessage() {} func (x *ChatItem_PinDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[105] + mi := &file_backuppb_Backup_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10081,7 +9901,7 @@ type SendStatus_Pending struct { func (x *SendStatus_Pending) Reset() { *x = SendStatus_Pending{} - mi := &file_backuppb_Backup_proto_msgTypes[106] + mi := &file_backuppb_Backup_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10093,7 +9913,7 @@ func (x *SendStatus_Pending) String() string { func (*SendStatus_Pending) ProtoMessage() {} func (x *SendStatus_Pending) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[106] + mi := &file_backuppb_Backup_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10118,7 +9938,7 @@ type SendStatus_Sent struct { func (x *SendStatus_Sent) Reset() { *x = SendStatus_Sent{} - mi := &file_backuppb_Backup_proto_msgTypes[107] + mi := &file_backuppb_Backup_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10130,7 +9950,7 @@ func (x *SendStatus_Sent) String() string { func (*SendStatus_Sent) ProtoMessage() {} func (x *SendStatus_Sent) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[107] + mi := &file_backuppb_Backup_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10162,7 +9982,7 @@ type SendStatus_Delivered struct { func (x *SendStatus_Delivered) Reset() { *x = SendStatus_Delivered{} - mi := &file_backuppb_Backup_proto_msgTypes[108] + mi := &file_backuppb_Backup_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10174,7 +9994,7 @@ func (x *SendStatus_Delivered) String() string { func (*SendStatus_Delivered) ProtoMessage() {} func (x *SendStatus_Delivered) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[108] + mi := &file_backuppb_Backup_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10206,7 +10026,7 @@ type SendStatus_Read struct { func (x *SendStatus_Read) Reset() { *x = SendStatus_Read{} - mi := &file_backuppb_Backup_proto_msgTypes[109] + mi := &file_backuppb_Backup_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10218,7 +10038,7 @@ func (x *SendStatus_Read) String() string { func (*SendStatus_Read) ProtoMessage() {} func (x *SendStatus_Read) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[109] + mi := &file_backuppb_Backup_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10250,7 +10070,7 @@ type SendStatus_Viewed struct { func (x *SendStatus_Viewed) Reset() { *x = SendStatus_Viewed{} - mi := &file_backuppb_Backup_proto_msgTypes[110] + mi := &file_backuppb_Backup_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10262,7 +10082,7 @@ func (x *SendStatus_Viewed) String() string { func (*SendStatus_Viewed) ProtoMessage() {} func (x *SendStatus_Viewed) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[110] + mi := &file_backuppb_Backup_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10294,7 +10114,7 @@ type SendStatus_Skipped struct { func (x *SendStatus_Skipped) Reset() { *x = SendStatus_Skipped{} - mi := &file_backuppb_Backup_proto_msgTypes[111] + mi := &file_backuppb_Backup_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10306,7 +10126,7 @@ func (x *SendStatus_Skipped) String() string { func (*SendStatus_Skipped) ProtoMessage() {} func (x *SendStatus_Skipped) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[111] + mi := &file_backuppb_Backup_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10331,7 +10151,7 @@ type SendStatus_Failed struct { func (x *SendStatus_Failed) Reset() { *x = SendStatus_Failed{} - mi := &file_backuppb_Backup_proto_msgTypes[112] + mi := &file_backuppb_Backup_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10343,7 +10163,7 @@ func (x *SendStatus_Failed) String() string { func (*SendStatus_Failed) ProtoMessage() {} func (x *SendStatus_Failed) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[112] + mi := &file_backuppb_Backup_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10376,7 +10196,7 @@ type DirectStoryReplyMessage_TextReply struct { func (x *DirectStoryReplyMessage_TextReply) Reset() { *x = DirectStoryReplyMessage_TextReply{} - mi := &file_backuppb_Backup_proto_msgTypes[113] + mi := &file_backuppb_Backup_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10388,7 +10208,7 @@ func (x *DirectStoryReplyMessage_TextReply) String() string { func (*DirectStoryReplyMessage_TextReply) ProtoMessage() {} func (x *DirectStoryReplyMessage_TextReply) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[113] + mi := &file_backuppb_Backup_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10433,7 +10253,7 @@ type PaymentNotification_TransactionDetails struct { func (x *PaymentNotification_TransactionDetails) Reset() { *x = PaymentNotification_TransactionDetails{} - mi := &file_backuppb_Backup_proto_msgTypes[114] + mi := &file_backuppb_Backup_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10445,7 +10265,7 @@ func (x *PaymentNotification_TransactionDetails) String() string { func (*PaymentNotification_TransactionDetails) ProtoMessage() {} func (x *PaymentNotification_TransactionDetails) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[114] + mi := &file_backuppb_Backup_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10514,7 +10334,7 @@ type PaymentNotification_TransactionDetails_MobileCoinTxoIdentification struct { func (x *PaymentNotification_TransactionDetails_MobileCoinTxoIdentification) Reset() { *x = PaymentNotification_TransactionDetails_MobileCoinTxoIdentification{} - mi := &file_backuppb_Backup_proto_msgTypes[115] + mi := &file_backuppb_Backup_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10526,7 +10346,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[115] + mi := &file_backuppb_Backup_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10565,7 +10385,7 @@ type PaymentNotification_TransactionDetails_FailedTransaction struct { func (x *PaymentNotification_TransactionDetails_FailedTransaction) Reset() { *x = PaymentNotification_TransactionDetails_FailedTransaction{} - mi := &file_backuppb_Backup_proto_msgTypes[116] + mi := &file_backuppb_Backup_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10577,7 +10397,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[116] + mi := &file_backuppb_Backup_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10618,7 +10438,7 @@ type PaymentNotification_TransactionDetails_Transaction struct { func (x *PaymentNotification_TransactionDetails_Transaction) Reset() { *x = PaymentNotification_TransactionDetails_Transaction{} - mi := &file_backuppb_Backup_proto_msgTypes[117] + mi := &file_backuppb_Backup_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10630,7 +10450,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[117] + mi := &file_backuppb_Backup_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10709,7 +10529,7 @@ type ContactAttachment_Name struct { func (x *ContactAttachment_Name) Reset() { *x = ContactAttachment_Name{} - mi := &file_backuppb_Backup_proto_msgTypes[118] + mi := &file_backuppb_Backup_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10721,7 +10541,7 @@ func (x *ContactAttachment_Name) String() string { func (*ContactAttachment_Name) ProtoMessage() {} func (x *ContactAttachment_Name) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[118] + mi := &file_backuppb_Backup_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10790,7 +10610,7 @@ type ContactAttachment_Phone struct { func (x *ContactAttachment_Phone) Reset() { *x = ContactAttachment_Phone{} - mi := &file_backuppb_Backup_proto_msgTypes[119] + mi := &file_backuppb_Backup_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10802,7 +10622,7 @@ func (x *ContactAttachment_Phone) String() string { func (*ContactAttachment_Phone) ProtoMessage() {} func (x *ContactAttachment_Phone) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[119] + mi := &file_backuppb_Backup_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10850,7 +10670,7 @@ type ContactAttachment_Email struct { func (x *ContactAttachment_Email) Reset() { *x = ContactAttachment_Email{} - mi := &file_backuppb_Backup_proto_msgTypes[120] + mi := &file_backuppb_Backup_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10862,7 +10682,7 @@ func (x *ContactAttachment_Email) String() string { func (*ContactAttachment_Email) ProtoMessage() {} func (x *ContactAttachment_Email) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[120] + mi := &file_backuppb_Backup_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10916,7 +10736,7 @@ type ContactAttachment_PostalAddress struct { func (x *ContactAttachment_PostalAddress) Reset() { *x = ContactAttachment_PostalAddress{} - mi := &file_backuppb_Backup_proto_msgTypes[121] + mi := &file_backuppb_Backup_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10928,7 +10748,7 @@ func (x *ContactAttachment_PostalAddress) String() string { func (*ContactAttachment_PostalAddress) ProtoMessage() {} func (x *ContactAttachment_PostalAddress) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[121] + mi := &file_backuppb_Backup_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11043,7 +10863,7 @@ type FilePointer_LocatorInfo struct { func (x *FilePointer_LocatorInfo) Reset() { *x = FilePointer_LocatorInfo{} - mi := &file_backuppb_Backup_proto_msgTypes[122] + mi := &file_backuppb_Backup_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11055,7 +10875,7 @@ func (x *FilePointer_LocatorInfo) String() string { func (*FilePointer_LocatorInfo) ProtoMessage() {} func (x *FilePointer_LocatorInfo) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[122] + mi := &file_backuppb_Backup_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11175,7 +10995,7 @@ type Quote_QuotedAttachment struct { func (x *Quote_QuotedAttachment) Reset() { *x = Quote_QuotedAttachment{} - mi := &file_backuppb_Backup_proto_msgTypes[123] + mi := &file_backuppb_Backup_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11187,7 +11007,7 @@ func (x *Quote_QuotedAttachment) String() string { func (*Quote_QuotedAttachment) ProtoMessage() {} func (x *Quote_QuotedAttachment) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[123] + mi := &file_backuppb_Backup_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11234,7 +11054,7 @@ type Poll_PollOption struct { func (x *Poll_PollOption) Reset() { *x = Poll_PollOption{} - mi := &file_backuppb_Backup_proto_msgTypes[124] + mi := &file_backuppb_Backup_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11246,7 +11066,7 @@ func (x *Poll_PollOption) String() string { func (*Poll_PollOption) ProtoMessage() {} func (x *Poll_PollOption) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[124] + mi := &file_backuppb_Backup_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11286,7 +11106,7 @@ type Poll_PollOption_PollVote struct { func (x *Poll_PollOption_PollVote) Reset() { *x = Poll_PollOption_PollVote{} - mi := &file_backuppb_Backup_proto_msgTypes[125] + mi := &file_backuppb_Backup_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11298,7 +11118,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[125] + mi := &file_backuppb_Backup_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11368,8 +11188,6 @@ type GroupChangeChatUpdate_Update struct { // *GroupChangeChatUpdate_Update_GroupV2MigrationDroppedMembersUpdate // *GroupChangeChatUpdate_Update_GroupSequenceOfRequestsAndCancelsUpdate // *GroupChangeChatUpdate_Update_GroupExpirationTimerUpdate - // *GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate - // *GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate Update isGroupChangeChatUpdate_Update_Update `protobuf_oneof:"update"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -11377,7 +11195,7 @@ type GroupChangeChatUpdate_Update struct { func (x *GroupChangeChatUpdate_Update) Reset() { *x = GroupChangeChatUpdate_Update{} - mi := &file_backuppb_Backup_proto_msgTypes[126] + mi := &file_backuppb_Backup_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -11389,7 +11207,7 @@ func (x *GroupChangeChatUpdate_Update) String() string { func (*GroupChangeChatUpdate_Update) ProtoMessage() {} func (x *GroupChangeChatUpdate_Update) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[126] + mi := &file_backuppb_Backup_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11402,7 +11220,7 @@ func (x *GroupChangeChatUpdate_Update) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupChangeChatUpdate_Update.ProtoReflect.Descriptor instead. func (*GroupChangeChatUpdate_Update) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{43, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{42, 0} } func (x *GroupChangeChatUpdate_Update) GetUpdate() isGroupChangeChatUpdate_Update_Update { @@ -11718,24 +11536,6 @@ func (x *GroupChangeChatUpdate_Update) GetGroupExpirationTimerUpdate() *GroupExp return nil } -func (x *GroupChangeChatUpdate_Update) GetGroupMemberLabelAccessLevelChangeUpdate() *GroupMemberLabelAccessLevelChangeUpdate { - if x != nil { - if x, ok := x.Update.(*GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate); ok { - return x.GroupMemberLabelAccessLevelChangeUpdate - } - } - return nil -} - -func (x *GroupChangeChatUpdate_Update) GetGroupTerminateChangeUpdate() *GroupTerminateChangeUpdate { - if x != nil { - if x, ok := x.Update.(*GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate); ok { - return x.GroupTerminateChangeUpdate - } - } - return nil -} - type isGroupChangeChatUpdate_Update_Update interface { isGroupChangeChatUpdate_Update_Update() } @@ -11876,14 +11676,6 @@ type GroupChangeChatUpdate_Update_GroupExpirationTimerUpdate struct { GroupExpirationTimerUpdate *GroupExpirationTimerUpdate `protobuf:"bytes,34,opt,name=groupExpirationTimerUpdate,proto3,oneof"` } -type GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate struct { - GroupMemberLabelAccessLevelChangeUpdate *GroupMemberLabelAccessLevelChangeUpdate `protobuf:"bytes,35,opt,name=groupMemberLabelAccessLevelChangeUpdate,proto3,oneof"` -} - -type GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate struct { - GroupTerminateChangeUpdate *GroupTerminateChangeUpdate `protobuf:"bytes,36,opt,name=groupTerminateChangeUpdate,proto3,oneof"` -} - func (*GroupChangeChatUpdate_Update_GenericGroupUpdate) isGroupChangeChatUpdate_Update_Update() {} func (*GroupChangeChatUpdate_Update_GroupCreationUpdate) isGroupChangeChatUpdate_Update_Update() {} @@ -11976,12 +11768,6 @@ func (*GroupChangeChatUpdate_Update_GroupSequenceOfRequestsAndCancelsUpdate) isG func (*GroupChangeChatUpdate_Update_GroupExpirationTimerUpdate) isGroupChangeChatUpdate_Update_Update() { } -func (*GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate) isGroupChangeChatUpdate_Update_Update() { -} - -func (*GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate) isGroupChangeChatUpdate_Update_Update() { -} - type GroupInvitationRevokedUpdate_Invitee struct { state protoimpl.MessageState `protogen:"open.v1"` InviterAci []byte `protobuf:"bytes,1,opt,name=inviterAci,proto3,oneof" json:"inviterAci,omitempty"` @@ -11995,7 +11781,7 @@ type GroupInvitationRevokedUpdate_Invitee struct { func (x *GroupInvitationRevokedUpdate_Invitee) Reset() { *x = GroupInvitationRevokedUpdate_Invitee{} - mi := &file_backuppb_Backup_proto_msgTypes[127] + mi := &file_backuppb_Backup_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12007,7 +11793,7 @@ func (x *GroupInvitationRevokedUpdate_Invitee) String() string { func (*GroupInvitationRevokedUpdate_Invitee) ProtoMessage() {} func (x *GroupInvitationRevokedUpdate_Invitee) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[127] + mi := &file_backuppb_Backup_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12020,7 +11806,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{65, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{62, 0} } func (x *GroupInvitationRevokedUpdate_Invitee) GetInviterAci() []byte { @@ -12055,7 +11841,7 @@ type ChatStyle_Gradient struct { func (x *ChatStyle_Gradient) Reset() { *x = ChatStyle_Gradient{} - mi := &file_backuppb_Backup_proto_msgTypes[128] + mi := &file_backuppb_Backup_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12067,7 +11853,7 @@ func (x *ChatStyle_Gradient) String() string { func (*ChatStyle_Gradient) ProtoMessage() {} func (x *ChatStyle_Gradient) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[128] + mi := &file_backuppb_Backup_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12080,7 +11866,7 @@ func (x *ChatStyle_Gradient) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatStyle_Gradient.ProtoReflect.Descriptor instead. func (*ChatStyle_Gradient) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83, 0} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80, 0} } func (x *ChatStyle_Gradient) GetAngle() uint32 { @@ -12120,7 +11906,7 @@ type ChatStyle_CustomChatColor struct { func (x *ChatStyle_CustomChatColor) Reset() { *x = ChatStyle_CustomChatColor{} - mi := &file_backuppb_Backup_proto_msgTypes[129] + mi := &file_backuppb_Backup_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12132,7 +11918,7 @@ func (x *ChatStyle_CustomChatColor) String() string { func (*ChatStyle_CustomChatColor) ProtoMessage() {} func (x *ChatStyle_CustomChatColor) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[129] + mi := &file_backuppb_Backup_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12145,7 +11931,7 @@ func (x *ChatStyle_CustomChatColor) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatStyle_CustomChatColor.ProtoReflect.Descriptor instead. func (*ChatStyle_CustomChatColor) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83, 1} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80, 1} } func (x *ChatStyle_CustomChatColor) GetId() uint64 { @@ -12204,7 +11990,7 @@ type ChatStyle_AutomaticBubbleColor struct { func (x *ChatStyle_AutomaticBubbleColor) Reset() { *x = ChatStyle_AutomaticBubbleColor{} - mi := &file_backuppb_Backup_proto_msgTypes[130] + mi := &file_backuppb_Backup_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -12216,7 +12002,7 @@ func (x *ChatStyle_AutomaticBubbleColor) String() string { func (*ChatStyle_AutomaticBubbleColor) ProtoMessage() {} func (x *ChatStyle_AutomaticBubbleColor) ProtoReflect() protoreflect.Message { - mi := &file_backuppb_Backup_proto_msgTypes[130] + mi := &file_backuppb_Backup_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -12229,7 +12015,7 @@ func (x *ChatStyle_AutomaticBubbleColor) ProtoReflect() protoreflect.Message { // Deprecated: Use ChatStyle_AutomaticBubbleColor.ProtoReflect.Descriptor instead. func (*ChatStyle_AutomaticBubbleColor) Descriptor() ([]byte, []int) { - return file_backuppb_Backup_proto_rawDescGZIP(), []int{83, 2} + return file_backuppb_Backup_proto_rawDescGZIP(), []int{80, 2} } var File_backuppb_Backup_proto protoreflect.FileDescriptor @@ -12256,7 +12042,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "chatFolder\x18\b \x01(\v2\x19.signal.backup.ChatFolderH\x00R\n" + "chatFolderB\x06\n" + - "\x04item\"\xfe\"\n" + + "\x04item\"\xf9\"\n" + "\vAccountData\x12\x1e\n" + "\n" + "profileKey\x18\x01 \x01(\fR\n" + @@ -12275,7 +12061,8 @@ 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\x1a\xf6\x01\n" + + "\bbioEmoji\x18\x0e \x01(\tR\bbioEmoji\x125\n" + + "\x13keyTransparencyData\x18\x0f \x01(\fH\x01R\x13keyTransparencyData\x88\x01\x01\x1a\xf6\x01\n" + "\fUsernameLink\x12\x18\n" + "\aentropy\x18\x01 \x01(\fR\aentropy\x12\x1a\n" + "\bserverId\x18\x02 \x01(\fR\bserverId\x12C\n" + @@ -12301,7 +12088,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\aUNKNOWN\x10\x00\x12\t\n" + "\x05NEVER\x10\x01\x12\b\n" + "\x04WIFI\x10\x02\x12\x15\n" + - "\x11WIFI_AND_CELLULAR\x10\x03\x1a\x97\x10\n" + + "\x11WIFI_AND_CELLULAR\x10\x03\x1a\xc9\x0f\n" + "\x0fAccountSettings\x12\"\n" + "\freadReceipts\x18\x01 \x01(\bR\freadReceipts\x126\n" + "\x16sealedSenderIndicators\x18\x02 \x01(\bR\x16sealedSenderIndicators\x12*\n" + @@ -12334,8 +12121,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\bappTheme\x18\x1c \x01(\x0e2#.signal.backup.AccountData.AppThemeR\bappTheme\x12l\n" + "\x17callsUseLessDataSetting\x18\x1d \x01(\x0e22.signal.backup.AccountData.CallsUseLessDataSettingR\x17callsUseLessDataSetting\x12@\n" + "\x1ballowSealedSenderFromAnyone\x18\x1e \x01(\bR\x1ballowSealedSenderFromAnyone\x12D\n" + - "\x1dallowAutomaticKeyVerification\x18\x1f \x01(\bR\x1dallowAutomaticKeyVerification\x12L\n" + - "!hasSeenAdminDeleteEducationDialog\x18 \x01(\bR!hasSeenAdminDeleteEducationDialogB\x1b\n" + + "\x1dallowAutomaticKeyVerification\x18\x1f \x01(\bR\x1dallowAutomaticKeyVerificationB\x1b\n" + "\x19_storyViewReceiptsEnabledB\r\n" + "\v_backupTierB\x1b\n" + "\x19_screenLockTimeoutMinutesB\x0f\n" + @@ -12378,7 +12164,8 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x05NEVER\x10\x01\x12\x14\n" + "\x10MOBILE_DATA_ONLY\x10\x02\x12\x18\n" + "\x14WIFI_AND_MOBILE_DATA\x10\x03B\v\n" + - "\t_usernameJ\x04\b\b\x10\tJ\x04\b\x0f\x10\x10\"\x84\x03\n" + + "\t_usernameB\x16\n" + + "\x14_keyTransparencyDataJ\x04\b\b\x10\t\"\x84\x03\n" + "\tRecipient\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x122\n" + "\acontact\x18\x02 \x01(\v2\x16.signal.backup.ContactH\x00R\acontact\x12,\n" + @@ -12447,7 +12234,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x12_profileFamilyNameB\x0e\n" + "\f_identityKeyB\x0e\n" + "\f_avatarColorB\x16\n" + - "\x14_keyTransparencyData\"\xc6\x13\n" + + "\x14_keyTransparencyData\"\x8f\x12\n" + "\x05Group\x12\x1c\n" + "\tmasterKey\x18\x01 \x01(\fR\tmasterKey\x12 \n" + "\vwhitelisted\x18\x02 \x01(\bR\vwhitelisted\x12\x1c\n" + @@ -12455,7 +12242,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\rstorySendMode\x18\x04 \x01(\x0e2\".signal.backup.Group.StorySendModeR\rstorySendMode\x12>\n" + "\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\x1a\xe5\x06\n" + + "\vavatarColor\x18\a \x01(\x0e2\x1a.signal.backup.AvatarColorH\x00R\vavatarColor\x88\x01\x01\x1a\xc5\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" + @@ -12469,24 +12256,17 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x12inviteLinkPassword\x18\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" + + "\x0emembers_banned\x18\r \x03(\v2!.signal.backup.Group.MemberBannedR\rmembersBannedJ\x04\b\x01\x10\x02\x1a\xc3\x01\n" + "\x12GroupAttributeBlob\x12\x16\n" + "\x05title\x18\x01 \x01(\tH\x00R\x05title\x12\x18\n" + "\x06avatar\x18\x02 \x01(\fH\x00R\x06avatar\x12D\n" + "\x1cdisappearingMessagesDuration\x18\x03 \x01(\rH\x00R\x1cdisappearingMessagesDuration\x12*\n" + "\x0fdescriptionText\x18\x04 \x01(\tH\x00R\x0fdescriptionTextB\t\n" + - "\acontent\x1a\x83\x02\n" + + "\acontent\x1a\xc1\x01\n" + "\x06Member\x12\x16\n" + "\x06userId\x18\x01 \x01(\fR\x06userId\x124\n" + "\x04role\x18\x02 \x01(\x0e2 .signal.backup.Group.Member.RoleR\x04role\x12(\n" + - "\x0fjoinedAtVersion\x18\x05 \x01(\rR\x0fjoinedAtVersion\x12\x1e\n" + - "\n" + - "labelEmoji\x18\x06 \x01(\tR\n" + - "labelEmoji\x12 \n" + - "\vlabelString\x18\a \x01(\tR\vlabelString\"3\n" + + "\x0fjoinedAtVersion\x18\x05 \x01(\rR\x0fjoinedAtVersion\"3\n" + "\x04Role\x12\v\n" + "\aUNKNOWN\x10\x00\x12\v\n" + "\aDEFAULT\x10\x01\x12\x11\n" + @@ -12500,14 +12280,13 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\ttimestamp\x18\x04 \x01(\x04R\ttimestampJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04\x1aD\n" + "\fMemberBanned\x12\x16\n" + "\x06userId\x18\x01 \x01(\fR\x06userId\x12\x1c\n" + - "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x1a\xbf\x03\n" + + "\ttimestamp\x18\x02 \x01(\x04R\ttimestamp\x1a\xea\x02\n" + "\rAccessControl\x12Q\n" + "\n" + "attributes\x18\x01 \x01(\x0e21.signal.backup.Group.AccessControl.AccessRequiredR\n" + "attributes\x12K\n" + "\amembers\x18\x02 \x01(\x0e21.signal.backup.Group.AccessControl.AccessRequiredR\amembers\x12_\n" + - "\x11addFromInviteLink\x18\x03 \x01(\x0e21.signal.backup.Group.AccessControl.AccessRequiredR\x11addFromInviteLink\x12S\n" + - "\vmemberLabel\x18\x04 \x01(\x0e21.signal.backup.Group.AccessControl.AccessRequiredR\vmemberLabel\"X\n" + + "\x11addFromInviteLink\x18\x03 \x01(\x0e21.signal.backup.Group.AccessControl.AccessRequiredR\x11addFromInviteLink\"X\n" + "\x0eAccessRequired\x12\v\n" + "\aUNKNOWN\x10\x00\x12\a\n" + "\x03ANY\x10\x01\x12\n" + @@ -12538,18 +12317,20 @@ const file_backuppb_Backup_proto_rawDesc = "" + " \x01(\rR\x12expireTimerVersionB\x0e\n" + "\f_pinnedOrderB\x14\n" + "\x12_expirationTimerMsB\x0e\n" + - "\f_muteUntilMs\"\x95\x02\n" + + "\f_muteUntilMs\"\xb4\x02\n" + "\bCallLink\x12\x18\n" + "\arootKey\x18\x01 \x01(\fR\arootKey\x12\x1f\n" + "\badminKey\x18\x02 \x01(\fH\x00R\badminKey\x88\x01\x01\x12\x12\n" + "\x04name\x18\x03 \x01(\tR\x04name\x12H\n" + "\frestrictions\x18\x04 \x01(\x0e2$.signal.backup.CallLink.RestrictionsR\frestrictions\x12\"\n" + - "\fexpirationMs\x18\x05 \x01(\x04R\fexpirationMs\"9\n" + + "\fexpirationMs\x18\x05 \x01(\x04R\fexpirationMs\x12\x19\n" + + "\x05epoch\x18\x06 \x01(\fH\x01R\x05epoch\x88\x01\x01\"9\n" + "\fRestrictions\x12\v\n" + "\aUNKNOWN\x10\x00\x12\b\n" + "\x04NONE\x10\x01\x12\x12\n" + "\x0eADMIN_APPROVAL\x10\x02B\v\n" + - "\t_adminKeyJ\x04\b\x06\x10\a\"\xca\x01\n" + + "\t_adminKeyB\b\n" + + "\x06_epoch\"\xca\x01\n" + "\tAdHocCall\x12\x16\n" + "\x06callId\x18\x01 \x01(\x04R\x06callId\x12 \n" + "\vrecipientId\x18\x02 \x01(\x04R\vrecipientId\x124\n" + @@ -12573,7 +12354,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\tONLY_WITH\x10\x01\x12\x0e\n" + "\n" + "ALL_EXCEPT\x10\x02\x12\a\n" + - "\x03ALL\x10\x03\"\xbd\x0f\n" + + "\x03ALL\x10\x03\"\xe5\x0e\n" + "\bChatItem\x12\x16\n" + "\x06chatId\x18\x01 \x01(\x04R\x06chatId\x12\x1a\n" + "\bauthorId\x18\x02 \x01(\x04R\bauthorId\x12\x1a\n" + @@ -12595,8 +12376,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\tgiftBadge\x18\x11 \x01(\v2\x18.signal.backup.GiftBadgeH\x01R\tgiftBadge\x12J\n" + "\x0fviewOnceMessage\x18\x12 \x01(\v2\x1e.signal.backup.ViewOnceMessageH\x01R\x0fviewOnceMessage\x12b\n" + "\x17directStoryReplyMessage\x18\x13 \x01(\v2&.signal.backup.DirectStoryReplyMessageH\x01R\x17directStoryReplyMessage\x12)\n" + - "\x04poll\x18\x14 \x01(\v2\x13.signal.backup.PollH\x01R\x04poll\x12V\n" + - "\x13adminDeletedMessage\x18\x16 \x01(\v2\".signal.backup.AdminDeletedMessageH\x01R\x13adminDeletedMessage\x12B\n" + + "\x04poll\x18\x14 \x01(\v2\x13.signal.backup.PollH\x01R\x04poll\x12B\n" + "\n" + "pinDetails\x18\x15 \x01(\v2\".signal.backup.ChatItem.PinDetailsR\n" + "pinDetails\x1a\xb4\x01\n" + @@ -12926,9 +12706,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x05votes\x18\x02 \x03(\v2'.signal.backup.Poll.PollOption.PollVoteR\x05votes\x1aB\n" + "\bPollVote\x12\x18\n" + "\avoterId\x18\x01 \x01(\x04R\avoterId\x12\x1c\n" + - "\tvoteCount\x18\x02 \x01(\rR\tvoteCount\"/\n" + - "\x13AdminDeletedMessage\x12\x18\n" + - "\aadminId\x18\x01 \x01(\x04R\aadminId\"\xf7\x06\n" + + "\tvoteCount\x18\x02 \x01(\rR\tvoteCount\"\xf7\x06\n" + "\x11ChatUpdateMessage\x12E\n" + "\fsimpleUpdate\x18\x01 \x01(\v2\x1f.signal.backup.SimpleChatUpdateH\x00R\fsimpleUpdate\x12H\n" + "\vgroupChange\x18\x02 \x01(\v2$.signal.backup.GroupChangeChatUpdateH\x00R\vgroupChange\x12`\n" + @@ -13027,9 +12805,9 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\x15ThreadMergeChatUpdate\x12\"\n" + "\fpreviousE164\x18\x01 \x01(\x04R\fpreviousE164\"1\n" + "\x1bSessionSwitchoverChatUpdate\x12\x12\n" + - "\x04e164\x18\x01 \x01(\x04R\x04e164\"\x88!\n" + + "\x04e164\x18\x01 \x01(\x04R\x04e164\"\x86\x1f\n" + "\x15GroupChangeChatUpdate\x12E\n" + - "\aupdates\x18\x01 \x03(\v2+.signal.backup.GroupChangeChatUpdate.UpdateR\aupdates\x1a\xa7 \n" + + "\aupdates\x18\x01 \x03(\v2+.signal.backup.GroupChangeChatUpdate.UpdateR\aupdates\x1a\xa5\x1e\n" + "\x06Update\x12S\n" + "\x12genericGroupUpdate\x18\x01 \x01(\v2!.signal.backup.GenericGroupUpdateH\x00R\x12genericGroupUpdate\x12V\n" + "\x13groupCreationUpdate\x18\x02 \x01(\v2\".signal.backup.GroupCreationUpdateH\x00R\x13groupCreationUpdate\x12J\n" + @@ -13065,9 +12843,7 @@ const file_backuppb_Backup_proto_rawDesc = "" + "$groupV2MigrationInvitedMembersUpdate\x18\x1f \x01(\v23.signal.backup.GroupV2MigrationInvitedMembersUpdateH\x00R$groupV2MigrationInvitedMembersUpdate\x12\x89\x01\n" + "$groupV2MigrationDroppedMembersUpdate\x18 \x01(\v23.signal.backup.GroupV2MigrationDroppedMembersUpdateH\x00R$groupV2MigrationDroppedMembersUpdate\x12\x92\x01\n" + "'groupSequenceOfRequestsAndCancelsUpdate\x18! \x01(\v26.signal.backup.GroupSequenceOfRequestsAndCancelsUpdateH\x00R'groupSequenceOfRequestsAndCancelsUpdate\x12k\n" + - "\x1agroupExpirationTimerUpdate\x18\" \x01(\v2).signal.backup.GroupExpirationTimerUpdateH\x00R\x1agroupExpirationTimerUpdate\x12\x92\x01\n" + - "'groupMemberLabelAccessLevelChangeUpdate\x18# \x01(\v26.signal.backup.GroupMemberLabelAccessLevelChangeUpdateH\x00R'groupMemberLabelAccessLevelChangeUpdate\x12k\n" + - "\x1agroupTerminateChangeUpdate\x18$ \x01(\v2).signal.backup.GroupTerminateChangeUpdateH\x00R\x1agroupTerminateChangeUpdateB\b\n" + + "\x1agroupExpirationTimerUpdate\x18\" \x01(\v2).signal.backup.GroupExpirationTimerUpdateH\x00R\x1agroupExpirationTimerUpdateB\b\n" + "\x06update\"H\n" + "\x12GenericGroupUpdate\x12#\n" + "\n" + @@ -13112,17 +12888,6 @@ 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\"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" + @@ -13411,8 +13176,8 @@ const file_backuppb_Backup_proto_rawDesc = "" + "\n" + "\x06MEMBER\x10\x02\x12\x11\n" + "\rADMINISTRATOR\x10\x03\x12\x11\n" + - "\rUNSATISFIABLE\x10\x04B)\n" + - "\x18org.signal.archive.proto\xba\x02\fBackupProto_b\x06proto3" + "\rUNSATISFIABLE\x10\x04B;\n" + + "*org.thoughtcrime.securesms.backup.v2.proto\xba\x02\fBackupProto_b\x06proto3" var ( file_backuppb_Backup_proto_rawDescOnce sync.Once @@ -13427,7 +13192,7 @@ func file_backuppb_Backup_proto_rawDescGZIP() []byte { } var file_backuppb_Backup_proto_enumTypes = make([]protoimpl.EnumInfo, 36) -var file_backuppb_Backup_proto_msgTypes = make([]protoimpl.MessageInfo, 131) +var file_backuppb_Backup_proto_msgTypes = make([]protoimpl.MessageInfo, 128) var file_backuppb_Backup_proto_goTypes = []any{ (AvatarColor)(0), // 0: signal.backup.AvatarColor (GroupV2AccessLevel)(0), // 1: signal.backup.GroupV2AccessLevel @@ -13498,119 +13263,116 @@ var file_backuppb_Backup_proto_goTypes = []any{ (*BodyRange)(nil), // 66: signal.backup.BodyRange (*Reaction)(nil), // 67: signal.backup.Reaction (*Poll)(nil), // 68: signal.backup.Poll - (*AdminDeletedMessage)(nil), // 69: signal.backup.AdminDeletedMessage - (*ChatUpdateMessage)(nil), // 70: signal.backup.ChatUpdateMessage - (*IndividualCall)(nil), // 71: signal.backup.IndividualCall - (*GroupCall)(nil), // 72: signal.backup.GroupCall - (*SimpleChatUpdate)(nil), // 73: signal.backup.SimpleChatUpdate - (*ExpirationTimerChatUpdate)(nil), // 74: signal.backup.ExpirationTimerChatUpdate - (*ProfileChangeChatUpdate)(nil), // 75: signal.backup.ProfileChangeChatUpdate - (*LearnedProfileChatUpdate)(nil), // 76: signal.backup.LearnedProfileChatUpdate - (*ThreadMergeChatUpdate)(nil), // 77: signal.backup.ThreadMergeChatUpdate - (*SessionSwitchoverChatUpdate)(nil), // 78: signal.backup.SessionSwitchoverChatUpdate - (*GroupChangeChatUpdate)(nil), // 79: signal.backup.GroupChangeChatUpdate - (*GenericGroupUpdate)(nil), // 80: signal.backup.GenericGroupUpdate - (*GroupCreationUpdate)(nil), // 81: signal.backup.GroupCreationUpdate - (*GroupNameUpdate)(nil), // 82: signal.backup.GroupNameUpdate - (*GroupAvatarUpdate)(nil), // 83: signal.backup.GroupAvatarUpdate - (*GroupDescriptionUpdate)(nil), // 84: signal.backup.GroupDescriptionUpdate - (*GroupMembershipAccessLevelChangeUpdate)(nil), // 85: signal.backup.GroupMembershipAccessLevelChangeUpdate - (*GroupAttributesAccessLevelChangeUpdate)(nil), // 86: signal.backup.GroupAttributesAccessLevelChangeUpdate - (*GroupMemberLabelAccessLevelChangeUpdate)(nil), // 87: signal.backup.GroupMemberLabelAccessLevelChangeUpdate - (*GroupTerminateChangeUpdate)(nil), // 88: signal.backup.GroupTerminateChangeUpdate - (*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 - (*PollTerminateUpdate)(nil), // 116: signal.backup.PollTerminateUpdate - (*PinMessageUpdate)(nil), // 117: signal.backup.PinMessageUpdate - (*StickerPack)(nil), // 118: signal.backup.StickerPack - (*ChatStyle)(nil), // 119: signal.backup.ChatStyle - (*NotificationProfile)(nil), // 120: signal.backup.NotificationProfile - (*ChatFolder)(nil), // 121: signal.backup.ChatFolder - (*AccountData_UsernameLink)(nil), // 122: signal.backup.AccountData.UsernameLink - (*AccountData_AutoDownloadSettings)(nil), // 123: signal.backup.AccountData.AutoDownloadSettings - (*AccountData_AccountSettings)(nil), // 124: signal.backup.AccountData.AccountSettings - (*AccountData_SubscriberData)(nil), // 125: signal.backup.AccountData.SubscriberData - (*AccountData_IAPSubscriberData)(nil), // 126: signal.backup.AccountData.IAPSubscriberData - (*AccountData_AndroidSpecificSettings)(nil), // 127: signal.backup.AccountData.AndroidSpecificSettings - (*Contact_Registered)(nil), // 128: signal.backup.Contact.Registered - (*Contact_NotRegistered)(nil), // 129: signal.backup.Contact.NotRegistered - (*Contact_Name)(nil), // 130: signal.backup.Contact.Name - (*Group_GroupSnapshot)(nil), // 131: signal.backup.Group.GroupSnapshot - (*Group_GroupAttributeBlob)(nil), // 132: signal.backup.Group.GroupAttributeBlob - (*Group_Member)(nil), // 133: signal.backup.Group.Member - (*Group_MemberPendingProfileKey)(nil), // 134: signal.backup.Group.MemberPendingProfileKey - (*Group_MemberPendingAdminApproval)(nil), // 135: signal.backup.Group.MemberPendingAdminApproval - (*Group_MemberBanned)(nil), // 136: signal.backup.Group.MemberBanned - (*Group_AccessControl)(nil), // 137: signal.backup.Group.AccessControl - (*ChatItem_IncomingMessageDetails)(nil), // 138: signal.backup.ChatItem.IncomingMessageDetails - (*ChatItem_OutgoingMessageDetails)(nil), // 139: signal.backup.ChatItem.OutgoingMessageDetails - (*ChatItem_DirectionlessMessageDetails)(nil), // 140: signal.backup.ChatItem.DirectionlessMessageDetails - (*ChatItem_PinDetails)(nil), // 141: signal.backup.ChatItem.PinDetails - (*SendStatus_Pending)(nil), // 142: signal.backup.SendStatus.Pending - (*SendStatus_Sent)(nil), // 143: signal.backup.SendStatus.Sent - (*SendStatus_Delivered)(nil), // 144: signal.backup.SendStatus.Delivered - (*SendStatus_Read)(nil), // 145: signal.backup.SendStatus.Read - (*SendStatus_Viewed)(nil), // 146: signal.backup.SendStatus.Viewed - (*SendStatus_Skipped)(nil), // 147: signal.backup.SendStatus.Skipped - (*SendStatus_Failed)(nil), // 148: signal.backup.SendStatus.Failed - (*DirectStoryReplyMessage_TextReply)(nil), // 149: signal.backup.DirectStoryReplyMessage.TextReply - (*PaymentNotification_TransactionDetails)(nil), // 150: signal.backup.PaymentNotification.TransactionDetails - (*PaymentNotification_TransactionDetails_MobileCoinTxoIdentification)(nil), // 151: signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification - (*PaymentNotification_TransactionDetails_FailedTransaction)(nil), // 152: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction - (*PaymentNotification_TransactionDetails_Transaction)(nil), // 153: signal.backup.PaymentNotification.TransactionDetails.Transaction - (*ContactAttachment_Name)(nil), // 154: signal.backup.ContactAttachment.Name - (*ContactAttachment_Phone)(nil), // 155: signal.backup.ContactAttachment.Phone - (*ContactAttachment_Email)(nil), // 156: signal.backup.ContactAttachment.Email - (*ContactAttachment_PostalAddress)(nil), // 157: signal.backup.ContactAttachment.PostalAddress - (*FilePointer_LocatorInfo)(nil), // 158: signal.backup.FilePointer.LocatorInfo - (*Quote_QuotedAttachment)(nil), // 159: signal.backup.Quote.QuotedAttachment - (*Poll_PollOption)(nil), // 160: signal.backup.Poll.PollOption - (*Poll_PollOption_PollVote)(nil), // 161: signal.backup.Poll.PollOption.PollVote - (*GroupChangeChatUpdate_Update)(nil), // 162: signal.backup.GroupChangeChatUpdate.Update - (*GroupInvitationRevokedUpdate_Invitee)(nil), // 163: signal.backup.GroupInvitationRevokedUpdate.Invitee - (*ChatStyle_Gradient)(nil), // 164: signal.backup.ChatStyle.Gradient - (*ChatStyle_CustomChatColor)(nil), // 165: signal.backup.ChatStyle.CustomChatColor - (*ChatStyle_AutomaticBubbleColor)(nil), // 166: signal.backup.ChatStyle.AutomaticBubbleColor + (*ChatUpdateMessage)(nil), // 69: signal.backup.ChatUpdateMessage + (*IndividualCall)(nil), // 70: signal.backup.IndividualCall + (*GroupCall)(nil), // 71: signal.backup.GroupCall + (*SimpleChatUpdate)(nil), // 72: signal.backup.SimpleChatUpdate + (*ExpirationTimerChatUpdate)(nil), // 73: signal.backup.ExpirationTimerChatUpdate + (*ProfileChangeChatUpdate)(nil), // 74: signal.backup.ProfileChangeChatUpdate + (*LearnedProfileChatUpdate)(nil), // 75: signal.backup.LearnedProfileChatUpdate + (*ThreadMergeChatUpdate)(nil), // 76: signal.backup.ThreadMergeChatUpdate + (*SessionSwitchoverChatUpdate)(nil), // 77: signal.backup.SessionSwitchoverChatUpdate + (*GroupChangeChatUpdate)(nil), // 78: signal.backup.GroupChangeChatUpdate + (*GenericGroupUpdate)(nil), // 79: signal.backup.GenericGroupUpdate + (*GroupCreationUpdate)(nil), // 80: signal.backup.GroupCreationUpdate + (*GroupNameUpdate)(nil), // 81: signal.backup.GroupNameUpdate + (*GroupAvatarUpdate)(nil), // 82: signal.backup.GroupAvatarUpdate + (*GroupDescriptionUpdate)(nil), // 83: signal.backup.GroupDescriptionUpdate + (*GroupMembershipAccessLevelChangeUpdate)(nil), // 84: signal.backup.GroupMembershipAccessLevelChangeUpdate + (*GroupAttributesAccessLevelChangeUpdate)(nil), // 85: signal.backup.GroupAttributesAccessLevelChangeUpdate + (*GroupAnnouncementOnlyChangeUpdate)(nil), // 86: signal.backup.GroupAnnouncementOnlyChangeUpdate + (*GroupAdminStatusUpdate)(nil), // 87: signal.backup.GroupAdminStatusUpdate + (*GroupMemberLeftUpdate)(nil), // 88: signal.backup.GroupMemberLeftUpdate + (*GroupMemberRemovedUpdate)(nil), // 89: signal.backup.GroupMemberRemovedUpdate + (*SelfInvitedToGroupUpdate)(nil), // 90: signal.backup.SelfInvitedToGroupUpdate + (*SelfInvitedOtherUserToGroupUpdate)(nil), // 91: signal.backup.SelfInvitedOtherUserToGroupUpdate + (*GroupUnknownInviteeUpdate)(nil), // 92: signal.backup.GroupUnknownInviteeUpdate + (*GroupInvitationAcceptedUpdate)(nil), // 93: signal.backup.GroupInvitationAcceptedUpdate + (*GroupInvitationDeclinedUpdate)(nil), // 94: signal.backup.GroupInvitationDeclinedUpdate + (*GroupMemberJoinedUpdate)(nil), // 95: signal.backup.GroupMemberJoinedUpdate + (*GroupMemberAddedUpdate)(nil), // 96: signal.backup.GroupMemberAddedUpdate + (*GroupSelfInvitationRevokedUpdate)(nil), // 97: signal.backup.GroupSelfInvitationRevokedUpdate + (*GroupInvitationRevokedUpdate)(nil), // 98: signal.backup.GroupInvitationRevokedUpdate + (*GroupJoinRequestUpdate)(nil), // 99: signal.backup.GroupJoinRequestUpdate + (*GroupJoinRequestApprovalUpdate)(nil), // 100: signal.backup.GroupJoinRequestApprovalUpdate + (*GroupJoinRequestCanceledUpdate)(nil), // 101: signal.backup.GroupJoinRequestCanceledUpdate + (*GroupSequenceOfRequestsAndCancelsUpdate)(nil), // 102: signal.backup.GroupSequenceOfRequestsAndCancelsUpdate + (*GroupInviteLinkResetUpdate)(nil), // 103: signal.backup.GroupInviteLinkResetUpdate + (*GroupInviteLinkEnabledUpdate)(nil), // 104: signal.backup.GroupInviteLinkEnabledUpdate + (*GroupInviteLinkAdminApprovalUpdate)(nil), // 105: signal.backup.GroupInviteLinkAdminApprovalUpdate + (*GroupInviteLinkDisabledUpdate)(nil), // 106: signal.backup.GroupInviteLinkDisabledUpdate + (*GroupMemberJoinedByLinkUpdate)(nil), // 107: signal.backup.GroupMemberJoinedByLinkUpdate + (*GroupV2MigrationUpdate)(nil), // 108: signal.backup.GroupV2MigrationUpdate + (*GroupV2MigrationSelfInvitedUpdate)(nil), // 109: signal.backup.GroupV2MigrationSelfInvitedUpdate + (*GroupV2MigrationInvitedMembersUpdate)(nil), // 110: signal.backup.GroupV2MigrationInvitedMembersUpdate + (*GroupV2MigrationDroppedMembersUpdate)(nil), // 111: signal.backup.GroupV2MigrationDroppedMembersUpdate + (*GroupExpirationTimerUpdate)(nil), // 112: signal.backup.GroupExpirationTimerUpdate + (*PollTerminateUpdate)(nil), // 113: signal.backup.PollTerminateUpdate + (*PinMessageUpdate)(nil), // 114: signal.backup.PinMessageUpdate + (*StickerPack)(nil), // 115: signal.backup.StickerPack + (*ChatStyle)(nil), // 116: signal.backup.ChatStyle + (*NotificationProfile)(nil), // 117: signal.backup.NotificationProfile + (*ChatFolder)(nil), // 118: signal.backup.ChatFolder + (*AccountData_UsernameLink)(nil), // 119: signal.backup.AccountData.UsernameLink + (*AccountData_AutoDownloadSettings)(nil), // 120: signal.backup.AccountData.AutoDownloadSettings + (*AccountData_AccountSettings)(nil), // 121: signal.backup.AccountData.AccountSettings + (*AccountData_SubscriberData)(nil), // 122: signal.backup.AccountData.SubscriberData + (*AccountData_IAPSubscriberData)(nil), // 123: signal.backup.AccountData.IAPSubscriberData + (*AccountData_AndroidSpecificSettings)(nil), // 124: signal.backup.AccountData.AndroidSpecificSettings + (*Contact_Registered)(nil), // 125: signal.backup.Contact.Registered + (*Contact_NotRegistered)(nil), // 126: signal.backup.Contact.NotRegistered + (*Contact_Name)(nil), // 127: signal.backup.Contact.Name + (*Group_GroupSnapshot)(nil), // 128: signal.backup.Group.GroupSnapshot + (*Group_GroupAttributeBlob)(nil), // 129: signal.backup.Group.GroupAttributeBlob + (*Group_Member)(nil), // 130: signal.backup.Group.Member + (*Group_MemberPendingProfileKey)(nil), // 131: signal.backup.Group.MemberPendingProfileKey + (*Group_MemberPendingAdminApproval)(nil), // 132: signal.backup.Group.MemberPendingAdminApproval + (*Group_MemberBanned)(nil), // 133: signal.backup.Group.MemberBanned + (*Group_AccessControl)(nil), // 134: signal.backup.Group.AccessControl + (*ChatItem_IncomingMessageDetails)(nil), // 135: signal.backup.ChatItem.IncomingMessageDetails + (*ChatItem_OutgoingMessageDetails)(nil), // 136: signal.backup.ChatItem.OutgoingMessageDetails + (*ChatItem_DirectionlessMessageDetails)(nil), // 137: signal.backup.ChatItem.DirectionlessMessageDetails + (*ChatItem_PinDetails)(nil), // 138: signal.backup.ChatItem.PinDetails + (*SendStatus_Pending)(nil), // 139: signal.backup.SendStatus.Pending + (*SendStatus_Sent)(nil), // 140: signal.backup.SendStatus.Sent + (*SendStatus_Delivered)(nil), // 141: signal.backup.SendStatus.Delivered + (*SendStatus_Read)(nil), // 142: signal.backup.SendStatus.Read + (*SendStatus_Viewed)(nil), // 143: signal.backup.SendStatus.Viewed + (*SendStatus_Skipped)(nil), // 144: signal.backup.SendStatus.Skipped + (*SendStatus_Failed)(nil), // 145: signal.backup.SendStatus.Failed + (*DirectStoryReplyMessage_TextReply)(nil), // 146: signal.backup.DirectStoryReplyMessage.TextReply + (*PaymentNotification_TransactionDetails)(nil), // 147: signal.backup.PaymentNotification.TransactionDetails + (*PaymentNotification_TransactionDetails_MobileCoinTxoIdentification)(nil), // 148: signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification + (*PaymentNotification_TransactionDetails_FailedTransaction)(nil), // 149: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction + (*PaymentNotification_TransactionDetails_Transaction)(nil), // 150: signal.backup.PaymentNotification.TransactionDetails.Transaction + (*ContactAttachment_Name)(nil), // 151: signal.backup.ContactAttachment.Name + (*ContactAttachment_Phone)(nil), // 152: signal.backup.ContactAttachment.Phone + (*ContactAttachment_Email)(nil), // 153: signal.backup.ContactAttachment.Email + (*ContactAttachment_PostalAddress)(nil), // 154: signal.backup.ContactAttachment.PostalAddress + (*FilePointer_LocatorInfo)(nil), // 155: signal.backup.FilePointer.LocatorInfo + (*Quote_QuotedAttachment)(nil), // 156: signal.backup.Quote.QuotedAttachment + (*Poll_PollOption)(nil), // 157: signal.backup.Poll.PollOption + (*Poll_PollOption_PollVote)(nil), // 158: signal.backup.Poll.PollOption.PollVote + (*GroupChangeChatUpdate_Update)(nil), // 159: signal.backup.GroupChangeChatUpdate.Update + (*GroupInvitationRevokedUpdate_Invitee)(nil), // 160: signal.backup.GroupInvitationRevokedUpdate.Invitee + (*ChatStyle_Gradient)(nil), // 161: signal.backup.ChatStyle.Gradient + (*ChatStyle_CustomChatColor)(nil), // 162: signal.backup.ChatStyle.CustomChatColor + (*ChatStyle_AutomaticBubbleColor)(nil), // 163: signal.backup.ChatStyle.AutomaticBubbleColor } var file_backuppb_Backup_proto_depIdxs = []int32{ 38, // 0: signal.backup.Frame.account:type_name -> signal.backup.AccountData 39, // 1: signal.backup.Frame.recipient:type_name -> signal.backup.Recipient 44, // 2: signal.backup.Frame.chat:type_name -> signal.backup.Chat 49, // 3: signal.backup.Frame.chatItem:type_name -> signal.backup.ChatItem - 118, // 4: signal.backup.Frame.stickerPack:type_name -> signal.backup.StickerPack + 115, // 4: signal.backup.Frame.stickerPack:type_name -> signal.backup.StickerPack 46, // 5: signal.backup.Frame.adHocCall:type_name -> signal.backup.AdHocCall - 120, // 6: signal.backup.Frame.notificationProfile:type_name -> signal.backup.NotificationProfile - 121, // 7: signal.backup.Frame.chatFolder:type_name -> signal.backup.ChatFolder - 122, // 8: signal.backup.AccountData.usernameLink:type_name -> signal.backup.AccountData.UsernameLink - 125, // 9: signal.backup.AccountData.donationSubscriberData:type_name -> signal.backup.AccountData.SubscriberData - 124, // 10: signal.backup.AccountData.accountSettings:type_name -> signal.backup.AccountData.AccountSettings - 126, // 11: signal.backup.AccountData.backupsSubscriberData:type_name -> signal.backup.AccountData.IAPSubscriberData - 127, // 12: signal.backup.AccountData.androidSpecificSettings:type_name -> signal.backup.AccountData.AndroidSpecificSettings + 117, // 6: signal.backup.Frame.notificationProfile:type_name -> signal.backup.NotificationProfile + 118, // 7: signal.backup.Frame.chatFolder:type_name -> signal.backup.ChatFolder + 119, // 8: signal.backup.AccountData.usernameLink:type_name -> signal.backup.AccountData.UsernameLink + 122, // 9: signal.backup.AccountData.donationSubscriberData:type_name -> signal.backup.AccountData.SubscriberData + 121, // 10: signal.backup.AccountData.accountSettings:type_name -> signal.backup.AccountData.AccountSettings + 123, // 11: signal.backup.AccountData.backupsSubscriberData:type_name -> signal.backup.AccountData.IAPSubscriberData + 124, // 12: signal.backup.AccountData.androidSpecificSettings:type_name -> signal.backup.AccountData.AndroidSpecificSettings 40, // 13: signal.backup.Recipient.contact:type_name -> signal.backup.Contact 41, // 14: signal.backup.Recipient.group:type_name -> signal.backup.Group 47, // 15: signal.backup.Recipient.distributionList:type_name -> signal.backup.DistributionListItem @@ -13618,186 +13380,181 @@ var file_backuppb_Backup_proto_depIdxs = []int32{ 43, // 17: signal.backup.Recipient.releaseNotes:type_name -> signal.backup.ReleaseNotes 45, // 18: signal.backup.Recipient.callLink:type_name -> signal.backup.CallLink 10, // 19: signal.backup.Contact.visibility:type_name -> signal.backup.Contact.Visibility - 128, // 20: signal.backup.Contact.registered:type_name -> signal.backup.Contact.Registered - 129, // 21: signal.backup.Contact.notRegistered:type_name -> signal.backup.Contact.NotRegistered + 125, // 20: signal.backup.Contact.registered:type_name -> signal.backup.Contact.Registered + 126, // 21: signal.backup.Contact.notRegistered:type_name -> signal.backup.Contact.NotRegistered 9, // 22: signal.backup.Contact.identityState:type_name -> signal.backup.Contact.IdentityState - 130, // 23: signal.backup.Contact.nickname:type_name -> signal.backup.Contact.Name + 127, // 23: signal.backup.Contact.nickname:type_name -> signal.backup.Contact.Name 0, // 24: signal.backup.Contact.avatarColor:type_name -> signal.backup.AvatarColor 11, // 25: signal.backup.Group.storySendMode:type_name -> signal.backup.Group.StorySendMode - 131, // 26: signal.backup.Group.snapshot:type_name -> signal.backup.Group.GroupSnapshot + 128, // 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 - 119, // 29: signal.backup.Chat.style:type_name -> signal.backup.ChatStyle + 116, // 29: signal.backup.Chat.style:type_name -> signal.backup.ChatStyle 14, // 30: signal.backup.CallLink.restrictions:type_name -> signal.backup.CallLink.Restrictions 15, // 31: signal.backup.AdHocCall.state:type_name -> signal.backup.AdHocCall.State 48, // 32: signal.backup.DistributionListItem.distributionList:type_name -> signal.backup.DistributionList 16, // 33: signal.backup.DistributionList.privacyMode:type_name -> signal.backup.DistributionList.PrivacyMode 49, // 34: signal.backup.ChatItem.revisions:type_name -> signal.backup.ChatItem - 138, // 35: signal.backup.ChatItem.incoming:type_name -> signal.backup.ChatItem.IncomingMessageDetails - 139, // 36: signal.backup.ChatItem.outgoing:type_name -> signal.backup.ChatItem.OutgoingMessageDetails - 140, // 37: signal.backup.ChatItem.directionless:type_name -> signal.backup.ChatItem.DirectionlessMessageDetails + 135, // 35: signal.backup.ChatItem.incoming:type_name -> signal.backup.ChatItem.IncomingMessageDetails + 136, // 36: signal.backup.ChatItem.outgoing:type_name -> signal.backup.ChatItem.OutgoingMessageDetails + 137, // 37: signal.backup.ChatItem.directionless:type_name -> signal.backup.ChatItem.DirectionlessMessageDetails 52, // 38: signal.backup.ChatItem.standardMessage:type_name -> signal.backup.StandardMessage 53, // 39: signal.backup.ChatItem.contactMessage:type_name -> signal.backup.ContactMessage 59, // 40: signal.backup.ChatItem.stickerMessage:type_name -> signal.backup.StickerMessage 60, // 41: signal.backup.ChatItem.remoteDeletedMessage:type_name -> signal.backup.RemoteDeletedMessage - 70, // 42: signal.backup.ChatItem.updateMessage:type_name -> signal.backup.ChatUpdateMessage + 69, // 42: signal.backup.ChatItem.updateMessage:type_name -> signal.backup.ChatUpdateMessage 55, // 43: signal.backup.ChatItem.paymentNotification:type_name -> signal.backup.PaymentNotification 56, // 44: signal.backup.ChatItem.giftBadge:type_name -> signal.backup.GiftBadge 57, // 45: signal.backup.ChatItem.viewOnceMessage:type_name -> signal.backup.ViewOnceMessage 54, // 46: signal.backup.ChatItem.directStoryReplyMessage:type_name -> signal.backup.DirectStoryReplyMessage 68, // 47: signal.backup.ChatItem.poll:type_name -> signal.backup.Poll - 69, // 48: signal.backup.ChatItem.adminDeletedMessage:type_name -> signal.backup.AdminDeletedMessage - 141, // 49: signal.backup.ChatItem.pinDetails:type_name -> signal.backup.ChatItem.PinDetails - 142, // 50: signal.backup.SendStatus.pending:type_name -> signal.backup.SendStatus.Pending - 143, // 51: signal.backup.SendStatus.sent:type_name -> signal.backup.SendStatus.Sent - 144, // 52: signal.backup.SendStatus.delivered:type_name -> signal.backup.SendStatus.Delivered - 145, // 53: signal.backup.SendStatus.read:type_name -> signal.backup.SendStatus.Read - 146, // 54: signal.backup.SendStatus.viewed:type_name -> signal.backup.SendStatus.Viewed - 147, // 55: signal.backup.SendStatus.skipped:type_name -> signal.backup.SendStatus.Skipped - 148, // 56: signal.backup.SendStatus.failed:type_name -> signal.backup.SendStatus.Failed - 66, // 57: signal.backup.Text.bodyRanges:type_name -> signal.backup.BodyRange - 65, // 58: signal.backup.StandardMessage.quote:type_name -> signal.backup.Quote - 51, // 59: signal.backup.StandardMessage.text:type_name -> signal.backup.Text - 63, // 60: signal.backup.StandardMessage.attachments:type_name -> signal.backup.MessageAttachment - 62, // 61: signal.backup.StandardMessage.linkPreview:type_name -> signal.backup.LinkPreview - 64, // 62: signal.backup.StandardMessage.longText:type_name -> signal.backup.FilePointer - 67, // 63: signal.backup.StandardMessage.reactions:type_name -> signal.backup.Reaction - 58, // 64: signal.backup.ContactMessage.contact:type_name -> signal.backup.ContactAttachment - 67, // 65: signal.backup.ContactMessage.reactions:type_name -> signal.backup.Reaction - 149, // 66: signal.backup.DirectStoryReplyMessage.textReply:type_name -> signal.backup.DirectStoryReplyMessage.TextReply - 67, // 67: signal.backup.DirectStoryReplyMessage.reactions:type_name -> signal.backup.Reaction - 150, // 68: signal.backup.PaymentNotification.transactionDetails:type_name -> signal.backup.PaymentNotification.TransactionDetails - 20, // 69: signal.backup.GiftBadge.state:type_name -> signal.backup.GiftBadge.State - 63, // 70: signal.backup.ViewOnceMessage.attachment:type_name -> signal.backup.MessageAttachment - 67, // 71: signal.backup.ViewOnceMessage.reactions:type_name -> signal.backup.Reaction - 154, // 72: signal.backup.ContactAttachment.name:type_name -> signal.backup.ContactAttachment.Name - 155, // 73: signal.backup.ContactAttachment.number:type_name -> signal.backup.ContactAttachment.Phone - 156, // 74: signal.backup.ContactAttachment.email:type_name -> signal.backup.ContactAttachment.Email - 157, // 75: signal.backup.ContactAttachment.address:type_name -> signal.backup.ContactAttachment.PostalAddress - 64, // 76: signal.backup.ContactAttachment.avatar:type_name -> signal.backup.FilePointer - 61, // 77: signal.backup.StickerMessage.sticker:type_name -> signal.backup.Sticker - 67, // 78: signal.backup.StickerMessage.reactions:type_name -> signal.backup.Reaction - 64, // 79: signal.backup.Sticker.data:type_name -> signal.backup.FilePointer - 64, // 80: signal.backup.LinkPreview.image:type_name -> signal.backup.FilePointer - 64, // 81: signal.backup.MessageAttachment.pointer:type_name -> signal.backup.FilePointer - 24, // 82: signal.backup.MessageAttachment.flag:type_name -> signal.backup.MessageAttachment.Flag - 158, // 83: signal.backup.FilePointer.locatorInfo:type_name -> signal.backup.FilePointer.LocatorInfo - 51, // 84: signal.backup.Quote.text:type_name -> signal.backup.Text - 159, // 85: signal.backup.Quote.attachments:type_name -> signal.backup.Quote.QuotedAttachment - 25, // 86: signal.backup.Quote.type:type_name -> signal.backup.Quote.Type - 26, // 87: signal.backup.BodyRange.style:type_name -> signal.backup.BodyRange.Style - 160, // 88: signal.backup.Poll.options:type_name -> signal.backup.Poll.PollOption - 67, // 89: signal.backup.Poll.reactions:type_name -> signal.backup.Reaction - 73, // 90: signal.backup.ChatUpdateMessage.simpleUpdate:type_name -> signal.backup.SimpleChatUpdate - 79, // 91: signal.backup.ChatUpdateMessage.groupChange:type_name -> signal.backup.GroupChangeChatUpdate - 74, // 92: signal.backup.ChatUpdateMessage.expirationTimerChange:type_name -> signal.backup.ExpirationTimerChatUpdate - 75, // 93: signal.backup.ChatUpdateMessage.profileChange:type_name -> signal.backup.ProfileChangeChatUpdate - 77, // 94: signal.backup.ChatUpdateMessage.threadMerge:type_name -> signal.backup.ThreadMergeChatUpdate - 78, // 95: signal.backup.ChatUpdateMessage.sessionSwitchover:type_name -> signal.backup.SessionSwitchoverChatUpdate - 71, // 96: signal.backup.ChatUpdateMessage.individualCall:type_name -> signal.backup.IndividualCall - 72, // 97: signal.backup.ChatUpdateMessage.groupCall:type_name -> signal.backup.GroupCall - 76, // 98: signal.backup.ChatUpdateMessage.learnedProfileChange:type_name -> signal.backup.LearnedProfileChatUpdate - 116, // 99: signal.backup.ChatUpdateMessage.pollTerminate:type_name -> signal.backup.PollTerminateUpdate - 117, // 100: signal.backup.ChatUpdateMessage.pinMessage:type_name -> signal.backup.PinMessageUpdate - 27, // 101: signal.backup.IndividualCall.type:type_name -> signal.backup.IndividualCall.Type - 28, // 102: signal.backup.IndividualCall.direction:type_name -> signal.backup.IndividualCall.Direction - 29, // 103: signal.backup.IndividualCall.state:type_name -> signal.backup.IndividualCall.State - 30, // 104: signal.backup.GroupCall.state:type_name -> signal.backup.GroupCall.State - 31, // 105: signal.backup.SimpleChatUpdate.type:type_name -> signal.backup.SimpleChatUpdate.Type - 162, // 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 - 163, // 110: signal.backup.GroupInvitationRevokedUpdate.invitees:type_name -> signal.backup.GroupInvitationRevokedUpdate.Invitee - 32, // 111: signal.backup.ChatStyle.wallpaperPreset:type_name -> signal.backup.ChatStyle.WallpaperPreset - 64, // 112: signal.backup.ChatStyle.wallpaperPhoto:type_name -> signal.backup.FilePointer - 166, // 113: signal.backup.ChatStyle.autoBubbleColor:type_name -> signal.backup.ChatStyle.AutomaticBubbleColor - 33, // 114: signal.backup.ChatStyle.bubbleColorPreset:type_name -> signal.backup.ChatStyle.BubbleColorPreset - 34, // 115: signal.backup.NotificationProfile.scheduleDaysEnabled:type_name -> signal.backup.NotificationProfile.DayOfWeek - 35, // 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 - 119, // 123: signal.backup.AccountData.AccountSettings.defaultChatStyle:type_name -> signal.backup.ChatStyle - 165, // 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 - 123, // 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.AndroidSpecificSettings.navigationBarSize:type_name -> signal.backup.AccountData.AndroidSpecificSettings.NavigationBarSize - 132, // 130: signal.backup.Group.GroupSnapshot.title:type_name -> signal.backup.Group.GroupAttributeBlob - 132, // 131: signal.backup.Group.GroupSnapshot.description:type_name -> signal.backup.Group.GroupAttributeBlob - 132, // 132: signal.backup.Group.GroupSnapshot.disappearingMessagesTimer:type_name -> signal.backup.Group.GroupAttributeBlob - 137, // 133: signal.backup.Group.GroupSnapshot.accessControl:type_name -> signal.backup.Group.AccessControl - 133, // 134: signal.backup.Group.GroupSnapshot.members:type_name -> signal.backup.Group.Member - 134, // 135: signal.backup.Group.GroupSnapshot.membersPendingProfileKey:type_name -> signal.backup.Group.MemberPendingProfileKey - 135, // 136: signal.backup.Group.GroupSnapshot.membersPendingAdminApproval:type_name -> signal.backup.Group.MemberPendingAdminApproval - 136, // 137: signal.backup.Group.GroupSnapshot.members_banned:type_name -> signal.backup.Group.MemberBanned - 12, // 138: signal.backup.Group.Member.role:type_name -> signal.backup.Group.Member.Role - 133, // 139: signal.backup.Group.MemberPendingProfileKey.member:type_name -> signal.backup.Group.Member - 13, // 140: signal.backup.Group.AccessControl.attributes:type_name -> signal.backup.Group.AccessControl.AccessRequired - 13, // 141: signal.backup.Group.AccessControl.members:type_name -> signal.backup.Group.AccessControl.AccessRequired - 13, // 142: signal.backup.Group.AccessControl.addFromInviteLink:type_name -> signal.backup.Group.AccessControl.AccessRequired - 13, // 143: signal.backup.Group.AccessControl.memberLabel:type_name -> signal.backup.Group.AccessControl.AccessRequired - 50, // 144: signal.backup.ChatItem.OutgoingMessageDetails.sendStatus:type_name -> signal.backup.SendStatus - 17, // 145: signal.backup.SendStatus.Failed.reason:type_name -> signal.backup.SendStatus.Failed.FailureReason - 51, // 146: signal.backup.DirectStoryReplyMessage.TextReply.text:type_name -> signal.backup.Text - 64, // 147: signal.backup.DirectStoryReplyMessage.TextReply.longText:type_name -> signal.backup.FilePointer - 153, // 148: signal.backup.PaymentNotification.TransactionDetails.transaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction - 152, // 149: signal.backup.PaymentNotification.TransactionDetails.failedTransaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction - 18, // 150: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.reason:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.FailureReason - 19, // 151: signal.backup.PaymentNotification.TransactionDetails.Transaction.status:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction.Status - 151, // 152: signal.backup.PaymentNotification.TransactionDetails.Transaction.mobileCoinIdentification:type_name -> signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification - 21, // 153: signal.backup.ContactAttachment.Phone.type:type_name -> signal.backup.ContactAttachment.Phone.Type - 22, // 154: signal.backup.ContactAttachment.Email.type:type_name -> signal.backup.ContactAttachment.Email.Type - 23, // 155: signal.backup.ContactAttachment.PostalAddress.type:type_name -> signal.backup.ContactAttachment.PostalAddress.Type - 63, // 156: signal.backup.Quote.QuotedAttachment.thumbnail:type_name -> signal.backup.MessageAttachment - 161, // 157: signal.backup.Poll.PollOption.votes:type_name -> signal.backup.Poll.PollOption.PollVote - 80, // 158: signal.backup.GroupChangeChatUpdate.Update.genericGroupUpdate:type_name -> signal.backup.GenericGroupUpdate - 81, // 159: signal.backup.GroupChangeChatUpdate.Update.groupCreationUpdate:type_name -> signal.backup.GroupCreationUpdate - 82, // 160: signal.backup.GroupChangeChatUpdate.Update.groupNameUpdate:type_name -> signal.backup.GroupNameUpdate - 83, // 161: signal.backup.GroupChangeChatUpdate.Update.groupAvatarUpdate:type_name -> signal.backup.GroupAvatarUpdate - 84, // 162: signal.backup.GroupChangeChatUpdate.Update.groupDescriptionUpdate:type_name -> signal.backup.GroupDescriptionUpdate - 85, // 163: signal.backup.GroupChangeChatUpdate.Update.groupMembershipAccessLevelChangeUpdate:type_name -> signal.backup.GroupMembershipAccessLevelChangeUpdate - 86, // 164: signal.backup.GroupChangeChatUpdate.Update.groupAttributesAccessLevelChangeUpdate:type_name -> signal.backup.GroupAttributesAccessLevelChangeUpdate - 89, // 165: signal.backup.GroupChangeChatUpdate.Update.groupAnnouncementOnlyChangeUpdate:type_name -> signal.backup.GroupAnnouncementOnlyChangeUpdate - 90, // 166: signal.backup.GroupChangeChatUpdate.Update.groupAdminStatusUpdate:type_name -> signal.backup.GroupAdminStatusUpdate - 91, // 167: signal.backup.GroupChangeChatUpdate.Update.groupMemberLeftUpdate:type_name -> signal.backup.GroupMemberLeftUpdate - 92, // 168: signal.backup.GroupChangeChatUpdate.Update.groupMemberRemovedUpdate:type_name -> signal.backup.GroupMemberRemovedUpdate - 93, // 169: signal.backup.GroupChangeChatUpdate.Update.selfInvitedToGroupUpdate:type_name -> signal.backup.SelfInvitedToGroupUpdate - 94, // 170: signal.backup.GroupChangeChatUpdate.Update.selfInvitedOtherUserToGroupUpdate:type_name -> signal.backup.SelfInvitedOtherUserToGroupUpdate - 95, // 171: signal.backup.GroupChangeChatUpdate.Update.groupUnknownInviteeUpdate:type_name -> signal.backup.GroupUnknownInviteeUpdate - 96, // 172: signal.backup.GroupChangeChatUpdate.Update.groupInvitationAcceptedUpdate:type_name -> signal.backup.GroupInvitationAcceptedUpdate - 97, // 173: signal.backup.GroupChangeChatUpdate.Update.groupInvitationDeclinedUpdate:type_name -> signal.backup.GroupInvitationDeclinedUpdate - 98, // 174: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedUpdate:type_name -> signal.backup.GroupMemberJoinedUpdate - 99, // 175: signal.backup.GroupChangeChatUpdate.Update.groupMemberAddedUpdate:type_name -> signal.backup.GroupMemberAddedUpdate - 100, // 176: signal.backup.GroupChangeChatUpdate.Update.groupSelfInvitationRevokedUpdate:type_name -> signal.backup.GroupSelfInvitationRevokedUpdate - 101, // 177: signal.backup.GroupChangeChatUpdate.Update.groupInvitationRevokedUpdate:type_name -> signal.backup.GroupInvitationRevokedUpdate - 102, // 178: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestUpdate:type_name -> signal.backup.GroupJoinRequestUpdate - 103, // 179: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestApprovalUpdate:type_name -> signal.backup.GroupJoinRequestApprovalUpdate - 104, // 180: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestCanceledUpdate:type_name -> signal.backup.GroupJoinRequestCanceledUpdate - 106, // 181: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkResetUpdate:type_name -> signal.backup.GroupInviteLinkResetUpdate - 107, // 182: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkEnabledUpdate:type_name -> signal.backup.GroupInviteLinkEnabledUpdate - 108, // 183: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkAdminApprovalUpdate:type_name -> signal.backup.GroupInviteLinkAdminApprovalUpdate - 109, // 184: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkDisabledUpdate:type_name -> signal.backup.GroupInviteLinkDisabledUpdate - 110, // 185: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedByLinkUpdate:type_name -> signal.backup.GroupMemberJoinedByLinkUpdate - 111, // 186: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationUpdate:type_name -> signal.backup.GroupV2MigrationUpdate - 112, // 187: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationSelfInvitedUpdate:type_name -> signal.backup.GroupV2MigrationSelfInvitedUpdate - 113, // 188: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationInvitedMembersUpdate:type_name -> signal.backup.GroupV2MigrationInvitedMembersUpdate - 114, // 189: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationDroppedMembersUpdate:type_name -> signal.backup.GroupV2MigrationDroppedMembersUpdate - 105, // 190: signal.backup.GroupChangeChatUpdate.Update.groupSequenceOfRequestsAndCancelsUpdate:type_name -> signal.backup.GroupSequenceOfRequestsAndCancelsUpdate - 115, // 191: signal.backup.GroupChangeChatUpdate.Update.groupExpirationTimerUpdate:type_name -> signal.backup.GroupExpirationTimerUpdate - 87, // 192: signal.backup.GroupChangeChatUpdate.Update.groupMemberLabelAccessLevelChangeUpdate:type_name -> signal.backup.GroupMemberLabelAccessLevelChangeUpdate - 88, // 193: signal.backup.GroupChangeChatUpdate.Update.groupTerminateChangeUpdate:type_name -> signal.backup.GroupTerminateChangeUpdate - 164, // 194: signal.backup.ChatStyle.CustomChatColor.gradient:type_name -> signal.backup.ChatStyle.Gradient - 195, // [195:195] is the sub-list for method output_type - 195, // [195:195] is the sub-list for method input_type - 195, // [195:195] is the sub-list for extension type_name - 195, // [195:195] is the sub-list for extension extendee - 0, // [0:195] is the sub-list for field type_name + 138, // 48: signal.backup.ChatItem.pinDetails:type_name -> signal.backup.ChatItem.PinDetails + 139, // 49: signal.backup.SendStatus.pending:type_name -> signal.backup.SendStatus.Pending + 140, // 50: signal.backup.SendStatus.sent:type_name -> signal.backup.SendStatus.Sent + 141, // 51: signal.backup.SendStatus.delivered:type_name -> signal.backup.SendStatus.Delivered + 142, // 52: signal.backup.SendStatus.read:type_name -> signal.backup.SendStatus.Read + 143, // 53: signal.backup.SendStatus.viewed:type_name -> signal.backup.SendStatus.Viewed + 144, // 54: signal.backup.SendStatus.skipped:type_name -> signal.backup.SendStatus.Skipped + 145, // 55: signal.backup.SendStatus.failed:type_name -> signal.backup.SendStatus.Failed + 66, // 56: signal.backup.Text.bodyRanges:type_name -> signal.backup.BodyRange + 65, // 57: signal.backup.StandardMessage.quote:type_name -> signal.backup.Quote + 51, // 58: signal.backup.StandardMessage.text:type_name -> signal.backup.Text + 63, // 59: signal.backup.StandardMessage.attachments:type_name -> signal.backup.MessageAttachment + 62, // 60: signal.backup.StandardMessage.linkPreview:type_name -> signal.backup.LinkPreview + 64, // 61: signal.backup.StandardMessage.longText:type_name -> signal.backup.FilePointer + 67, // 62: signal.backup.StandardMessage.reactions:type_name -> signal.backup.Reaction + 58, // 63: signal.backup.ContactMessage.contact:type_name -> signal.backup.ContactAttachment + 67, // 64: signal.backup.ContactMessage.reactions:type_name -> signal.backup.Reaction + 146, // 65: signal.backup.DirectStoryReplyMessage.textReply:type_name -> signal.backup.DirectStoryReplyMessage.TextReply + 67, // 66: signal.backup.DirectStoryReplyMessage.reactions:type_name -> signal.backup.Reaction + 147, // 67: signal.backup.PaymentNotification.transactionDetails:type_name -> signal.backup.PaymentNotification.TransactionDetails + 20, // 68: signal.backup.GiftBadge.state:type_name -> signal.backup.GiftBadge.State + 63, // 69: signal.backup.ViewOnceMessage.attachment:type_name -> signal.backup.MessageAttachment + 67, // 70: signal.backup.ViewOnceMessage.reactions:type_name -> signal.backup.Reaction + 151, // 71: signal.backup.ContactAttachment.name:type_name -> signal.backup.ContactAttachment.Name + 152, // 72: signal.backup.ContactAttachment.number:type_name -> signal.backup.ContactAttachment.Phone + 153, // 73: signal.backup.ContactAttachment.email:type_name -> signal.backup.ContactAttachment.Email + 154, // 74: signal.backup.ContactAttachment.address:type_name -> signal.backup.ContactAttachment.PostalAddress + 64, // 75: signal.backup.ContactAttachment.avatar:type_name -> signal.backup.FilePointer + 61, // 76: signal.backup.StickerMessage.sticker:type_name -> signal.backup.Sticker + 67, // 77: signal.backup.StickerMessage.reactions:type_name -> signal.backup.Reaction + 64, // 78: signal.backup.Sticker.data:type_name -> signal.backup.FilePointer + 64, // 79: signal.backup.LinkPreview.image:type_name -> signal.backup.FilePointer + 64, // 80: signal.backup.MessageAttachment.pointer:type_name -> signal.backup.FilePointer + 24, // 81: signal.backup.MessageAttachment.flag:type_name -> signal.backup.MessageAttachment.Flag + 155, // 82: signal.backup.FilePointer.locatorInfo:type_name -> signal.backup.FilePointer.LocatorInfo + 51, // 83: signal.backup.Quote.text:type_name -> signal.backup.Text + 156, // 84: signal.backup.Quote.attachments:type_name -> signal.backup.Quote.QuotedAttachment + 25, // 85: signal.backup.Quote.type:type_name -> signal.backup.Quote.Type + 26, // 86: signal.backup.BodyRange.style:type_name -> signal.backup.BodyRange.Style + 157, // 87: signal.backup.Poll.options:type_name -> signal.backup.Poll.PollOption + 67, // 88: signal.backup.Poll.reactions:type_name -> signal.backup.Reaction + 72, // 89: signal.backup.ChatUpdateMessage.simpleUpdate:type_name -> signal.backup.SimpleChatUpdate + 78, // 90: signal.backup.ChatUpdateMessage.groupChange:type_name -> signal.backup.GroupChangeChatUpdate + 73, // 91: signal.backup.ChatUpdateMessage.expirationTimerChange:type_name -> signal.backup.ExpirationTimerChatUpdate + 74, // 92: signal.backup.ChatUpdateMessage.profileChange:type_name -> signal.backup.ProfileChangeChatUpdate + 76, // 93: signal.backup.ChatUpdateMessage.threadMerge:type_name -> signal.backup.ThreadMergeChatUpdate + 77, // 94: signal.backup.ChatUpdateMessage.sessionSwitchover:type_name -> signal.backup.SessionSwitchoverChatUpdate + 70, // 95: signal.backup.ChatUpdateMessage.individualCall:type_name -> signal.backup.IndividualCall + 71, // 96: signal.backup.ChatUpdateMessage.groupCall:type_name -> signal.backup.GroupCall + 75, // 97: signal.backup.ChatUpdateMessage.learnedProfileChange:type_name -> signal.backup.LearnedProfileChatUpdate + 113, // 98: signal.backup.ChatUpdateMessage.pollTerminate:type_name -> signal.backup.PollTerminateUpdate + 114, // 99: signal.backup.ChatUpdateMessage.pinMessage:type_name -> signal.backup.PinMessageUpdate + 27, // 100: signal.backup.IndividualCall.type:type_name -> signal.backup.IndividualCall.Type + 28, // 101: signal.backup.IndividualCall.direction:type_name -> signal.backup.IndividualCall.Direction + 29, // 102: signal.backup.IndividualCall.state:type_name -> signal.backup.IndividualCall.State + 30, // 103: signal.backup.GroupCall.state:type_name -> signal.backup.GroupCall.State + 31, // 104: signal.backup.SimpleChatUpdate.type:type_name -> signal.backup.SimpleChatUpdate.Type + 159, // 105: signal.backup.GroupChangeChatUpdate.updates:type_name -> signal.backup.GroupChangeChatUpdate.Update + 1, // 106: signal.backup.GroupMembershipAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel + 1, // 107: signal.backup.GroupAttributesAccessLevelChangeUpdate.accessLevel:type_name -> signal.backup.GroupV2AccessLevel + 160, // 108: signal.backup.GroupInvitationRevokedUpdate.invitees:type_name -> signal.backup.GroupInvitationRevokedUpdate.Invitee + 32, // 109: signal.backup.ChatStyle.wallpaperPreset:type_name -> signal.backup.ChatStyle.WallpaperPreset + 64, // 110: signal.backup.ChatStyle.wallpaperPhoto:type_name -> signal.backup.FilePointer + 163, // 111: signal.backup.ChatStyle.autoBubbleColor:type_name -> signal.backup.ChatStyle.AutomaticBubbleColor + 33, // 112: signal.backup.ChatStyle.bubbleColorPreset:type_name -> signal.backup.ChatStyle.BubbleColorPreset + 34, // 113: signal.backup.NotificationProfile.scheduleDaysEnabled:type_name -> signal.backup.NotificationProfile.DayOfWeek + 35, // 114: signal.backup.ChatFolder.folderType:type_name -> signal.backup.ChatFolder.FolderType + 6, // 115: signal.backup.AccountData.UsernameLink.color:type_name -> signal.backup.AccountData.UsernameLink.Color + 7, // 116: signal.backup.AccountData.AutoDownloadSettings.images:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 117: signal.backup.AccountData.AutoDownloadSettings.audio:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 118: signal.backup.AccountData.AutoDownloadSettings.video:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 7, // 119: signal.backup.AccountData.AutoDownloadSettings.documents:type_name -> signal.backup.AccountData.AutoDownloadSettings.AutoDownloadOption + 2, // 120: signal.backup.AccountData.AccountSettings.phoneNumberSharingMode:type_name -> signal.backup.AccountData.PhoneNumberSharingMode + 116, // 121: signal.backup.AccountData.AccountSettings.defaultChatStyle:type_name -> signal.backup.ChatStyle + 162, // 122: signal.backup.AccountData.AccountSettings.customChatColors:type_name -> signal.backup.ChatStyle.CustomChatColor + 3, // 123: signal.backup.AccountData.AccountSettings.defaultSentMediaQuality:type_name -> signal.backup.AccountData.SentMediaQuality + 120, // 124: signal.backup.AccountData.AccountSettings.autoDownloadSettings:type_name -> signal.backup.AccountData.AutoDownloadSettings + 4, // 125: signal.backup.AccountData.AccountSettings.appTheme:type_name -> signal.backup.AccountData.AppTheme + 5, // 126: signal.backup.AccountData.AccountSettings.callsUseLessDataSetting:type_name -> signal.backup.AccountData.CallsUseLessDataSetting + 8, // 127: signal.backup.AccountData.AndroidSpecificSettings.navigationBarSize:type_name -> signal.backup.AccountData.AndroidSpecificSettings.NavigationBarSize + 129, // 128: signal.backup.Group.GroupSnapshot.title:type_name -> signal.backup.Group.GroupAttributeBlob + 129, // 129: signal.backup.Group.GroupSnapshot.description:type_name -> signal.backup.Group.GroupAttributeBlob + 129, // 130: signal.backup.Group.GroupSnapshot.disappearingMessagesTimer:type_name -> signal.backup.Group.GroupAttributeBlob + 134, // 131: signal.backup.Group.GroupSnapshot.accessControl:type_name -> signal.backup.Group.AccessControl + 130, // 132: signal.backup.Group.GroupSnapshot.members:type_name -> signal.backup.Group.Member + 131, // 133: signal.backup.Group.GroupSnapshot.membersPendingProfileKey:type_name -> signal.backup.Group.MemberPendingProfileKey + 132, // 134: signal.backup.Group.GroupSnapshot.membersPendingAdminApproval:type_name -> signal.backup.Group.MemberPendingAdminApproval + 133, // 135: signal.backup.Group.GroupSnapshot.members_banned:type_name -> signal.backup.Group.MemberBanned + 12, // 136: signal.backup.Group.Member.role:type_name -> signal.backup.Group.Member.Role + 130, // 137: signal.backup.Group.MemberPendingProfileKey.member:type_name -> signal.backup.Group.Member + 13, // 138: signal.backup.Group.AccessControl.attributes:type_name -> signal.backup.Group.AccessControl.AccessRequired + 13, // 139: signal.backup.Group.AccessControl.members:type_name -> signal.backup.Group.AccessControl.AccessRequired + 13, // 140: signal.backup.Group.AccessControl.addFromInviteLink:type_name -> signal.backup.Group.AccessControl.AccessRequired + 50, // 141: signal.backup.ChatItem.OutgoingMessageDetails.sendStatus:type_name -> signal.backup.SendStatus + 17, // 142: signal.backup.SendStatus.Failed.reason:type_name -> signal.backup.SendStatus.Failed.FailureReason + 51, // 143: signal.backup.DirectStoryReplyMessage.TextReply.text:type_name -> signal.backup.Text + 64, // 144: signal.backup.DirectStoryReplyMessage.TextReply.longText:type_name -> signal.backup.FilePointer + 150, // 145: signal.backup.PaymentNotification.TransactionDetails.transaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction + 149, // 146: signal.backup.PaymentNotification.TransactionDetails.failedTransaction:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction + 18, // 147: signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.reason:type_name -> signal.backup.PaymentNotification.TransactionDetails.FailedTransaction.FailureReason + 19, // 148: signal.backup.PaymentNotification.TransactionDetails.Transaction.status:type_name -> signal.backup.PaymentNotification.TransactionDetails.Transaction.Status + 148, // 149: signal.backup.PaymentNotification.TransactionDetails.Transaction.mobileCoinIdentification:type_name -> signal.backup.PaymentNotification.TransactionDetails.MobileCoinTxoIdentification + 21, // 150: signal.backup.ContactAttachment.Phone.type:type_name -> signal.backup.ContactAttachment.Phone.Type + 22, // 151: signal.backup.ContactAttachment.Email.type:type_name -> signal.backup.ContactAttachment.Email.Type + 23, // 152: signal.backup.ContactAttachment.PostalAddress.type:type_name -> signal.backup.ContactAttachment.PostalAddress.Type + 63, // 153: signal.backup.Quote.QuotedAttachment.thumbnail:type_name -> signal.backup.MessageAttachment + 158, // 154: signal.backup.Poll.PollOption.votes:type_name -> signal.backup.Poll.PollOption.PollVote + 79, // 155: signal.backup.GroupChangeChatUpdate.Update.genericGroupUpdate:type_name -> signal.backup.GenericGroupUpdate + 80, // 156: signal.backup.GroupChangeChatUpdate.Update.groupCreationUpdate:type_name -> signal.backup.GroupCreationUpdate + 81, // 157: signal.backup.GroupChangeChatUpdate.Update.groupNameUpdate:type_name -> signal.backup.GroupNameUpdate + 82, // 158: signal.backup.GroupChangeChatUpdate.Update.groupAvatarUpdate:type_name -> signal.backup.GroupAvatarUpdate + 83, // 159: signal.backup.GroupChangeChatUpdate.Update.groupDescriptionUpdate:type_name -> signal.backup.GroupDescriptionUpdate + 84, // 160: signal.backup.GroupChangeChatUpdate.Update.groupMembershipAccessLevelChangeUpdate:type_name -> signal.backup.GroupMembershipAccessLevelChangeUpdate + 85, // 161: signal.backup.GroupChangeChatUpdate.Update.groupAttributesAccessLevelChangeUpdate:type_name -> signal.backup.GroupAttributesAccessLevelChangeUpdate + 86, // 162: signal.backup.GroupChangeChatUpdate.Update.groupAnnouncementOnlyChangeUpdate:type_name -> signal.backup.GroupAnnouncementOnlyChangeUpdate + 87, // 163: signal.backup.GroupChangeChatUpdate.Update.groupAdminStatusUpdate:type_name -> signal.backup.GroupAdminStatusUpdate + 88, // 164: signal.backup.GroupChangeChatUpdate.Update.groupMemberLeftUpdate:type_name -> signal.backup.GroupMemberLeftUpdate + 89, // 165: signal.backup.GroupChangeChatUpdate.Update.groupMemberRemovedUpdate:type_name -> signal.backup.GroupMemberRemovedUpdate + 90, // 166: signal.backup.GroupChangeChatUpdate.Update.selfInvitedToGroupUpdate:type_name -> signal.backup.SelfInvitedToGroupUpdate + 91, // 167: signal.backup.GroupChangeChatUpdate.Update.selfInvitedOtherUserToGroupUpdate:type_name -> signal.backup.SelfInvitedOtherUserToGroupUpdate + 92, // 168: signal.backup.GroupChangeChatUpdate.Update.groupUnknownInviteeUpdate:type_name -> signal.backup.GroupUnknownInviteeUpdate + 93, // 169: signal.backup.GroupChangeChatUpdate.Update.groupInvitationAcceptedUpdate:type_name -> signal.backup.GroupInvitationAcceptedUpdate + 94, // 170: signal.backup.GroupChangeChatUpdate.Update.groupInvitationDeclinedUpdate:type_name -> signal.backup.GroupInvitationDeclinedUpdate + 95, // 171: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedUpdate:type_name -> signal.backup.GroupMemberJoinedUpdate + 96, // 172: signal.backup.GroupChangeChatUpdate.Update.groupMemberAddedUpdate:type_name -> signal.backup.GroupMemberAddedUpdate + 97, // 173: signal.backup.GroupChangeChatUpdate.Update.groupSelfInvitationRevokedUpdate:type_name -> signal.backup.GroupSelfInvitationRevokedUpdate + 98, // 174: signal.backup.GroupChangeChatUpdate.Update.groupInvitationRevokedUpdate:type_name -> signal.backup.GroupInvitationRevokedUpdate + 99, // 175: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestUpdate:type_name -> signal.backup.GroupJoinRequestUpdate + 100, // 176: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestApprovalUpdate:type_name -> signal.backup.GroupJoinRequestApprovalUpdate + 101, // 177: signal.backup.GroupChangeChatUpdate.Update.groupJoinRequestCanceledUpdate:type_name -> signal.backup.GroupJoinRequestCanceledUpdate + 103, // 178: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkResetUpdate:type_name -> signal.backup.GroupInviteLinkResetUpdate + 104, // 179: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkEnabledUpdate:type_name -> signal.backup.GroupInviteLinkEnabledUpdate + 105, // 180: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkAdminApprovalUpdate:type_name -> signal.backup.GroupInviteLinkAdminApprovalUpdate + 106, // 181: signal.backup.GroupChangeChatUpdate.Update.groupInviteLinkDisabledUpdate:type_name -> signal.backup.GroupInviteLinkDisabledUpdate + 107, // 182: signal.backup.GroupChangeChatUpdate.Update.groupMemberJoinedByLinkUpdate:type_name -> signal.backup.GroupMemberJoinedByLinkUpdate + 108, // 183: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationUpdate:type_name -> signal.backup.GroupV2MigrationUpdate + 109, // 184: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationSelfInvitedUpdate:type_name -> signal.backup.GroupV2MigrationSelfInvitedUpdate + 110, // 185: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationInvitedMembersUpdate:type_name -> signal.backup.GroupV2MigrationInvitedMembersUpdate + 111, // 186: signal.backup.GroupChangeChatUpdate.Update.groupV2MigrationDroppedMembersUpdate:type_name -> signal.backup.GroupV2MigrationDroppedMembersUpdate + 102, // 187: signal.backup.GroupChangeChatUpdate.Update.groupSequenceOfRequestsAndCancelsUpdate:type_name -> signal.backup.GroupSequenceOfRequestsAndCancelsUpdate + 112, // 188: signal.backup.GroupChangeChatUpdate.Update.groupExpirationTimerUpdate:type_name -> signal.backup.GroupExpirationTimerUpdate + 161, // 189: signal.backup.ChatStyle.CustomChatColor.gradient:type_name -> signal.backup.ChatStyle.Gradient + 190, // [190:190] is the sub-list for method output_type + 190, // [190:190] is the sub-list for method input_type + 190, // [190:190] is the sub-list for extension type_name + 190, // [190:190] is the sub-list for extension extendee + 0, // [0:190] is the sub-list for field type_name } func init() { file_backuppb_Backup_proto_init() } @@ -13850,7 +13607,6 @@ func file_backuppb_Backup_proto_init() { (*ChatItem_ViewOnceMessage)(nil), (*ChatItem_DirectStoryReplyMessage)(nil), (*ChatItem_Poll)(nil), - (*ChatItem_AdminDeletedMessage)(nil), } file_backuppb_Backup_proto_msgTypes[14].OneofWrappers = []any{ (*SendStatus_Pending_)(nil), @@ -13877,7 +13633,7 @@ func file_backuppb_Backup_proto_init() { (*BodyRange_MentionAci)(nil), (*BodyRange_Style_)(nil), } - file_backuppb_Backup_proto_msgTypes[34].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[33].OneofWrappers = []any{ (*ChatUpdateMessage_SimpleUpdate)(nil), (*ChatUpdateMessage_GroupChange)(nil), (*ChatUpdateMessage_ExpirationTimerChange)(nil), @@ -13890,12 +13646,13 @@ func file_backuppb_Backup_proto_init() { (*ChatUpdateMessage_PollTerminate)(nil), (*ChatUpdateMessage_PinMessage)(nil), } + file_backuppb_Backup_proto_msgTypes[34].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[35].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[36].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[40].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[39].OneofWrappers = []any{ (*LearnedProfileChatUpdate_E164)(nil), (*LearnedProfileChatUpdate_Username)(nil), } + file_backuppb_Backup_proto_msgTypes[43].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[44].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[45].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[46].OneofWrappers = []any{} @@ -13904,58 +13661,55 @@ func file_backuppb_Backup_proto_init() { file_backuppb_Backup_proto_msgTypes[49].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[50].OneofWrappers = []any{} 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[54].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[56].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[57].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[59].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[58].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[60].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[61].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[63].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[62].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[64].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[65].OneofWrappers = []any{} file_backuppb_Backup_proto_msgTypes[67].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[68].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[69].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[73].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[79].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[83].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[76].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[80].OneofWrappers = []any{ (*ChatStyle_WallpaperPreset_)(nil), (*ChatStyle_WallpaperPhoto)(nil), (*ChatStyle_AutoBubbleColor)(nil), (*ChatStyle_BubbleColorPreset_)(nil), (*ChatStyle_CustomColorId)(nil), } - file_backuppb_Backup_proto_msgTypes[84].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[88].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[90].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[81].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[85].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[87].OneofWrappers = []any{ (*AccountData_IAPSubscriberData_PurchaseToken)(nil), (*AccountData_IAPSubscriberData_OriginalTransactionId)(nil), } - file_backuppb_Backup_proto_msgTypes[96].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[93].OneofWrappers = []any{ (*Group_GroupAttributeBlob_Title)(nil), (*Group_GroupAttributeBlob_Avatar)(nil), (*Group_GroupAttributeBlob_DisappearingMessagesDuration)(nil), (*Group_GroupAttributeBlob_DescriptionText)(nil), } - file_backuppb_Backup_proto_msgTypes[102].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[105].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[99].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[102].OneofWrappers = []any{ (*ChatItem_PinDetails_PinExpiresAtTimestamp)(nil), (*ChatItem_PinDetails_PinNeverExpires)(nil), } - file_backuppb_Backup_proto_msgTypes[114].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[111].OneofWrappers = []any{ (*PaymentNotification_TransactionDetails_Transaction_)(nil), (*PaymentNotification_TransactionDetails_FailedTransaction_)(nil), } - file_backuppb_Backup_proto_msgTypes[117].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[122].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[114].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[119].OneofWrappers = []any{ (*FilePointer_LocatorInfo_PlaintextHash)(nil), (*FilePointer_LocatorInfo_EncryptedDigest)(nil), } - file_backuppb_Backup_proto_msgTypes[123].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[126].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[120].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[123].OneofWrappers = []any{ (*GroupChangeChatUpdate_Update_GenericGroupUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupCreationUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupNameUpdate)(nil), @@ -13990,11 +13744,9 @@ func file_backuppb_Backup_proto_init() { (*GroupChangeChatUpdate_Update_GroupV2MigrationDroppedMembersUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupSequenceOfRequestsAndCancelsUpdate)(nil), (*GroupChangeChatUpdate_Update_GroupExpirationTimerUpdate)(nil), - (*GroupChangeChatUpdate_Update_GroupMemberLabelAccessLevelChangeUpdate)(nil), - (*GroupChangeChatUpdate_Update_GroupTerminateChangeUpdate)(nil), } - file_backuppb_Backup_proto_msgTypes[127].OneofWrappers = []any{} - file_backuppb_Backup_proto_msgTypes[129].OneofWrappers = []any{ + file_backuppb_Backup_proto_msgTypes[124].OneofWrappers = []any{} + file_backuppb_Backup_proto_msgTypes[126].OneofWrappers = []any{ (*ChatStyle_CustomChatColor_Solid)(nil), (*ChatStyle_CustomChatColor_Gradient)(nil), } @@ -14004,7 +13756,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: 36, - NumMessages: 131, + NumMessages: 128, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/signalmeow/protobuf/backuppb/Backup.proto b/pkg/signalmeow/protobuf/backuppb/Backup.proto index 512bdaf..1b70167 100644 --- a/pkg/signalmeow/protobuf/backuppb/Backup.proto +++ b/pkg/signalmeow/protobuf/backuppb/Backup.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package signal.backup; -option java_package = "org.signal.archive.proto"; +option java_package = "org.thoughtcrime.securesms.backup.v2.proto"; option swift_prefix = "BackupProto_"; message BackupInfo { @@ -135,7 +135,6 @@ message AccountData { CallsUseLessDataSetting callsUseLessDataSetting = 29; // If unset, treat the same as "Unknown" case bool allowSealedSenderFromAnyone = 30; bool allowAutomaticKeyVerification = 31; - bool hasSeenAdminDeleteEducationDialog = 32; } message SubscriberData { @@ -182,7 +181,7 @@ message AccountData { AndroidSpecificSettings androidSpecificSettings = 12; string bioText = 13; string bioEmoji = 14; - reserved /*keyTransparencyData*/ 15; // No longer want to persist self-KT data + optional bytes keyTransparencyData = 15; } message Recipient { @@ -308,7 +307,6 @@ message Group { bytes inviteLinkPassword = 10; bool announcements_only = 12; repeated MemberBanned members_banned = 13; - bool terminated = 14; } message GroupAttributeBlob { @@ -333,8 +331,6 @@ message Group { reserved /*profileKey*/ 3; // This field is ignored in Backups, in favor of Contact frames for members reserved /*presentation*/ 4; // This field is deprecated in the context of static group state uint32 joinedAtVersion = 5; - string labelEmoji = 6; - string labelString = 7; } message MemberPendingProfileKey { @@ -367,7 +363,6 @@ message Group { AccessRequired attributes = 1; AccessRequired members = 2; AccessRequired addFromInviteLink = 3; - AccessRequired memberLabel = 4; } } @@ -410,7 +405,7 @@ message CallLink { string name = 3; Restrictions restrictions = 4; uint64 expirationMs = 5; - reserved /*epoch*/ 6; + optional bytes epoch = 6; // May be absent/empty for older links } message AdHocCall { @@ -503,7 +498,6 @@ message ChatItem { ViewOnceMessage viewOnceMessage = 18; DirectStoryReplyMessage directStoryReplyMessage = 19; // group story reply messages are not backed up Poll poll = 20; - AdminDeletedMessage adminDeletedMessage = 22; } PinDetails pinDetails = 21; // only set if message is pinned @@ -904,10 +898,6 @@ message Poll { repeated Reaction reactions = 5; } -message AdminDeletedMessage { - uint64 adminId = 1; // id of the admin that deleted the message -} - message ChatUpdateMessage { // If unset, importers should ignore the update message without throwing an error. oneof update { @@ -1078,8 +1068,6 @@ message GroupChangeChatUpdate { GroupV2MigrationDroppedMembersUpdate groupV2MigrationDroppedMembersUpdate = 32; GroupSequenceOfRequestsAndCancelsUpdate groupSequenceOfRequestsAndCancelsUpdate = 33; GroupExpirationTimerUpdate groupExpirationTimerUpdate = 34; - GroupMemberLabelAccessLevelChangeUpdate groupMemberLabelAccessLevelChangeUpdate = 35; - GroupTerminateChangeUpdate groupTerminateChangeUpdate = 36; } } @@ -1131,15 +1119,6 @@ message GroupAttributesAccessLevelChangeUpdate { GroupV2AccessLevel accessLevel = 2; } -message GroupMemberLabelAccessLevelChangeUpdate { - optional bytes updaterAci = 1; - GroupV2AccessLevel accessLevel = 2; -} - -message GroupTerminateChangeUpdate { - optional bytes updaterAci = 1; -} - message GroupAnnouncementOnlyChangeUpdate { optional bytes updaterAci = 1; bool isAnnouncementOnly = 2; diff --git a/pkg/signalmeow/protobuf/build-protos.sh b/pkg/signalmeow/protobuf/build-protos.sh index 372b791..54116ec 100755 --- a/pkg/signalmeow/protobuf/build-protos.sh +++ b/pkg/signalmeow/protobuf/build-protos.sh @@ -12,8 +12,4 @@ protoc --go_out=. \ --go_opt=Mbackuppb/Backup.proto=$PKG_IMPORT_PATH/backuppb \ --go_opt=paths=source_relative \ backuppb/Backup.proto -protoc --go_out=. \ - --go_opt=Mcds2pb/cds2.proto=$PKG_IMPORT_PATH/cds2pb \ - --go_opt=paths=source_relative \ - cds2pb/cds2.proto pre-commit run -a diff --git a/pkg/signalmeow/protobuf/cds2pb/cds2.pb.go b/pkg/signalmeow/protobuf/cds2pb/cds2.pb.go deleted file mode 100644 index 2c8634a..0000000 --- a/pkg/signalmeow/protobuf/cds2pb/cds2.pb.go +++ /dev/null @@ -1,259 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.11 -// protoc v7.34.1 -// source: cds2pb/cds2.proto - -package cds2pb - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type ClientRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed - // by its 16-byte UAK. - AciUakPairs []byte `protobuf:"bytes,1,opt,name=aci_uak_pairs,json=aciUakPairs,proto3" json:"aci_uak_pairs,omitempty"` - // Each E164 is an 8-byte big-endian number, as 8 bytes. - PrevE164S []byte `protobuf:"bytes,2,opt,name=prev_e164s,json=prevE164s,proto3" json:"prev_e164s,omitempty"` - NewE164S []byte `protobuf:"bytes,3,opt,name=new_e164s,json=newE164s,proto3" json:"new_e164s,omitempty"` - DiscardE164S []byte `protobuf:"bytes,4,opt,name=discard_e164s,json=discardE164s,proto3" json:"discard_e164s,omitempty"` - // If set, a token which allows rate limiting to discount the e164s in - // the request's prev_e164s, only counting new_e164s. If not set, then - // rate limiting considers both prev_e164s' and new_e164s' size. - Token []byte `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"` - // After receiving a new token from the server, send back a message just - // containing a token_ack. - TokenAck bool `protobuf:"varint,7,opt,name=token_ack,json=tokenAck,proto3" json:"token_ack,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientRequest) Reset() { - *x = ClientRequest{} - mi := &file_cds2pb_cds2_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientRequest) ProtoMessage() {} - -func (x *ClientRequest) ProtoReflect() protoreflect.Message { - mi := &file_cds2pb_cds2_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientRequest.ProtoReflect.Descriptor instead. -func (*ClientRequest) Descriptor() ([]byte, []int) { - return file_cds2pb_cds2_proto_rawDescGZIP(), []int{0} -} - -func (x *ClientRequest) GetAciUakPairs() []byte { - if x != nil { - return x.AciUakPairs - } - return nil -} - -func (x *ClientRequest) GetPrevE164S() []byte { - if x != nil { - return x.PrevE164S - } - return nil -} - -func (x *ClientRequest) GetNewE164S() []byte { - if x != nil { - return x.NewE164S - } - return nil -} - -func (x *ClientRequest) GetDiscardE164S() []byte { - if x != nil { - return x.DiscardE164S - } - return nil -} - -func (x *ClientRequest) GetToken() []byte { - if x != nil { - return x.Token - } - return nil -} - -func (x *ClientRequest) GetTokenAck() bool { - if x != nil { - return x.TokenAck - } - return false -} - -type ClientResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI. - // If the e164 was not found, PNI and ACI are all zeros. If the PNI - // was found but the ACI was not, the PNI will be non-zero and the ACI - // will be all zeros. ACI will be returned if one of the returned - // PNIs has an ACI/UAK pair that matches. - // - // Should the request be successful (IE: a successful status returned), - // |e164_pni_aci_triple| will always equal |e164| of the request, - // so the entire marshalled size of the response will be (2+32)*|e164|, - // where the additional 2 bytes are the id/type/length additions of the - // protobuf marshaling added to each byte array. This avoids any data - // leakage based on the size of the encrypted output. - E164PniAciTriples []byte `protobuf:"bytes,1,opt,name=e164_pni_aci_triples,json=e164PniAciTriples,proto3" json:"e164_pni_aci_triples,omitempty"` - // A token which allows subsequent calls' rate limiting to discount the - // e164s sent up in this request, only counting those in the next - // request's new_e164s. - Token []byte `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` - // On a successful response to a token_ack request, the number of permits - // that were deducted from the user's rate-limit in order to process the - // request - DebugPermitsUsed int32 `protobuf:"varint,4,opt,name=debug_permits_used,json=debugPermitsUsed,proto3" json:"debug_permits_used,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientResponse) Reset() { - *x = ClientResponse{} - mi := &file_cds2pb_cds2_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientResponse) ProtoMessage() {} - -func (x *ClientResponse) ProtoReflect() protoreflect.Message { - mi := &file_cds2pb_cds2_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientResponse.ProtoReflect.Descriptor instead. -func (*ClientResponse) Descriptor() ([]byte, []int) { - return file_cds2pb_cds2_proto_rawDescGZIP(), []int{1} -} - -func (x *ClientResponse) GetE164PniAciTriples() []byte { - if x != nil { - return x.E164PniAciTriples - } - return nil -} - -func (x *ClientResponse) GetToken() []byte { - if x != nil { - return x.Token - } - return nil -} - -func (x *ClientResponse) GetDebugPermitsUsed() int32 { - if x != nil { - return x.DebugPermitsUsed - } - return 0 -} - -var File_cds2pb_cds2_proto protoreflect.FileDescriptor - -const file_cds2pb_cds2_proto_rawDesc = "" + - "\n" + - "\x11cds2pb/cds2.proto\x12\x0forg.signal.cdsi\"\xd3\x01\n" + - "\rClientRequest\x12\"\n" + - "\raci_uak_pairs\x18\x01 \x01(\fR\vaciUakPairs\x12\x1d\n" + - "\n" + - "prev_e164s\x18\x02 \x01(\fR\tprevE164s\x12\x1b\n" + - "\tnew_e164s\x18\x03 \x01(\fR\bnewE164s\x12#\n" + - "\rdiscard_e164s\x18\x04 \x01(\fR\fdiscardE164s\x12\x14\n" + - "\x05token\x18\x06 \x01(\fR\x05token\x12\x1b\n" + - "\ttoken_ack\x18\a \x01(\bR\btokenAckJ\x04\b\x05\x10\x06J\x04\b\b\x10\t\"\x8b\x01\n" + - "\x0eClientResponse\x12/\n" + - "\x14e164_pni_aci_triples\x18\x01 \x01(\fR\x11e164PniAciTriples\x12\x14\n" + - "\x05token\x18\x03 \x01(\fR\x05token\x12,\n" + - "\x12debug_permits_used\x18\x04 \x01(\x05R\x10debugPermitsUsedJ\x04\b\x02\x10\x03b\x06proto3" - -var ( - file_cds2pb_cds2_proto_rawDescOnce sync.Once - file_cds2pb_cds2_proto_rawDescData []byte -) - -func file_cds2pb_cds2_proto_rawDescGZIP() []byte { - file_cds2pb_cds2_proto_rawDescOnce.Do(func() { - file_cds2pb_cds2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cds2pb_cds2_proto_rawDesc), len(file_cds2pb_cds2_proto_rawDesc))) - }) - return file_cds2pb_cds2_proto_rawDescData -} - -var file_cds2pb_cds2_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_cds2pb_cds2_proto_goTypes = []any{ - (*ClientRequest)(nil), // 0: org.signal.cdsi.ClientRequest - (*ClientResponse)(nil), // 1: org.signal.cdsi.ClientResponse -} -var file_cds2pb_cds2_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_cds2pb_cds2_proto_init() } -func file_cds2pb_cds2_proto_init() { - if File_cds2pb_cds2_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_cds2pb_cds2_proto_rawDesc), len(file_cds2pb_cds2_proto_rawDesc)), - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_cds2pb_cds2_proto_goTypes, - DependencyIndexes: file_cds2pb_cds2_proto_depIdxs, - MessageInfos: file_cds2pb_cds2_proto_msgTypes, - }.Build() - File_cds2pb_cds2_proto = out.File - file_cds2pb_cds2_proto_goTypes = nil - file_cds2pb_cds2_proto_depIdxs = nil -} diff --git a/pkg/signalmeow/protobuf/update-protos.sh b/pkg/signalmeow/protobuf/update-protos.sh index 9bc1023..d65567c 100755 --- a/pkg/signalmeow/protobuf/update-protos.sh +++ b/pkg/signalmeow/protobuf/update-protos.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail -ANDROID_GIT_REVISION=${1:-aa9591211ba0c77376318bdd5f014e064b8e8de4} -DESKTOP_GIT_REVISION=${2:-a0af83d7488930c213a7b6dd554490ebe9e65628} -LIBSIGNAL_GIT_REVISION=${3:-46d867c986f66201e34e7ae20ce423eec742bf3f} +ANDROID_GIT_REVISION=${1:-bc6114f6e0d3a4b1dcdc472331505f2644185264} +DESKTOP_GIT_REVISION=${1:-a9063ec0c3c1079072c1e30e0749c1ae8be5500a} update_proto() { case "$1" in @@ -12,14 +11,9 @@ update_proto() { prefix="lib/libsignal-service/src/main/protowire/" GIT_REVISION=$ANDROID_GIT_REVISION ;; - Signal-Android-Archive) + Signal-Android-App) REPO="Signal-Android" - prefix="lib/archive/src/main/protowire/" - GIT_REVISION=$ANDROID_GIT_REVISION - ;; - Signal-Android-Network) - REPO="Signal-Android" - prefix="core/network/src/main/protowire/" + prefix="app/src/main/protowire/" GIT_REVISION=$ANDROID_GIT_REVISION ;; Signal-Desktop) @@ -27,11 +21,6 @@ update_proto() { prefix="protos/" GIT_REVISION=$DESKTOP_GIT_REVISION ;; - libsignal) - REPO="libsignal" - prefix="rust/net/src/proto/" - GIT_REVISION=$LIBSIGNAL_GIT_REVISION - ;; esac echo https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2} curl -LOf https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2} @@ -42,14 +31,14 @@ update_proto Signal-Android Groups.proto update_proto Signal-Android Provisioning.proto update_proto Signal-Android SignalService.proto update_proto Signal-Android StickerResources.proto -update_proto Signal-Android-Network WebSocketResources.proto +update_proto Signal-Android WebSocketResources.proto update_proto Signal-Android StorageService.proto -update_proto Signal-Android-Archive Backup.proto +update_proto Signal-Android-App Backup.proto mv Backup.proto backuppb/Backup.proto update_proto Signal-Desktop DeviceName.proto -update_proto libsignal cds2.proto -mv cds2.proto cds2pb/cds2.proto -# TODO these were moved to libsignal only +# TODO this was moved to libsignal only #update_proto Signal-Desktop UnidentifiedDelivery.proto +# Android has CDSI.proto too, but the types have more generic names (since android uses a different package name) +update_proto Signal-Desktop ContactDiscovery.proto diff --git a/pkg/signalmeow/provisioning.go b/pkg/signalmeow/provisioning.go index 250e5d3..48a8042 100644 --- a/pkg/signalmeow/provisioning.go +++ b/pkg/signalmeow/provisioning.go @@ -18,6 +18,7 @@ package signalmeow import ( "context" + "crypto/hmac" "encoding/base64" "encoding/json" "fmt" @@ -76,15 +77,6 @@ type ProvisioningResponse struct { Err error } -type DeviceLinkError struct { - StatusCode int - Message string -} - -func (dle DeviceLinkError) Error() string { - return fmt.Sprintf("non-200 status code (%d) from devices response: %s", dle.StatusCode, dle.Message) -} - func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, deviceName string, allowBackup bool) chan ProvisioningResponse { log := zerolog.Ctx(ctx).With().Str("action", "perform provisioning").Logger() c := make(chan ProvisioningResponse, 4) @@ -174,19 +166,24 @@ func PerformProvisioning(ctx context.Context, deviceStore store.DeviceStore, dev DeviceID: deviceId, Number: *provisioningMessage.Number, Password: password, + MasterKey: provisioningMessage.GetMasterKey(), 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() + var masterKey []byte + 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") + if data.MasterKey == nil { + data.MasterKey = masterKey + } else if !hmac.Equal(data.MasterKey, masterKey) { + log.Warn().Msg("Master key mismatch") + } } // Store the provisioning data @@ -277,7 +274,7 @@ func startProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCiph return "", fmt.Errorf("failed to unmarshal provisioning UUID: %w", err) } - linkCapabilities := []string{"backup5"} + linkCapabilities := []string{"backup4,backup5"} if !allowBackup { linkCapabilities = []string{} } @@ -337,9 +334,8 @@ func continueProvisioning(ctx context.Context, ws *websocket.Conn, provisioningC } var signalCapabilities = map[string]any{ - "attachmentBackfill": true, - "spqr": true, - "usernameChangeSyncMessage": true, + "attachmentBackfill": true, + "spqr": true, } var signalCapabilitiesBody = exerrors.Must(json.Marshal(signalCapabilities)) @@ -450,9 +446,9 @@ func confirmDevice( return nil, fmt.Errorf("failed to read from websocket after devices call: %w", err) } - status := int(receivedMsg.GetResponse().GetStatus()) + status := int(*receivedMsg.Response.Status) if status < 200 || status >= 300 { - return nil, DeviceLinkError{StatusCode: status, Message: receivedMsg.GetResponse().GetMessage()} + return nil, fmt.Errorf("non-200 status code (%d) from devices response: %s", status, *receivedMsg.Response.Message) } // unmarshal JSON response into ConfirmDeviceResponse diff --git a/pkg/signalmeow/receiving.go b/pkg/signalmeow/receiving.go index e592c98..9fa4b84 100644 --- a/pkg/signalmeow/receiving.go +++ b/pkg/signalmeow/receiving.go @@ -357,7 +357,7 @@ func (cli *Client) incomingAPIMessageHandler(ctx context.Context, req *signalpb. return nil, err } log = log.With(). - Uint64("envelope_timestamp", envelope.GetClientTimestamp()). + Uint64("envelope_timestamp", envelope.GetTimestamp()). Uint64("server_timestamp", envelope.GetServerTimestamp()). Logger() ctx = log.WithContext(ctx) @@ -368,7 +368,7 @@ func (cli *Client) incomingAPIMessageHandler(ctx context.Context, req *signalpb. Str("source_service_id", envelope.GetSourceServiceId()). Hex("destination_service_id_bytes", envelope.GetDestinationServiceIdBinary()). Hex("source_service_id_bytes", envelope.GetSourceServiceIdBinary()). - Uint32("source_device_id", envelope.GetSourceDeviceId()). + Uint32("source_device_id", envelope.GetSourceDevice()). Object("parsed_destination_service_id", destinationServiceID). Object("parsed_source_service_id", sourceServiceID). Int32("envelope_type_id", int32(envelope.GetType())). @@ -414,12 +414,8 @@ func (cli *Client) handleDecryptedResult( return ctx.Err() } log := zerolog.Ctx(ctx) - handlerSuccess := true - defer func() { - if retErr == nil && !handlerSuccess { - retErr = ErrHandlerFailed - } - if result.CiphertextHash != nil && handlerSuccess { + if result.CiphertextHash != nil { + defer func() { err := cli.Store.EventBuffer.ClearBufferedEventPlaintext(ctx, *result.CiphertextHash) if err != nil { log.Err(err). @@ -430,10 +426,8 @@ func (cli *Client) handleDecryptedResult( Hex("ciphertext_hash", result.CiphertextHash[:]). Msg("Deleted event plaintext from buffer") } - } else if result.CiphertextHash != nil { - log.Warn().Msg("Not clearing buffered event plaintext due to handler failure") - } - }() + }() + } var theirServiceID libsignalgo.ServiceID var err error @@ -442,25 +436,31 @@ func (cli *Client) handleDecryptedResult( Bool("urgent", envelope.GetUrgent()). Stringer("content_hint", result.ContentHint). Uint64("server_ts", envelope.GetServerTimestamp()). - Uint64("client_ts", envelope.GetClientTimestamp()). + Uint64("client_ts", envelope.GetTimestamp()). Msg("No sender address received") return nil } else if theirServiceID, err = result.SenderAddress.NameServiceID(); err != nil { log.Warn(). Uint64("server_ts", envelope.GetServerTimestamp()). - Uint64("client_ts", envelope.GetClientTimestamp()). + Uint64("client_ts", envelope.GetTimestamp()). Msg("Failed to get sender name as service ID") return fmt.Errorf("failed to get sender name as service ID: %w", err) } else if theirServiceID.Type != libsignalgo.ServiceIDTypeACI { log.Warn(). Any("their_service_id", theirServiceID). Uint64("server_ts", envelope.GetServerTimestamp()). - Uint64("client_ts", envelope.GetClientTimestamp()). + Uint64("client_ts", envelope.GetTimestamp()). Msg("Dropping message from non-ACI sender") return nil } cli.Store.RecipientStore.MarkUnregistered(ctx, theirServiceID, false) + handlerSuccess := true + defer func() { + if retErr == nil && !handlerSuccess { + retErr = ErrHandlerFailed + } + }() // result.Err is set if there was an error during decryption and we // should notifiy the user that the message could not be decrypted if result.Err != nil { @@ -469,7 +469,7 @@ func (cli *Client) handleDecryptedResult( Bool("urgent", envelope.GetUrgent()). Stringer("content_hint", result.ContentHint). Uint64("server_ts", envelope.GetServerTimestamp()). - Uint64("client_ts", envelope.GetClientTimestamp()). + Uint64("client_ts", envelope.GetTimestamp()). Stringer("sender", theirServiceID). Msg("Ignoring already processed event") return nil @@ -478,7 +478,7 @@ func (cli *Client) handleDecryptedResult( Bool("urgent", envelope.GetUrgent()). Stringer("content_hint", result.ContentHint). Uint64("server_ts", envelope.GetServerTimestamp()). - Uint64("client_ts", envelope.GetClientTimestamp()). + Uint64("client_ts", envelope.GetTimestamp()). Stringer("sender", theirServiceID). Msg("Decryption error with known sender") // Only send decryption error event if the message was urgent, @@ -489,12 +489,12 @@ func (cli *Client) handleDecryptedResult( handlerSuccess = cli.handleEvent(&events.DecryptionError{ Sender: theirServiceID.UUID, Err: result.Err, - Timestamp: envelope.GetClientTimestamp(), + Timestamp: envelope.GetTimestamp(), }) } if result.Retriable { go func() { - err := cli.sendRetryRequest(ctx, result, envelope.GetClientTimestamp()) + err := cli.sendRetryRequest(ctx, result, envelope.GetTimestamp()) if err != nil { log.Err(err).Msg("Failed to send retry request in background") } @@ -506,15 +506,15 @@ func (cli *Client) handleDecryptedResult( return nil } - rawContent := result.Content - if rawContent == nil { + content := result.Content + if content == nil { log.Warn().Msg("Decrypted content is nil") return nil } deviceID, _ := result.SenderAddress.DeviceID() log.Trace(). - Any("raw_data", rawContent). + Any("raw_data", content). Stringer("sender", theirServiceID). Uint("sender_device", deviceID). Msg("Raw event data") @@ -531,10 +531,9 @@ func (cli *Client) handleDecryptedResult( } logEvt.Bool("unencrypted", result.Unencrypted).Msg("Decrypted message") - // Handle unencrypted types early and refuse any other unencrypted message - if rawContent.GetDecryptionErrorMessage() != nil { + if content.DecryptionErrorMessage != nil { handlerSuccess = true - dem, err := libsignalgo.DeserializeDecryptionErrorMessage(rawContent.GetDecryptionErrorMessage()) + dem, err := libsignalgo.DeserializeDecryptionErrorMessage(content.DecryptionErrorMessage) if err != nil { log.Warn().Err(err).Msg("Failed to unmarshal decryption error message") } else { @@ -552,9 +551,9 @@ func (cli *Client) handleDecryptedResult( } // If there's a sender key distribution message, process it - if rawContent.SenderKeyDistributionMessage != nil { + if content.GetSenderKeyDistributionMessage() != nil { log.Debug().Msg("content includes sender key distribution message") - skdm, err := libsignalgo.DeserializeSenderKeyDistributionMessage(rawContent.SenderKeyDistributionMessage) + skdm, err := libsignalgo.DeserializeSenderKeyDistributionMessage(content.GetSenderKeyDistributionMessage()) if err != nil { log.Err(err).Msg("DeserializeSenderKeyDistributionMessage error") return err @@ -571,7 +570,6 @@ func (cli *Client) handleDecryptedResult( } } - // If we're getting a message to our PNI, mark it as needing a PNI signature message on the next send if destinationServiceID == cli.Store.PNIServiceID() { _, err = cli.Store.RecipientStore.LoadAndUpdateRecipient(ctx, theirServiceID.UUID, uuid.Nil, func(recipient *types.Recipient) (changed bool, err error) { if recipient.Whitelisted == nil { @@ -591,100 +589,86 @@ func (cli *Client) handleDecryptedResult( } } - // If we receive a PNI signature message (because we sent to a PNI earlier), process it - if rawContent.PniSignatureMessage != nil { + if content.PniSignatureMessage != nil { log.Debug().Msg("Content includes PNI signature message") - err = cli.handlePNISignatureMessage(ctx, theirServiceID, rawContent.PniSignatureMessage) + err = cli.handlePNISignatureMessage(ctx, theirServiceID, content.PniSignatureMessage) if err != nil { log.Err(err). - Hex("pni_raw", rawContent.PniSignatureMessage.GetPni()). + Hex("pni_raw", content.PniSignatureMessage.GetPni()). Stringer("aci", theirServiceID.UUID). Msg("Failed to verify ACI-PNI mapping") } } + if content.SyncMessage != nil && theirServiceID == cli.Store.ACIServiceID() { + handlerSuccess = cli.handleSyncMessage(ctx, content.SyncMessage, envelope) + return nil + } + isBlocked, err := cli.Store.RecipientStore.IsBlocked(ctx, theirServiceID.UUID) if err != nil { log.Err(err).Stringer("sender", theirServiceID).Msg("Failed to check if sender is blocked") } var sendDeliveryReceipt bool - var deliveryReceiptTS uint64 - switch content := rawContent.Content.(type) { - case *signalpb.Content_SyncMessage: - if theirServiceID == cli.Store.ACIServiceID() { - handlerSuccess = cli.handleSyncMessage(ctx, content.SyncMessage, envelope) - } - return nil - case *signalpb.Content_DataMessage: + if content.DataMessage != nil { handlerSuccess, sendDeliveryReceipt = cli.incomingDataMessage( ctx, content.DataMessage, theirServiceID.UUID, theirServiceID, envelope.GetServerTimestamp(), isBlocked, ) - deliveryReceiptTS = content.DataMessage.GetTimestamp() - case *signalpb.Content_EditMessage: + } else if content.EditMessage != nil { handlerSuccess, sendDeliveryReceipt = cli.incomingEditMessage( ctx, content.EditMessage, theirServiceID.UUID, theirServiceID, envelope.GetServerTimestamp(), isBlocked, ) - deliveryReceiptTS = content.EditMessage.GetDataMessage().GetTimestamp() - case *signalpb.Content_ReceiptMessage: - if content.ReceiptMessage.GetType() == signalpb.ReceiptMessage_DELIVERY && theirServiceID == cli.Store.ACIServiceID() { + } + if sendDeliveryReceipt && handlerSuccess { + err = cli.sendDeliveryReceipts(ctx, []uint64{content.DataMessage.GetTimestamp()}, theirServiceID.UUID) + if err != nil { + log.Err(err).Msg("sendDeliveryReceipts error") + } + } + + if content.TypingMessage != nil && (!isBlocked || content.TypingMessage.GetGroupId() != nil) { + var groupID types.GroupIdentifier + if content.TypingMessage.GetGroupId() != nil { + gidBytes := content.TypingMessage.GetGroupId() + groupID = types.GroupIdentifier(base64.StdEncoding.EncodeToString(gidBytes)) + } + // No handler success check here, nobody cares if typing notifications are dropped + cli.handleEvent(&events.ChatEvent{ + Info: events.MessageInfo{ + Sender: theirServiceID.UUID, + ChatID: groupOrUserID(groupID, theirServiceID), + ServerTimestamp: envelope.GetServerTimestamp(), + }, + Event: content.TypingMessage, + }) + } + + // DM call message (group call is an opaque callMessage and a groupCallUpdate in a dataMessage) + if content.CallMessage != nil && (content.CallMessage.Offer != nil || content.CallMessage.Hangup != nil) && !isBlocked { + handlerSuccess = cli.handleEvent(&events.Call{ + Info: events.MessageInfo{ + Sender: theirServiceID.UUID, + ChatID: theirServiceID.String(), + ServerTimestamp: envelope.GetServerTimestamp(), + }, + // CallMessage doesn't have its own timestamp, use one from the envelope + Timestamp: envelope.GetTimestamp(), + IsRinging: content.CallMessage.Offer != nil, + }) && handlerSuccess + } + + // Read and delivery receipts + if content.ReceiptMessage != nil { + if content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_DELIVERY && theirServiceID == cli.Store.ACIServiceID() { // Ignore delivery receipts from other own devices return nil } handlerSuccess = cli.handleEvent(&events.Receipt{ Sender: theirServiceID.UUID, Content: content.ReceiptMessage, - }) - case *signalpb.Content_TypingMessage: - var groupID types.GroupIdentifier - if content.TypingMessage.GetGroupId() != nil { - gidBytes := content.TypingMessage.GetGroupId() - groupID = types.GroupIdentifier(base64.StdEncoding.EncodeToString(gidBytes)) - } - if !isBlocked || groupID != "" { - // No handler success check here, nobody cares if typing notifications are dropped - cli.handleEvent(&events.ChatEvent{ - Info: events.MessageInfo{ - Sender: theirServiceID.UUID, - ChatID: groupOrUserID(groupID, theirServiceID), - ServerTimestamp: envelope.GetServerTimestamp(), - }, - Event: content.TypingMessage, - }) - } - case *signalpb.Content_CallMessage: - if !isBlocked && (content.CallMessage.Offer != nil || content.CallMessage.Hangup != nil) { - handlerSuccess = cli.handleEvent(&events.Call{ - Info: events.MessageInfo{ - Sender: theirServiceID.UUID, - ChatID: theirServiceID.String(), - ServerTimestamp: envelope.GetServerTimestamp(), - }, - // CallMessage doesn't have its own timestamp, use one from the envelope - Timestamp: envelope.GetClientTimestamp(), - IsRinging: content.CallMessage.Offer != nil, - }) - } - case *signalpb.Content_DecryptionErrorMessage: - // These should've been handled earlier - log.Warn().Msg("Unexpected decryption error message content in decrypted message") - case *signalpb.Content_NullMessage: - // This is intentionally ignored - case *signalpb.Content_StoryMessage: - // This is also ignored for now - default: - if rawContent.PniSignatureMessage == nil && rawContent.SenderKeyDistributionMessage == nil { - log.Warn().Type("content_type", content).Msg("Unrecognized message content type") - } + }) && handlerSuccess } - - if sendDeliveryReceipt && handlerSuccess { - err = cli.sendDeliveryReceipts(ctx, []uint64{deliveryReceiptTS}, theirServiceID.UUID) - if err != nil { - log.Err(err).Msg("sendDeliveryReceipts error") - } - } - return nil } @@ -699,9 +683,9 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess // TODO: handle more sync messages handlerSuccess = true log := zerolog.Ctx(ctx) - switch content := msg.Content.(type) { - case *signalpb.SyncMessage_Keys_: - aep := libsignalgo.AccountEntropyPool(content.Keys.GetAccountEntropyPool()) + if msg.Keys != nil { + aep := libsignalgo.AccountEntropyPool(msg.Keys.GetAccountEntropyPool()) + cli.Store.MasterKey = msg.Keys.GetMaster() if aep != "" { aepMasterKey, err := aep.DeriveSVRKey() if err != nil { @@ -724,65 +708,59 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess log.Info().Msg("Received master key") 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") - go cli.SyncStorage(ctx) - default: - log.Debug(). - Stringer("fetch_latest_type", content.FetchLatest.GetType()). - Msg("Received unknown fetch latest notice") + } else if msg.GetFetchLatest().GetType() == signalpb.SyncMessage_FetchLatest_STORAGE_MANIFEST { + log.Debug().Msg("Received storage manifest fetch latest notice") + go cli.SyncStorage(ctx) + } + syncSent := msg.GetSent() + if syncSent.GetMessage() != nil || syncSent.GetEditMessage() != nil { + syncDestinationServiceID, err := ParseStringOrBinaryServiceID(syncSent.GetDestinationServiceId(), syncSent.GetDestinationServiceIdBinary()) + if err != nil && !errors.Is(err, ErrEmptyUUIDInput) { + log.Err(err).Msg("Sync message destination parse error") } - case *signalpb.SyncMessage_Sent_: - syncSent := content.Sent - if syncSent.GetMessage() != nil || syncSent.GetEditMessage() != nil { - syncDestinationServiceID, err := ParseStringOrBinaryServiceID(syncSent.GetDestinationServiceId(), syncSent.GetDestinationServiceIdBinary()) - if err != nil && !errors.Is(err, ErrEmptyUUIDInput) { - log.Err(err).Msg("Sync message destination parse error") + if syncSent.GetDestinationE164() != "" && !syncDestinationServiceID.IsEmpty() { + aci, pni := syncDestinationServiceID.ToACIAndPNI() + _, err = cli.Store.RecipientStore.UpdateRecipientE164(ctx, aci, pni, syncSent.GetDestinationE164()) + if err != nil { + log.Err(err).Msg("Failed to update recipient E164 after receiving sync message") } - if syncSent.GetDestinationE164() != "" && !syncDestinationServiceID.IsEmpty() { - aci, pni := syncDestinationServiceID.ToACIAndPNI() - _, err = cli.Store.RecipientStore.UpdateRecipientE164(ctx, aci, pni, syncSent.GetDestinationE164()) - if err != nil { - log.Err(err).Msg("Failed to update recipient E164 after receiving sync message") - } + } + for _, unident := range syncSent.GetUnidentifiedStatus() { + serviceID, err := ParseStringOrBinaryServiceID(unident.GetDestinationServiceId(), unident.GetDestinationServiceIdBinary()) + if err != nil { + log.Err(err). + Str("destination_service_id", unident.GetDestinationServiceId()). + Hex("destination_service_id_bytes", unident.GetDestinationServiceIdBinary()). + Msg("Failed to parse destination service ID of unidentified send") + continue } - for _, unident := range syncSent.GetUnidentifiedStatus() { - serviceID, err := ParseStringOrBinaryServiceID(unident.GetDestinationServiceId(), unident.GetDestinationServiceIdBinary()) - if err != nil { - log.Err(err). - Str("destination_service_id", unident.GetDestinationServiceId()). - Hex("destination_service_id_bytes", unident.GetDestinationServiceIdBinary()). - Msg("Failed to parse destination service ID of unidentified send") - continue - } - changed, err := cli.saveSyncPNIIdentityKey(ctx, serviceID, unident.GetDestinationPniIdentityKey()) - if err != nil { - log.Err(err). - Stringer("destination_service_id", serviceID). - Msg("Failed to save PNI identity key from sync message") - } else if changed { - log.Debug(). - Stringer("destination_service_id", serviceID). - Msg("Saved new PNI identity key from sync message") - } + changed, err := cli.saveSyncPNIIdentityKey(ctx, serviceID, unident.GetDestinationPniIdentityKey()) + if err != nil { + log.Err(err). + Stringer("destination_service_id", serviceID). + Msg("Failed to save PNI identity key from sync message") + } else if changed { + log.Debug(). + Stringer("destination_service_id", serviceID). + Msg("Saved new PNI identity key from sync message") } + } - if syncDestinationServiceID.IsEmpty() && syncSent.GetMessage().GetGroupV2() == nil && syncSent.GetEditMessage().GetDataMessage().GetGroupV2() == nil { - 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) - } else if syncSent.EditMessage != nil { - cli.incomingEditMessage(ctx, syncSent.EditMessage, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false) - } + if syncDestinationServiceID.IsEmpty() && syncSent.GetMessage().GetGroupV2() == nil && syncSent.GetEditMessage().GetDataMessage().GetGroupV2() == nil { + log.Warn().Msg("sync message sent destination is nil") + } else if msg.Sent.Message != nil { + // TODO handle expiration start ts, and maybe the sync message ts? + cli.incomingDataMessage(ctx, msg.Sent.Message, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false) + } else if msg.Sent.EditMessage != nil { + cli.incomingEditMessage(ctx, msg.Sent.EditMessage, cli.Store.ACI, syncDestinationServiceID, envelope.GetServerTimestamp(), false) } - case *signalpb.SyncMessage_Contacts_: + } + if msg.Contacts != nil { log.Debug().Msg("Recieved sync message contacts") - if content.Contacts.Blob != nil { + blob := msg.Contacts.Blob + if blob != nil { // TODO roundtrip via disk to save memory - contactsBytes, err := DownloadAttachmentWithPointer(ctx, content.Contacts.Blob, nil, nil) + contactsBytes, err := DownloadAttachmentWithPointer(ctx, blob, nil, nil) if err != nil { log.Err(err).Msg("Contacts Sync DownloadAttachment error") } @@ -818,14 +796,22 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess }) } } - case *signalpb.SyncMessage_DeleteForMe_: - handlerSuccess = cli.handleEvent(&events.DeleteForMe{ - Timestamp: envelope.GetClientTimestamp(), - SyncMessage_DeleteForMe: content.DeleteForMe, + } + if msg.Read != nil { + handlerSuccess = cli.handleEvent(&events.ReadSelf{ + Timestamp: envelope.GetTimestamp(), + Messages: msg.GetRead(), }) - case *signalpb.SyncMessage_MessageRequestResponse_: - aciUUID, _ := ParseStringOrBinaryUUID(content.MessageRequestResponse.GetThreadAci(), content.MessageRequestResponse.GetThreadAciBinary()) - if aciUUID != uuid.Nil && content.MessageRequestResponse.GetType() == signalpb.SyncMessage_MessageRequestResponse_ACCEPT { + } + if msg.DeleteForMe != nil { + handlerSuccess = cli.handleEvent(&events.DeleteForMe{ + Timestamp: envelope.GetTimestamp(), + SyncMessage_DeleteForMe: msg.DeleteForMe, + }) + } + if msg.MessageRequestResponse != nil { + aciUUID, _ := ParseStringOrBinaryUUID(msg.MessageRequestResponse.GetThreadAci(), msg.MessageRequestResponse.GetThreadAciBinary()) + if aciUUID != uuid.Nil && msg.MessageRequestResponse.GetType() == signalpb.SyncMessage_MessageRequestResponse_ACCEPT { _, err := cli.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aciUUID, uuid.Nil, func(recipient *types.Recipient) (changed bool, err error) { changed = !ptr.Val(recipient.Whitelisted) || recipient.NeedsPNISignature recipient.Whitelisted = ptr.Ptr(true) @@ -837,23 +823,16 @@ func (cli *Client) handleSyncMessage(ctx context.Context, msg *signalpb.SyncMess } } var groupID *libsignalgo.GroupIdentifier - if len(content.MessageRequestResponse.GroupId) == libsignalgo.GroupIdentifierLength { - groupID = (*libsignalgo.GroupIdentifier)(content.MessageRequestResponse.GroupId) + if len(msg.MessageRequestResponse.GroupId) == libsignalgo.GroupIdentifierLength { + groupID = (*libsignalgo.GroupIdentifier)(msg.MessageRequestResponse.GroupId) } handlerSuccess = cli.handleEvent(&events.MessageRequestResponse{ - Timestamp: envelope.GetClientTimestamp(), + Timestamp: envelope.GetTimestamp(), ThreadACI: aciUUID, GroupID: groupID, - Type: content.MessageRequestResponse.GetType(), - Raw: content.MessageRequestResponse, + Type: msg.MessageRequestResponse.GetType(), + Raw: msg.MessageRequestResponse, }) - default: - if msg.Read != nil { - handlerSuccess = cli.handleEvent(&events.ReadSelf{ - Timestamp: envelope.GetClientTimestamp(), - Messages: msg.Read, - }) - } } return } diff --git a/pkg/signalmeow/receiving_decrypt.go b/pkg/signalmeow/receiving_decrypt.go index 1d2c8cc..958f84f 100644 --- a/pkg/signalmeow/receiving_decrypt.go +++ b/pkg/signalmeow/receiving_decrypt.go @@ -64,14 +64,14 @@ func (cli *Client) decryptEnvelope( } return result - case signalpb.Envelope_PREKEY_MESSAGE, signalpb.Envelope_DOUBLE_RATCHET: - sender, err := sourceServiceID.Address(uint(envelope.GetSourceDeviceId())) + case signalpb.Envelope_PREKEY_BUNDLE, signalpb.Envelope_CIPHERTEXT: + sender, err := sourceServiceID.Address(uint(envelope.GetSourceDevice())) if err != nil { return DecryptionResult{Err: fmt.Errorf("failed to wrap address: %v", err)} } var result *DecryptionResult var bundleType string - if *envelope.Type == signalpb.Envelope_PREKEY_MESSAGE { + if *envelope.Type == signalpb.Envelope_PREKEY_BUNDLE { result, err = cli.prekeyDecrypt(ctx, destinationServiceID, sender, envelope.Content, envelope.GetServerTimestamp()) bundleType = "prekey bundle" } else { @@ -90,7 +90,7 @@ func (cli *Client) decryptEnvelope( return *result case signalpb.Envelope_PLAINTEXT_CONTENT: - addr, err := sourceServiceID.Address(uint(envelope.GetSourceDeviceId())) + addr, err := sourceServiceID.Address(uint(envelope.GetSourceDevice())) if err != nil { return DecryptionResult{Err: fmt.Errorf("failed to wrap address: %v", err)} } @@ -100,13 +100,16 @@ func (cli *Client) decryptEnvelope( } return DecryptionResult{ SenderAddress: addr, - Content: &signalpb.Content{Content: &signalpb.Content_DecryptionErrorMessage{DecryptionErrorMessage: content}}, + Content: &signalpb.Content{DecryptionErrorMessage: content}, Unencrypted: true, } case signalpb.Envelope_SERVER_DELIVERY_RECEIPT: return DecryptionResult{Err: fmt.Errorf("server delivery receipt envelopes are not yet supported")} + case signalpb.Envelope_SENDERKEY_MESSAGE: + return DecryptionResult{Err: fmt.Errorf("senderkey message envelopes are not yet supported")} + case signalpb.Envelope_UNKNOWN: return DecryptionResult{Err: fmt.Errorf("unknown envelope type")} @@ -185,17 +188,12 @@ func (cli *Client) prekeyDecrypt( if is == nil { return nil, fmt.Errorf("no identity store found for %s", destination) } - destinationAddress, err := destination.Address(uint(cli.Store.DeviceID)) - if err != nil { - return nil, fmt.Errorf("failed to get own/destination address: %w", err) - } plaintext, ciphertextHash, err := cli.bufferedDecryptTxn(ctx, encryptedContent, serverTimestamp, func(ctx context.Context) ([]byte, error) { return libsignalgo.DecryptPreKey( ctx, preKeyMessage, sender, - destinationAddress, ss, is, pks, @@ -243,16 +241,11 @@ func (cli *Client) decryptCiphertextEnvelope( if identityStore == nil { return nil, fmt.Errorf("no identity store for destination service ID %s", destinationServiceID) } - destinationAddress, err := destinationServiceID.Address(uint(cli.Store.DeviceID)) - if err != nil { - return nil, fmt.Errorf("failed to get own address: %w", err) - } plaintext, ciphertextHash, err := cli.bufferedDecryptTxn(ctx, ciphertext, serverTimestamp, func(ctx context.Context) ([]byte, error) { return libsignalgo.Decrypt( ctx, message, senderAddress, - destinationAddress, sessionStore, identityStore, ) @@ -401,9 +394,7 @@ func (cli *Client) decryptUnidentifiedSenderEnvelope(ctx context.Context, destin } result.Unencrypted = true result.Content = &signalpb.Content{ - Content: &signalpb.Content_DecryptionErrorMessage{ - DecryptionErrorMessage: usmcContents, - }, + DecryptionErrorMessage: usmcContents, } return result, err default: diff --git a/pkg/signalmeow/retry.go b/pkg/signalmeow/retry.go index a581075..2c89ecc 100644 --- a/pkg/signalmeow/retry.go +++ b/pkg/signalmeow/retry.go @@ -19,12 +19,10 @@ package signalmeow import ( "context" "fmt" - "math/rand/v2" "slices" "time" "github.com/rs/zerolog" - "go.mau.fi/util/random" "go.mau.fi/mautrix-signal/pkg/libsignalgo" signalpb "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf" @@ -65,9 +63,7 @@ func (cli *Client) sendRetryRequest(ctx context.Context, result DecryptionResult return fmt.Errorf("failed to create ciphertext message from plaintext content: %w", err) } _, err = cli.sendContent(ctx, serviceID, uint64(time.Now().UnixMilli()), &signalpb.Content{ - Content: &signalpb.Content_DecryptionErrorMessage{ - DecryptionErrorMessage: demBytes, - }, + DecryptionErrorMessage: demBytes, }, 0, true, result.GroupID, ctm) if err != nil { return fmt.Errorf("failed to send decryption error message: %w", err) @@ -186,11 +182,7 @@ func (cli *Client) handleRetryRequest( Msg("Not responding to decryption error message") return nil } - retryContent.Content = &signalpb.Content_NullMessage{ - NullMessage: &signalpb.NullMessage{ - Padding: random.Bytes(rand.IntN(511) + 1), - }, - } + retryContent.NullMessage = &signalpb.NullMessage{} } responseTimestamp := uint64(time.Now().UnixMilli()) if cacheHit { diff --git a/pkg/signalmeow/senderkey.go b/pkg/signalmeow/senderkey.go index 62ae832..48a3203 100644 --- a/pkg/signalmeow/senderkey.go +++ b/pkg/signalmeow/senderkey.go @@ -180,14 +180,6 @@ func (cli *Client) sendToGroupWithSenderKey( } ssCiphertext, err := cli.encryptWithSenderKey(ctx, groupID, ski.DistributionID, myAddress, senderKeyRecipients, content) if err != nil { - if errors.Is(err, libsignalgo.ErrorCodeSessionNotFound) { - log.Warn().Err(err).Msg("Got session not found error for group send from libsignal, resetting session and retrying") - if err = cli.Store.SenderKeyStore.DeleteSenderKeyInfo(ctx, groupIDStr); err != nil { - return nil, fmt.Errorf("failed to delete sender key info: %w", err) - } - doUnlock() - return cli.sendToGroupWithSenderKey(ctx, groupID, allRecipients, sec, content, messageTimestamp, retries+1) - } return nil, err } for recipientID := range ski.SharedWith { diff --git a/pkg/signalmeow/sending.go b/pkg/signalmeow/sending.go index 756e673..568b4d4 100644 --- a/pkg/signalmeow/sending.go +++ b/pkg/signalmeow/sending.go @@ -22,7 +22,6 @@ import ( "encoding/json" "errors" "fmt" - "math/rand/v2" "net/http" "strconv" "strings" @@ -32,7 +31,6 @@ import ( "github.com/rs/zerolog" "go.mau.fi/util/exfmt" "go.mau.fi/util/ptr" - "go.mau.fi/util/random" "google.golang.org/protobuf/proto" "go.mau.fi/mautrix-signal/pkg/libsignalgo" @@ -173,10 +171,6 @@ func (cli *Client) buildMessagesToSend( } else if len(sessions) == 0 { return nil, fmt.Errorf("no sessions found for recipient %s", recipient.String()) } - localAddress, err := cli.Store.ACIServiceID().Address(uint(cli.Store.DeviceID)) - if err != nil { - return nil, fmt.Errorf("failed to get own address: %w", err) - } messages := make([]MyMessage, 0, len(sessions)) for _, tuple := range sessions { @@ -199,7 +193,7 @@ func (cli *Client) buildMessagesToSend( includeE164 := groupID == nil && cli.Store.AccountRecord.GetPhoneNumberSharingMode() == signalpb.AccountRecord_EVERYBODY envelopeType, encryptedPayload, err := cli.buildMessageToSend( - ctx, tuple.Address, localAddress, paddedMessage, getContentHint(content), ctmOverride, groupID, includeE164, unauthenticated, + ctx, tuple.Address, paddedMessage, getContentHint(content), ctmOverride, groupID, includeE164, unauthenticated, ) if err != nil { return nil, err @@ -224,9 +218,11 @@ func (cli *Client) buildMessagesToSend( func ctmTypeToEnvelopeType(ctmType libsignalgo.CiphertextMessageType) signalpb.Envelope_Type { switch ctmType { case libsignalgo.CiphertextMessageTypeWhisper: - return signalpb.Envelope_DOUBLE_RATCHET // 2 -> 1 + return signalpb.Envelope_CIPHERTEXT // 2 -> 1 case libsignalgo.CiphertextMessageTypePreKey: - return signalpb.Envelope_PREKEY_MESSAGE // 3 -> 3 + return signalpb.Envelope_PREKEY_BUNDLE // 3 -> 3 + case libsignalgo.CiphertextMessageTypeSenderKey: + return signalpb.Envelope_SENDERKEY_MESSAGE // 7 -> 7 case libsignalgo.CiphertextMessageTypePlaintext: return signalpb.Envelope_PLAINTEXT_CONTENT // 8 -> 8 default: @@ -236,7 +232,7 @@ func ctmTypeToEnvelopeType(ctmType libsignalgo.CiphertextMessageType) signalpb.E func (cli *Client) buildMessageToSend( ctx context.Context, - recipientAddress, localAddress *libsignalgo.Address, + recipientAddress *libsignalgo.Address, paddedMessage []byte, contentHint libsignalgo.UnidentifiedSenderMessageContentHint, ciphertextMessage *libsignalgo.CiphertextMessage, @@ -248,7 +244,6 @@ func (cli *Client) buildMessageToSend( ctx, paddedMessage, recipientAddress, - localAddress, cli.Store.ACISessionStore, cli.Store.ACIIdentityStore, ) @@ -302,21 +297,11 @@ type SendResult interface { func (gmsr *GroupMessageSendResult) isSendResult() {} func (smsr *SendMessageResult) isSendResult() {} -func WrapSyncMessage(content *signalpb.SyncMessage) *signalpb.Content { - content.Padding = random.Bytes(rand.IntN(511) + 1) +func contentFromDataMessage(dataMessage *signalpb.DataMessage) *signalpb.Content { return &signalpb.Content{ - Content: &signalpb.Content_SyncMessage{SyncMessage: content}, + DataMessage: dataMessage, } } - -func syncSentMessage(sent *signalpb.SyncMessage_Sent) *signalpb.Content { - return WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_Sent_{ - Sent: sent, - }, - }) -} - func syncMessageFromGroupDataMessage(dataMessage *signalpb.DataMessage, results []SuccessfulSendResult) *signalpb.Content { unidentifiedStatuses := []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{} for _, result := range results { @@ -325,14 +310,17 @@ func syncMessageFromGroupDataMessage(dataMessage *signalpb.DataMessage, results Unidentified: &result.Unidentified, }) } - return syncSentMessage(&signalpb.SyncMessage_Sent{ - Message: dataMessage, - Timestamp: dataMessage.Timestamp, - UnidentifiedStatus: unidentifiedStatuses, - ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), - }) + return &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ + Sent: &signalpb.SyncMessage_Sent{ + Message: dataMessage, + Timestamp: dataMessage.Timestamp, + UnidentifiedStatus: unidentifiedStatuses, + ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), + }, + }, + } } - func syncMessageFromGroupEditMessage(editMessage *signalpb.EditMessage, results []SuccessfulSendResult) *signalpb.Content { unidentifiedStatuses := []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{} for _, result := range results { @@ -341,50 +329,70 @@ func syncMessageFromGroupEditMessage(editMessage *signalpb.EditMessage, results Unidentified: &result.Unidentified, }) } - return syncSentMessage(&signalpb.SyncMessage_Sent{ - EditMessage: editMessage, - Timestamp: editMessage.GetDataMessage().Timestamp, - UnidentifiedStatus: unidentifiedStatuses, - ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), - }) + return &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ + Sent: &signalpb.SyncMessage_Sent{ + EditMessage: editMessage, + Timestamp: editMessage.GetDataMessage().Timestamp, + UnidentifiedStatus: unidentifiedStatuses, + ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), + }, + }, + } } func syncMessageFromSoloDataMessage(dataMessage *signalpb.DataMessage, result SuccessfulSendResult) *signalpb.Content { - return syncSentMessage(&signalpb.SyncMessage_Sent{ - Message: dataMessage, - DestinationE164: result.RecipientE164, - DestinationServiceIdBinary: result.Recipient.Bytes(), - Timestamp: dataMessage.Timestamp, - ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), - UnidentifiedStatus: []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{ - { + return &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ + Sent: &signalpb.SyncMessage_Sent{ + Message: dataMessage, + DestinationE164: result.RecipientE164, DestinationServiceIdBinary: result.Recipient.Bytes(), - Unidentified: &result.Unidentified, - DestinationPniIdentityKey: result.DestinationPNIIdentityKey.TrySerialize(), + Timestamp: dataMessage.Timestamp, + ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), + UnidentifiedStatus: []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{ + { + DestinationServiceIdBinary: result.Recipient.Bytes(), + Unidentified: &result.Unidentified, + DestinationPniIdentityKey: result.DestinationPNIIdentityKey.TrySerialize(), + }, + }, }, }, - }) + } } func syncMessageFromSoloEditMessage(editMessage *signalpb.EditMessage, result SuccessfulSendResult) *signalpb.Content { - return syncSentMessage(&signalpb.SyncMessage_Sent{ - EditMessage: editMessage, - DestinationE164: result.RecipientE164, - DestinationServiceIdBinary: result.Recipient.Bytes(), - Timestamp: editMessage.DataMessage.Timestamp, - ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), - UnidentifiedStatus: []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{ - { + return &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ + Sent: &signalpb.SyncMessage_Sent{ + EditMessage: editMessage, + DestinationE164: result.RecipientE164, DestinationServiceIdBinary: result.Recipient.Bytes(), - Unidentified: &result.Unidentified, - DestinationPniIdentityKey: result.DestinationPNIIdentityKey.TrySerialize(), + Timestamp: editMessage.DataMessage.Timestamp, + ExpirationStartTimestamp: ptr.Ptr(uint64(time.Now().UnixMilli())), + UnidentifiedStatus: []*signalpb.SyncMessage_Sent_UnidentifiedDeliveryStatus{ + { + DestinationServiceIdBinary: result.Recipient.Bytes(), + Unidentified: &result.Unidentified, + DestinationPniIdentityKey: result.DestinationPNIIdentityKey.TrySerialize(), + }, + }, }, }, - }) + } } func syncMessageFromReadReceiptMessage(ctx context.Context, receiptMessage *signalpb.ReceiptMessage, messageSender libsignalgo.ServiceID) *signalpb.Content { - if *receiptMessage.Type != signalpb.ReceiptMessage_READ || messageSender.Type != libsignalgo.ServiceIDTypeACI { + if *receiptMessage.Type != signalpb.ReceiptMessage_READ { + zerolog.Ctx(ctx).Warn(). + Any("receipt_message_type", receiptMessage.Type). + Msg("syncMessageFromReadReceiptMessage called with non-read receipt message") + return nil + } else if messageSender.Type != libsignalgo.ServiceIDTypeACI { + zerolog.Ctx(ctx).Warn(). + Stringer("message_sender", messageSender). + Msg("syncMessageFromReadReceiptMessage called with non-ACI message sender") return nil } read := []*signalpb.SyncMessage_Read{} @@ -394,9 +402,11 @@ func syncMessageFromReadReceiptMessage(ctx context.Context, receiptMessage *sign SenderAci: proto.String(messageSender.UUID.String()), }) } - return WrapSyncMessage(&signalpb.SyncMessage{ - Read: read, - }) + return &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ + Read: read, + }, + } } func (cli *Client) SendContactSyncRequest(ctx context.Context) error { @@ -412,13 +422,13 @@ func (cli *Client) SendContactSyncRequest(ctx context.Context) error { } cli.LastContactRequestTime = time.Now() - _, err := cli.sendContent(ctx, cli.Store.ACIServiceID(), uint64(time.Now().UnixMilli()), WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_Request_{ + _, err := cli.sendContent(ctx, cli.Store.ACIServiceID(), uint64(time.Now().UnixMilli()), &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ Request: &signalpb.SyncMessage_Request{ Type: signalpb.SyncMessage_Request_CONTACTS.Enum(), }, }, - }), 0, false, nil, nil) + }, 0, false, nil, nil) if err != nil { log.Err(err).Msg("Failed to send contact sync request message to myself") return err @@ -432,13 +442,13 @@ func (cli *Client) SendStorageMasterKeyRequest(ctx context.Context) error { Logger() ctx = log.WithContext(ctx) - _, err := cli.sendContent(ctx, cli.Store.ACIServiceID(), uint64(time.Now().UnixMilli()), WrapSyncMessage(&signalpb.SyncMessage{ - Content: &signalpb.SyncMessage_Request_{ + _, err := cli.sendContent(ctx, cli.Store.ACIServiceID(), uint64(time.Now().UnixMilli()), &signalpb.Content{ + SyncMessage: &signalpb.SyncMessage{ Request: &signalpb.SyncMessage_Request{ Type: signalpb.SyncMessage_Request_KEYS.Enum(), }, }, - }), 0, false, nil, nil) + }, 0, false, nil, nil) if err != nil { log.Err(err).Msg("Failed to send key sync request message to myself") return err @@ -458,47 +468,38 @@ func TypingMessage(isTyping bool) *signalpb.Content { } else { action = signalpb.TypingMessage_STOPPED } + tm := &signalpb.TypingMessage{ + Timestamp: ×tamp, + Action: &action, + } return &signalpb.Content{ - Content: &signalpb.Content_TypingMessage{ - TypingMessage: &signalpb.TypingMessage{ - Timestamp: ×tamp, - Action: &action, - }, - }, + TypingMessage: tm, } } func DeliveredReceiptMessageForTimestamps(timestamps []uint64) *signalpb.Content { + rm := &signalpb.ReceiptMessage{ + Timestamp: timestamps, + Type: signalpb.ReceiptMessage_DELIVERY.Enum(), + } return &signalpb.Content{ - Content: &signalpb.Content_ReceiptMessage{ - ReceiptMessage: &signalpb.ReceiptMessage{ - Timestamp: timestamps, - Type: signalpb.ReceiptMessage_DELIVERY.Enum(), - }, - }, + ReceiptMessage: rm, } } func ReadReceptMessageForTimestamps(timestamps []uint64) *signalpb.Content { + rm := &signalpb.ReceiptMessage{ + Timestamp: timestamps, + Type: signalpb.ReceiptMessage_READ.Enum(), + } return &signalpb.Content{ - Content: &signalpb.Content_ReceiptMessage{ - ReceiptMessage: &signalpb.ReceiptMessage{ - Timestamp: timestamps, - Type: signalpb.ReceiptMessage_READ.Enum(), - }, - }, + ReceiptMessage: rm, } } -func WrapDataMessage(dm *signalpb.DataMessage) *signalpb.Content { +func wrapDataMessageInContent(dm *signalpb.DataMessage) *signalpb.Content { return &signalpb.Content{ - Content: &signalpb.Content_DataMessage{DataMessage: dm}, - } -} - -func WrapEditMessage(dm *signalpb.EditMessage) *signalpb.Content { - return &signalpb.Content{ - Content: &signalpb.Content_EditMessage{EditMessage: dm}, + DataMessage: dm, } } @@ -525,7 +526,7 @@ func (cli *Client) SendGroupUpdate(ctx context.Context, group *Group, groupConte Timestamp: ×tamp, GroupV2: groupContext, } - content := WrapDataMessage(dm) + content := wrapDataMessageInContent(dm) var recipients []libsignalgo.ServiceID for _, member := range group.Members { serviceID := member.UserServiceID() @@ -563,14 +564,13 @@ func (cli *Client) SendGroupMessage(ctx context.Context, gid types.GroupIdentifi return nil, err } var messageTimestamp uint64 - switch content := content.Content.(type) { - case *signalpb.Content_DataMessage: + if content.GetDataMessage() != nil { messageTimestamp = content.DataMessage.GetTimestamp() content.DataMessage.GroupV2 = groupMetadataForDataMessage(*group) - case *signalpb.Content_EditMessage: + } else if content.GetEditMessage().GetDataMessage() != nil { messageTimestamp = content.EditMessage.DataMessage.GetTimestamp() content.EditMessage.DataMessage.GroupV2 = groupMetadataForDataMessage(*group) - case *signalpb.Content_TypingMessage: + } else if content.GetTypingMessage() != nil { messageTimestamp = content.TypingMessage.GetTimestamp() groupIDBytes, err := group.GroupIdentifier.Bytes() if err != nil { @@ -606,7 +606,7 @@ func (cli *Client) sendToGroup( FailedToSendTo: []FailedSendResult{}, } } - if content.GetTypingMessage() != nil { + if content.TypingMessage != nil { // Never send typing messages via fallback path return result, nil } @@ -648,16 +648,15 @@ func (cli *Client) sendToGroup( func (cli *Client) sendGroupSyncCopy( ctx context.Context, - rawContent *signalpb.Content, + content *signalpb.Content, messageTimestamp uint64, result *GroupMessageSendResult, groupID *libsignalgo.GroupIdentifier, ) { var syncContent *signalpb.Content - switch content := rawContent.Content.(type) { - case *signalpb.Content_DataMessage: + if content.GetDataMessage() != nil { syncContent = syncMessageFromGroupDataMessage(content.DataMessage, result.SuccessfullySentTo) - case *signalpb.Content_EditMessage: + } else if content.GetEditMessage() != nil { syncContent = syncMessageFromGroupEditMessage(content.EditMessage, result.SuccessfullySentTo) } if syncContent != nil { @@ -668,17 +667,16 @@ func (cli *Client) sendGroupSyncCopy( } } -func (cli *Client) sendSyncCopy(ctx context.Context, rawContent *signalpb.Content, messageTS uint64, result *SuccessfulSendResult) bool { +func (cli *Client) sendSyncCopy(ctx context.Context, content *signalpb.Content, messageTS uint64, result *SuccessfulSendResult) bool { var syncContent *signalpb.Content - switch content := rawContent.Content.(type) { - case *signalpb.Content_DataMessage: + if content.GetDataMessage() != nil { syncContent = syncMessageFromSoloDataMessage(content.DataMessage, *result) - case *signalpb.Content_EditMessage: + } else if content.GetEditMessage() != nil { syncContent = syncMessageFromSoloEditMessage(content.EditMessage, *result) - case *signalpb.Content_ReceiptMessage: + } else if content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_READ { syncContent = syncMessageFromReadReceiptMessage(ctx, content.ReceiptMessage, result.Recipient) - case *signalpb.Content_SyncMessage: - syncContent = rawContent + } else if content.GetSyncMessage() != nil { + syncContent = content } if syncContent != nil { _, selfSendErr := cli.sendContent(ctx, cli.Store.ACIServiceID(), messageTS, syncContent, 0, true, nil, nil) @@ -694,25 +692,22 @@ func (cli *Client) sendSyncCopy(ctx context.Context, rawContent *signalpb.Conten func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.ServiceID, content *signalpb.Content) SendMessageResult { // Assemble the content to send var messageTimestamp uint64 - switch realContent := content.Content.(type) { - case *signalpb.Content_DataMessage: - messageTimestamp = *realContent.DataMessage.Timestamp - case *signalpb.Content_EditMessage: - messageTimestamp = *realContent.EditMessage.DataMessage.Timestamp - case *signalpb.Content_TypingMessage: - messageTimestamp = *realContent.TypingMessage.Timestamp - case *signalpb.Content_SyncMessage, - *signalpb.Content_NullMessage, - *signalpb.Content_ReceiptMessage, - *signalpb.Content_DecryptionErrorMessage: + switch { + case content.DataMessage != nil: + messageTimestamp = *content.DataMessage.Timestamp + case content.EditMessage != nil: + messageTimestamp = *content.EditMessage.DataMessage.Timestamp + case content.TypingMessage != nil: + messageTimestamp = *content.TypingMessage.Timestamp + case content.SyncMessage != nil, + content.NullMessage != nil, + content.ReceiptMessage != nil, + content.PniSignatureMessage != nil, + content.SenderKeyDistributionMessage != nil, + content.DecryptionErrorMessage != nil: messageTimestamp = currentMessageTimestamp() - case *signalpb.Content_StoryMessage: - // not yet supported default: - if content.SenderKeyDistributionMessage == nil && content.PniSignatureMessage == nil { - panic(fmt.Errorf("unsupported payload in SendMessage")) - } - messageTimestamp = currentMessageTimestamp() + panic(fmt.Errorf("unsupported payload in SendMessage")) } var aci, pni uuid.UUID if recipientID.Type == libsignalgo.ServiceIDTypeACI { @@ -720,7 +715,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv } else if recipientID.Type == libsignalgo.ServiceIDTypePNI { pni = recipientID.UUID } - isTypingOrReceipt := content.GetTypingMessage() != nil || content.GetReceiptMessage() != nil + isTypingOrReceipt := content.TypingMessage != nil || content.ReceiptMessage != nil recipientData, err := cli.Store.RecipientStore.LoadAndUpdateRecipient(ctx, aci, pni, func(recipientData *types.Recipient) (changed bool, err error) { if content.GetDataMessage().GetFlags() == uint32(signalpb.DataMessage_PROFILE_KEY_UPDATE) { recipientData.Whitelisted = ptr.Ptr(true) @@ -758,7 +753,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv cli.sendSyncCopy(ctx, content, messageTimestamp, &res) } return SendMessageResult{WasSuccessful: true, SuccessfulSendResult: res} - } else if content.GetTypingMessage() != nil && cli.Store.DeviceData.AccountRecord != nil && !cli.Store.DeviceData.AccountRecord.GetTypingIndicators() { + } else if content.TypingMessage != nil && cli.Store.DeviceData.AccountRecord != nil && !cli.Store.DeviceData.AccountRecord.GetTypingIndicators() { zerolog.Ctx(ctx).Debug().Msg("Not sending typing message as typing indicators are disabled") res := SuccessfulSendResult{Recipient: recipientID} return SendMessageResult{WasSuccessful: true, SuccessfulSendResult: res} @@ -770,7 +765,7 @@ func (cli *Client) SendMessage(ctx context.Context, recipientID libsignalgo.Serv return SendMessageResult{WasSuccessful: true, SuccessfulSendResult: res} } - isDeliveryReceipt := content.GetReceiptMessage() != nil && content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_DELIVERY + isDeliveryReceipt := content.ReceiptMessage != nil && content.GetReceiptMessage().GetType() == signalpb.ReceiptMessage_DELIVERY if recipientID == cli.Store.ACIServiceID() && !isDeliveryReceipt { res := SuccessfulSendResult{ Recipient: recipientID, @@ -824,38 +819,25 @@ func currentMessageTimestamp() uint64 { } func isSyncMessageUrgent(content *signalpb.SyncMessage) bool { - switch content.Content.(type) { - case *signalpb.SyncMessage_Request_, - *signalpb.SyncMessage_Sent_: - return true - default: - return false - } + return content.Sent != nil || content.Request != nil } -func isUrgent(rawContent *signalpb.Content) bool { - switch content := rawContent.Content.(type) { - case *signalpb.Content_SyncMessage: - return isSyncMessageUrgent(content.SyncMessage) - case *signalpb.Content_DataMessage, - *signalpb.Content_EditMessage, - *signalpb.Content_CallMessage, - *signalpb.Content_StoryMessage: - return true - default: - return false - } +func isUrgent(content *signalpb.Content) bool { + return content.DataMessage != nil || + content.CallMessage != nil || + content.StoryMessage != nil || + content.EditMessage != nil || + (content.SyncMessage != nil && isSyncMessageUrgent(content.SyncMessage)) } -func getContentHint(rawContent *signalpb.Content) libsignalgo.UnidentifiedSenderMessageContentHint { - switch rawContent.Content.(type) { - case *signalpb.Content_DataMessage, *signalpb.Content_EditMessage: +func getContentHint(content *signalpb.Content) libsignalgo.UnidentifiedSenderMessageContentHint { + if content.DataMessage != nil || content.EditMessage != nil { return libsignalgo.UnidentifiedSenderMessageContentHintResendable - case *signalpb.Content_TypingMessage, *signalpb.Content_ReceiptMessage: - return libsignalgo.UnidentifiedSenderMessageContentHintImplicit - default: - return libsignalgo.UnidentifiedSenderMessageContentHintDefault } + if content.TypingMessage != nil || content.ReceiptMessage != nil { + return libsignalgo.UnidentifiedSenderMessageContentHintImplicit + } + return libsignalgo.UnidentifiedSenderMessageContentHintDefault } func (cli *Client) sendContent( @@ -876,12 +858,12 @@ func (cli *Client) sendContent( ctx = log.WithContext(ctx) // If it's a data message, add our profile key - if content.GetDataMessage() != nil && content.GetDataMessage().ProfileKey == nil { + if content.DataMessage != nil && content.DataMessage.ProfileKey == nil { profileKey, err := cli.ProfileKeyForSignalID(ctx, cli.Store.ACI) if err != nil { log.Err(err).Msg("Error getting profile key, not adding to outgoing message") } else { - content.GetDataMessage().ProfileKey = profileKey.Slice() + content.DataMessage.ProfileKey = profileKey.Slice() } } @@ -960,6 +942,7 @@ func (cli *Client) sendContent( Uint64("response_id", *response.Id). Uint32("response_status", *response.Status). Logger() + ctx = log.WithContext(ctx) if json.Valid(response.GetBody()) { log.Debug().RawJSON("response_body", response.GetBody()).Msg("DEBUG: message send response data") } else { diff --git a/pkg/signalmeow/sticker.go b/pkg/signalmeow/sticker.go deleted file mode 100644 index 2759d18..0000000 --- a/pkg/signalmeow/sticker.go +++ /dev/null @@ -1,251 +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 ( - "bytes" - "context" - "crypto/hkdf" - "crypto/sha256" - "encoding/hex" - "errors" - "fmt" - "io" - "mime/multipart" - "net/http" - "net/textproto" - "sync" - - "go.mau.fi/util/exerrors" - "go.mau.fi/util/random" - "golang.org/x/sync/semaphore" - "google.golang.org/protobuf/proto" - - signalpb "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf" - "go.mau.fi/mautrix-signal/pkg/signalmeow/web" -) - -func DownloadStickerPackManifest(ctx context.Context, packID, packKey []byte) (*signalpb.Pack, error) { - if len(packID) != 16 { - return nil, fmt.Errorf("invalid pack ID length: %d", len(packID)) - } - resp, err := downloadStickerData(ctx, fmt.Sprintf("/stickers/%x/manifest.proto", packID), packKey) - if err != nil { - return nil, err - } - var pack signalpb.Pack - err = proto.Unmarshal(resp, &pack) - if err != nil { - return nil, fmt.Errorf("failed to unmarshal decrypted manifest: %w", err) - } - return &pack, nil -} - -func DownloadStickerPackItem(ctx context.Context, packID, packKey []byte, stickerID uint32) ([]byte, error) { - if len(packID) != 16 { - return nil, fmt.Errorf("invalid pack ID length: %d", len(packID)) - } - return downloadStickerData(ctx, fmt.Sprintf("/stickers/%x/full/%d", packID, stickerID), packKey) -} - -func downloadStickerData(ctx context.Context, path string, packKey []byte) ([]byte, error) { - if len(packKey) != 32 { - return nil, fmt.Errorf("invalid pack key length: %d", len(packKey)) - } - var body, decrypted []byte - resp, err := web.SendHTTPRequest(ctx, web.CDN1Hostname, http.MethodGet, path, nil) - defer web.CloseBody(resp) - 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 %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 { - return nil, fmt.Errorf("failed to decrypt response: %w", err) - } else { - return decrypted, nil - } -} - -type stickerUploadAttributes struct { - ACL string `json:"acl"` - Algorithm string `json:"algorithm"` - Credential string `json:"credential"` - Date string `json:"date"` - ID int `json:"id"` - Key string `json:"key"` - Policy string `json:"policy"` - Signature string `json:"signature"` -} - -func (sua *stickerUploadAttributes) makeFormBody(encryptedData []byte) (*web.HTTPReqOpt, error) { - var buf bytes.Buffer - writer := multipart.NewWriter(&buf) - var closed bool - // This isn't necessary in practice, just do it to avoid linter warnings - defer func() { - if !closed { - _ = writer.Close() - } - }() - fields := map[string]string{ - "key": sua.Key, - "acl": sua.ACL, - "policy": sua.Policy, - "x-amz-algorithm": sua.Algorithm, - "x-amz-credential": sua.Credential, - "x-amz-date": sua.Date, - "Content-Type": "application/octet-stream", - } - for key, value := range fields { - err := writer.WriteField(key, value) - if err != nil { - return nil, fmt.Errorf("failed to write multipart field %s: %w", key, err) - } - } - filePart, err := writer.CreatePart(textproto.MIMEHeader{ - "Content-Type": []string{"application/octet-stream"}, - "Content-Disposition": []string{`form-data; name="file"`}, - }) - if err != nil { - return nil, fmt.Errorf("failed to create multipart file part: %w", err) - } - _, err = filePart.Write(encryptedData) - if err != nil { - return nil, fmt.Errorf("failed to write file data to multipart body: %w", err) - } - err = writer.Close() - if err != nil { - return nil, fmt.Errorf("failed to close multipart writer: %w", err) - } - closed = true - return &web.HTTPReqOpt{ - Body: buf.Bytes(), - ContentType: web.ContentType(writer.FormDataContentType()), - }, nil -} - -func (sua *stickerUploadAttributes) upload(ctx context.Context, packKey, fileData []byte) error { - encryptedData, err := macAndAESEncrypt(fileData, deriveStickerPackKey(packKey)) - if err != nil { - return fmt.Errorf("failed to encrypt sticker data: %w", err) - } - req, err := sua.makeFormBody(encryptedData) - if err != nil { - return fmt.Errorf("failed to prepare request: %w", err) - } - resp, err := web.SendHTTPRequest(ctx, web.CDN1Hostname, http.MethodPost, "/", req) - if err != nil { - return err - } - _ = resp.Body.Close() - if resp.StatusCode < 200 || resp.StatusCode >= 300 { - return fmt.Errorf("unexpected status code %d", resp.StatusCode) - } - return nil -} - -func (sua *stickerUploadAttributes) uploadAsync( - ctx context.Context, - packKey []byte, - getFileData func(context.Context) ([]byte, error), - sema *semaphore.Weighted, - done func(), - onError func(error), -) { - defer done() - err := sema.Acquire(ctx, 1) - if err != nil { - return - } - defer sema.Release(1) - fileData, err := getFileData(ctx) - if err == nil { - err = sua.upload(ctx, packKey, fileData) - } - if err != nil { - onError(err) - } -} - -type stickerPackUploadAttributes struct { - PackID string `json:"packId"` - Manifest *stickerUploadAttributes `json:"manifest"` - Stickers []*stickerUploadAttributes `json:"stickers"` -} - -var StickerUploadParallelism = 4 - -func (cli *Client) UploadStickerPack(ctx context.Context, pack *signalpb.Pack, stickerData []func(context.Context) ([]byte, error)) (packID, packKey []byte, err error) { - for i, sticker := range pack.Stickers { - if sticker.GetId() >= uint32(len(stickerData)) { - return nil, nil, fmt.Errorf("sticker ID %d at index %d is out of bounds, only %d sticker blobs provided", sticker.GetId(), i, len(stickerData)) - } - } - marshaledPack, err := proto.Marshal(pack) - if err != nil { - return nil, nil, fmt.Errorf("failed to marshal pack: %w", err) - } - packKey = random.Bytes(32) - resp, err := cli.AuthedWS.SendRequest(ctx, http.MethodGet, fmt.Sprintf("/v1/sticker/pack/form/%d", len(stickerData)), nil, nil) - if err != nil { - return nil, nil, fmt.Errorf("failed to get upload form: %w", err) - } - var packAttributes stickerPackUploadAttributes - err = web.DecodeWSResponseBody(ctx, &packAttributes, resp) - if err != nil { - return nil, nil, fmt.Errorf("failed to decode pack attributes: %w", err) - } - if len(packAttributes.Stickers) != len(stickerData) { - return nil, nil, fmt.Errorf("expected %d sticker upload attribute sets, got %d", len(stickerData), len(packAttributes.Stickers)) - } - packID, err = hex.DecodeString(packAttributes.PackID) - if err != nil { - return nil, nil, fmt.Errorf("invalid pack ID in response: %w", err) - } - err = packAttributes.Manifest.upload(ctx, packKey, marshaledPack) - if err != nil { - return nil, nil, fmt.Errorf("failed to upload manifest: %w", err) - } - var wg sync.WaitGroup - wg.Add(len(packAttributes.Stickers)) - sema := semaphore.NewWeighted(int64(StickerUploadParallelism)) - var errorList []error - var errorLock sync.Mutex - for i, attrs := range packAttributes.Stickers { - go attrs.uploadAsync(ctx, packKey, stickerData[i], sema, wg.Done, func(err error) { - errorLock.Lock() - errorList = append(errorList, fmt.Errorf("failed to upload sticker #%d: %w", i+1, err)) - errorLock.Unlock() - }) - } - wg.Wait() - err = ctx.Err() - if err == nil { - err = errors.Join(errorList...) - } - return -} - -func decryptSticker(packKey, ciphertext []byte) ([]byte, error) { - return macAndAESDecrypt(ciphertext, deriveStickerPackKey(packKey)) -} - -func deriveStickerPackKey(key []byte) []byte { - return exerrors.Must(hkdf.Key(sha256.New, key, make([]byte, 32), "Sticker Pack", 2*32)) -} diff --git a/pkg/signalmeow/storageservice.go b/pkg/signalmeow/storageservice.go index 2326e1c..fcf6848 100644 --- a/pkg/signalmeow/storageservice.go +++ b/pkg/signalmeow/storageservice.go @@ -66,14 +66,12 @@ func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdat switch data := record.StorageRecord.GetRecord().(type) { case *signalpb.StorageRecord_Contact: log.Trace().Any("contact_record", data.Contact).Msg("Handling contact record") - aci, _ := ParseStringOrBinaryUUID(data.Contact.Aci, data.Contact.AciBinary) - pni, _ := ParseStringOrBinaryUUID(data.Contact.Pni, data.Contact.PniBinary) + aci, _ := uuid.Parse(data.Contact.Aci) + pni, _ := uuid.Parse(data.Contact.Pni) if aci == uuid.Nil && pni == uuid.Nil { log.Warn(). Str("raw_aci", data.Contact.Aci). Str("raw_pni", data.Contact.Pni). - Hex("raw_aci_binary", data.Contact.AciBinary). - Hex("raw_pni_binary", data.Contact.PniBinary). Str("raw_e164", data.Contact.E164). Msg("Storage service has contact record with no ACI or PNI") continue @@ -137,12 +135,6 @@ func (cli *Client) processStorageInTxn(ctx context.Context, update *StorageUpdat case *signalpb.StorageRecord_Account: log.Trace().Any("account_record", data.Account).Msg("Found account record") cli.Store.AccountRecord = data.Account - if len(data.Account.ProfileKey) == libsignalgo.ProfileKeyLength { - err := cli.Store.RecipientStore.StoreProfileKey(ctx, cli.Store.ACI, libsignalgo.ProfileKey(data.Account.ProfileKey)) - if err != nil { - return fmt.Errorf("failed to store own profile key: %w", err) - } - } err := cli.Store.DeviceStore.PutDevice(ctx, &cli.Store.DeviceData) if err != nil { return fmt.Errorf("failed to save device after receiving account record: %w", err) diff --git a/pkg/signalmeow/store/upgrades/16-remove-extra-prekeys.go b/pkg/signalmeow/store/upgrades/16-remove-extra-prekeys.go index 44c70c2..5046abf 100644 --- a/pkg/signalmeow/store/upgrades/16-remove-extra-prekeys.go +++ b/pkg/signalmeow/store/upgrades/16-remove-extra-prekeys.go @@ -58,22 +58,24 @@ func deleteExtraPrekeys(ctx context.Context, db *dbutil.Database, selectQuery, d return nil } -var upgradeV16 = dbutil.WrapUpgrade(-1, 16, 13, "Remove extra prekeys", dbutil.TxnModeOn, func(ctx context.Context, db *dbutil.Database) error { - err := deleteExtraPrekeys(ctx, db, ` - SELECT account_id, service_id, COUNT(*), MAX(key_id) FROM signalmeow_pre_keys WHERE is_signed=false GROUP BY 1, 2 - `, ` - DELETE FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_signed=false AND key_id<$3 - `) - if err != nil { - return fmt.Errorf("failed to process EC: %w", err) - } - err = deleteExtraPrekeys(ctx, db, ` - SELECT account_id, service_id, COUNT(*), MAX(key_id) FROM signalmeow_kyber_pre_keys WHERE is_last_resort=false GROUP BY 1, 2 - `, ` - DELETE FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_last_resort=false AND key_id<$3 - `) - if err != nil { - return fmt.Errorf("failed to process kyber: %w", err) - } - return nil -}) +func init() { + Table.Register(-1, 16, 13, "Remove extra prekeys", dbutil.TxnModeOn, func(ctx context.Context, db *dbutil.Database) error { + err := deleteExtraPrekeys(ctx, db, ` + SELECT account_id, service_id, COUNT(*), MAX(key_id) FROM signalmeow_pre_keys WHERE is_signed=false GROUP BY 1, 2 + `, ` + DELETE FROM signalmeow_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_signed=false AND key_id<$3 + `) + if err != nil { + return fmt.Errorf("failed to process EC: %w", err) + } + err = deleteExtraPrekeys(ctx, db, ` + SELECT account_id, service_id, COUNT(*), MAX(key_id) FROM signalmeow_kyber_pre_keys WHERE is_last_resort=false GROUP BY 1, 2 + `, ` + DELETE FROM signalmeow_kyber_pre_keys WHERE account_id=$1 AND service_id=$2 AND is_last_resort=false AND key_id<$3 + `) + if err != nil { + return fmt.Errorf("failed to process kyber: %w", err) + } + return nil + }) +} diff --git a/pkg/signalmeow/store/upgrades/20-fix-backup-chat-columns.go b/pkg/signalmeow/store/upgrades/20-fix-backup-chat-columns.go index 1313f11..d409fe6 100644 --- a/pkg/signalmeow/store/upgrades/20-fix-backup-chat-columns.go +++ b/pkg/signalmeow/store/upgrades/20-fix-backup-chat-columns.go @@ -22,13 +22,15 @@ import ( "go.mau.fi/util/dbutil" ) -var upgradeV20 = dbutil.WrapUpgrade(-1, 20, 13, "Add missing columns for backup chat table", dbutil.TxnModeOn, func(ctx context.Context, db *dbutil.Database) (err error) { - var exists bool - if exists, err = db.ColumnExists(ctx, "signalmeow_backup_chat", "latest_message_id"); err == nil && !exists { - _, err = db.Exec(ctx, ` - ALTER TABLE signalmeow_backup_chat ADD COLUMN latest_message_id BIGINT; - ALTER TABLE signalmeow_backup_chat ADD COLUMN total_message_count INTEGER; - `) - } - return -}) +func init() { + Table.Register(-1, 20, 13, "Add missing columns for backup chat table", dbutil.TxnModeOn, func(ctx context.Context, db *dbutil.Database) (err error) { + var exists bool + if exists, err = db.ColumnExists(ctx, "signalmeow_backup_chat", "latest_message_id"); err == nil && !exists { + _, err = db.Exec(ctx, ` + ALTER TABLE signalmeow_backup_chat ADD COLUMN latest_message_id BIGINT; + ALTER TABLE signalmeow_backup_chat ADD COLUMN total_message_count INTEGER; + `) + } + return + }) +} diff --git a/pkg/signalmeow/store/upgrades/upgrades.go b/pkg/signalmeow/store/upgrades/upgrades.go index f9e6350..19a6414 100644 --- a/pkg/signalmeow/store/upgrades/upgrades.go +++ b/pkg/signalmeow/store/upgrades/upgrades.go @@ -22,11 +22,11 @@ import ( "go.mau.fi/util/dbutil" ) +var Table dbutil.UpgradeTable + //go:embed *.sql var rawUpgrades embed.FS -var Table = dbutil.BuildUpgradeTable(). - WithFS(rawUpgrades). - With(upgradeV16). - With(upgradeV20). - Finish() +func init() { + Table.RegisterFS(rawUpgrades) +} diff --git a/pkg/signalmeow/web/web.go b/pkg/signalmeow/web/web.go index f211b77..d0fcd01 100644 --- a/pkg/signalmeow/web/web.go +++ b/pkg/signalmeow/web/web.go @@ -28,7 +28,6 @@ import ( "net/http" "runtime" "strings" - "time" "github.com/rs/zerolog" @@ -130,7 +129,6 @@ func SendHTTPRequest(ctx context.Context, host, method, path string, opt *HTTPRe } else { req.Header.Set("Content-Type", string(ContentTypeJSON)) } - req.ContentLength = int64(len(opt.Body)) req.Header.Set("Content-Length", fmt.Sprintf("%d", len(opt.Body))) req.Header.Set("User-Agent", UserAgent) req.Header.Set("X-Signal-Agent", SignalAgent) @@ -141,14 +139,12 @@ func SendHTTPRequest(ctx context.Context, host, method, path string, opt *HTTPRe httpReqCounter++ log = log.With().Int("request_number", httpReqCounter).Logger() log.Trace().Msg("Sending HTTP request") - start := time.Now() resp, err := SignalHTTPClient.Do(req) - dur := time.Since(start) if err != nil { - log.Err(err).Dur("duration", dur).Msg("Error sending request") + log.Err(err).Msg("Error sending request") return nil, err } - log.Debug().Int("status_code", resp.StatusCode).Dur("duration", dur).Msg("Received HTTP response") + log.Debug().Int("status_code", resp.StatusCode).Msg("received HTTP response") return resp, nil }