Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit db7dc60

Browse files
fix handling sealed sender envelopes
1 parent ad86da8 commit db7dc60

File tree

5 files changed

+23
-9
lines changed

5 files changed

+23
-9
lines changed

crayfish/backend.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717

1818
// "github.com/nanu-c/textsecure/app/ui"
1919

20+
"github.com/signal-golang/textsecure/config"
2021
"github.com/signal-golang/textsecure/rootCa"
2122
log "github.com/sirupsen/logrus"
2223
)
@@ -33,6 +34,8 @@ type CrayfishInstance struct {
3334
cmd *exec.Cmd
3435
stopping bool
3536
receiveChannel chan *CrayfishWebSocketResponseMessage
37+
LocalUUID string
38+
LocalDeviceID int32
3639
}
3740

3841
const (
@@ -109,7 +112,10 @@ type Conn struct {
109112
}
110113

111114
func Run() {
112-
Instance = &CrayfishInstance{}
115+
Instance = &CrayfishInstance{
116+
LocalUUID: config.ConfigFile.UUID,
117+
LocalDeviceID: 0,
118+
}
113119
log.Infoln("[textsecure-crayfish] Starting crayfish-backend")
114120
path, err := exec.LookPath("crayfish")
115121
if err != nil {

crayfish/envelope.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ func (c *CrayfishInstance) HandleEnvelope(msg []byte) (*CrayfishWebSocketRespons
1212
requestType := CrayfishWebSocketRequestMessageTyp_HANDLE_ENVELOPE
1313
sEnc := b64.StdEncoding.EncodeToString(msg)
1414
envelopeMessage := &CrayfishWebSocketRequest_HANDLE_ENVELOPE_MESSAGE{
15-
Message: sEnc,
15+
Message: sEnc,
16+
LocalUUUID: c.LocalUUID,
17+
LocalDeviceID: c.LocalDeviceID,
1618
}
1719
log.Debugln("[textsecure-crayfish-ws] Sending envelope")
1820

crayfish/messages.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ type CrayfishWebSocketResponse_VERIFY_REGISTER_MESSAGE struct {
2121
StorageCapable bool `json:"storage_capable"`
2222
}
2323
type CrayfishWebSocketRequest_HANDLE_ENVELOPE_MESSAGE struct {
24-
Message string `json:"message"`
24+
Message string `json:"message"`
25+
LocalUUUID string `json:"local_uuid"`
26+
LocalDeviceID int32 `json:"local_device_id"`
2527
}
2628
type CrayfishWebSocketResponse_HANDLE_ENVELOPE_MESSAGE struct {
2729
Message string `json:"message"`

textsecure.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"fmt"
1111
"io"
1212
"os"
13-
"strconv"
1413
"strings"
1514

1615
"bytes"
@@ -261,11 +260,11 @@ func setupLogging() {
261260

262261
// Setup initializes the package.
263262
func Setup(c *Client) error {
264-
go crayfish.Run()
265263
var err error
266264
client = c
267265

268266
config.ConfigFile, err = loadConfig()
267+
go crayfish.Run()
269268
if err != nil {
270269
return err
271270
}
@@ -634,6 +633,7 @@ func handleReceivedMessage(env *signalservice.Envelope) error {
634633
}
635634

636635
p, _ := proto.Marshal(env)
636+
log.Debugf("[textsecure] Incoming UnidentifiedSenderMessage %s.\n", env)
637637
data, err := crayfish.Instance.HandleEnvelope(p)
638638
if err != nil {
639639
return err
@@ -643,9 +643,13 @@ func handleReceivedMessage(env *signalservice.Envelope) error {
643643
return err
644644
}
645645
env.Content = content
646-
phoneNumber := "+" + strconv.FormatUint(data.Sender.PhoneNumber.Code.Value, 10) + strconv.FormatUint(data.Sender.PhoneNumber.National.Value, 10)
647-
log.Println("[textsecure] handleReceivedMessage:", phoneNumber, data.Sender.UUID)
648-
err = handleMessage(phoneNumber, data.Sender.UUID, uint64(data.Timestamp), content)
646+
log.Println("[textsecure] handleReceivedMessage:", data.Sender.UUID)
647+
log.Debugln("[textsecure] handleReceivedMessage content length: ", len(content))
648+
if len(content) == 0 {
649+
err = errors.New("[textsecure] handleReceivedMessage content length is 0")
650+
return err
651+
}
652+
err = handleMessage("", data.Sender.UUID, uint64(data.Timestamp), content)
649653
if err != nil {
650654
return err
651655
}

0 commit comments

Comments
 (0)