diff --git a/bindings/channels.go b/bindings/channels.go index 42b967cb1ed5ffde94a80a7b2550b4b1c276adb7..e8f269c95b44b410ff0dee84364d1cd1b5b15cd9 100644 --- a/bindings/channels.go +++ b/bindings/channels.go @@ -958,7 +958,7 @@ func ValidForever() int { // Returns: // - []byte - JSON of [ChannelSendReport]. func (cm *ChannelsManager) SendGeneric(channelIdBytes []byte, messageType int, - message []byte, validUntilMS int64, tracked bool, cmixParamsJSON []byte) ( + message []byte, validUntilMS int64, tracked bool, cmixParamsJSON []byte, pingBytes [][]byte) ( []byte, error) { // Unmarshal channel ID and parameters @@ -976,9 +976,14 @@ func (cm *ChannelsManager) SendGeneric(channelIdBytes []byte, messageType int, lease = channels.ValidForever } + pings := make([]ed25519.PublicKey, len(pingBytes)) + for i := range pingBytes { + pings[i] = pingBytes[i][:] + } + // Send message messageID, rnd, ephID, err := cm.api.SendGeneric( - channelID, msgType, message, lease, tracked, params.CMIX) + channelID, msgType, message, lease, tracked, params.CMIX, pings) if err != nil { return nil, err } @@ -1013,7 +1018,7 @@ func (cm *ChannelsManager) SendGeneric(channelIdBytes []byte, messageType int, // Returns: // - []byte - JSON of [ChannelSendReport]. func (cm *ChannelsManager) SendMessage(channelIdBytes []byte, message string, - validUntilMS int64, cmixParamsJSON []byte) ([]byte, error) { + validUntilMS int64, cmixParamsJSON []byte, pingBytes [][]byte) ([]byte, error) { // Unmarshal channel ID and parameters channelID, params, err := @@ -1028,9 +1033,14 @@ func (cm *ChannelsManager) SendMessage(channelIdBytes []byte, message string, lease = channels.ValidForever } + pings := make([]ed25519.PublicKey, len(pingBytes)) + for i := range pingBytes { + pings[i] = pingBytes[i][:] + } + // Send message messageID, rnd, ephID, err := - cm.api.SendMessage(channelID, message, lease, params.CMIX) + cm.api.SendMessage(channelID, message, lease, params.CMIX, pings) if err != nil { return nil, err } @@ -1070,7 +1080,7 @@ func (cm *ChannelsManager) SendMessage(channelIdBytes []byte, message string, // Returns: // - []byte - JSON of [ChannelSendReport]. func (cm *ChannelsManager) SendReply(channelIdBytes []byte, message string, - messageToReactTo []byte, validUntilMS int64, cmixParamsJSON []byte) ( + messageToReactTo []byte, validUntilMS int64, cmixParamsJSON []byte, pingBytes [][]byte) ( []byte, error) { // Unmarshal channel ID and parameters @@ -1090,9 +1100,14 @@ func (cm *ChannelsManager) SendReply(channelIdBytes []byte, message string, lease = channels.ValidForever } + pings := make([]ed25519.PublicKey, len(pingBytes)) + for i := range pingBytes { + pings[i] = pingBytes[i][:] + } + // Send Reply messageID, rnd, ephID, err := - cm.api.SendReply(channelID, message, messageID, lease, params.CMIX) + cm.api.SendReply(channelID, message, messageID, lease, params.CMIX, pings) if err != nil { return nil, err } diff --git a/cmd/broadcast.go b/cmd/broadcast.go index 990f3fb9ec401c457b2a663473deee85877f4cdd..0a7e419f3d010c9149eba238b8bee6d1e0163f3d 100644 --- a/cmd/broadcast.go +++ b/cmd/broadcast.go @@ -9,6 +9,7 @@ package cmd import ( "fmt" + "math" "os" "time" @@ -167,7 +168,8 @@ var broadcastCmd = &cobra.Command{ // Create & register symmetric receiver callback receiveChan := make(chan []byte, 100) scb := func(payload, _ []byte, _ []string, - receptionID receptionID.EphemeralIdentity, round rounds.Round) { + _ uint16, receptionID receptionID.EphemeralIdentity, + round rounds.Round) { jww.INFO.Printf("Received symmetric message from %s over round %d", receptionID, round.ID) receiveChan <- payload } @@ -179,7 +181,8 @@ var broadcastCmd = &cobra.Command{ // Create & register asymmetric receiver callback asymmetricReceiveChan := make(chan []byte, 100) acb := func(payload, _ []byte, _ []string, - receptionID receptionID.EphemeralIdentity, round rounds.Round) { + _ uint16, receptionID receptionID.EphemeralIdentity, + round rounds.Round) { jww.INFO.Printf("Received asymmetric message from %s over round %d", receptionID, round.ID) asymmetricReceiveChan <- payload } @@ -209,7 +212,7 @@ var broadcastCmd = &cobra.Command{ /* Send symmetric broadcast */ if symmetric != "" { - rid, eid, err := bcl.Broadcast([]byte(symmetric), []string{}, cmix.GetDefaultCMIXParams()) + rid, eid, err := bcl.Broadcast([]byte(symmetric), []string{}, math.MaxUint16, cmix.GetDefaultCMIXParams()) if err != nil { jww.ERROR.Printf("Failed to send symmetric broadcast message: %+v", err) retries++ @@ -225,7 +228,7 @@ var broadcastCmd = &cobra.Command{ if pk == nil { jww.FATAL.Panicf("CANNOT SEND ASYMMETRIC BROADCAST WITHOUT PRIVATE KEY") } - _, rid, eid, err := bcl.BroadcastRSAtoPublic(pk, []byte(asymmetric), []string{}, cmix.GetDefaultCMIXParams()) + _, rid, eid, err := bcl.BroadcastRSAtoPublic(pk, []byte(asymmetric), []string{}, math.MaxUint16, cmix.GetDefaultCMIXParams()) if err != nil { jww.ERROR.Printf("Failed to send asymmetric broadcast message: %+v", err) retries++ diff --git a/cmd/channels.go b/cmd/channels.go index 774ccbcbc3124eacea2f1be72803da403557dce0..07e833b8da731c63708c23223b817cc0b27fef61 100644 --- a/cmd/channels.go +++ b/cmd/channels.go @@ -311,7 +311,7 @@ func sendMessageToChannel(chanManager channels.Manager, channelsPrintHeader, msgBody, channel.Name) chanMsgId, round, _, err := chanManager.SendGeneric( channel.ReceptionID, integrationChannelMessage, msgBody, 5*time.Second, - true, cmix.GetDefaultCMIXParams()) + true, cmix.GetDefaultCMIXParams(), nil) if err != nil { return errors.Errorf("%+v", err) } diff --git a/fileTransfer/groupChat/processor.go b/fileTransfer/groupChat/processor.go index 86bef7509f994963c68333474f9dc4f96f2c3f1a..3b690449b3f1cdad4e5056436f633bd6f0e4339f 100644 --- a/fileTransfer/groupChat/processor.go +++ b/fileTransfer/groupChat/processor.go @@ -32,7 +32,7 @@ type processor struct { // reception callback. It is the responsibility of the caller to register a // progress callback. func (p *processor) Process(decryptedMsg groupChat.MessageReceive, - _ format.Message, _ receptionID.EphemeralIdentity, _ rounds.Round) { + _ format.Message, _ []string, _ []byte, _ receptionID.EphemeralIdentity, _ rounds.Round) { // Add new transfer to start receiving parts tid, info, err := p.ft.HandleIncomingTransfer(decryptedMsg.Payload, nil, 0) if err != nil { diff --git a/groupChat/receive.go b/groupChat/receive.go index 77997e776f3054c8bd4e4602defdb5827324c720..73753ee7b1232a00f77eb6e3641f66beb8eeec11 100644 --- a/groupChat/receive.go +++ b/groupChat/receive.go @@ -81,7 +81,7 @@ func (p *receptionProcessor) Process(message format.Message, _ []string, _ []byt p.g.Name, p.g.ID, result.Timestamp) // Send the decrypted message and original message to the processor - p.p.Process(result, message, receptionID, round) + p.p.Process(result, message, nil, nil, receptionID, round) } func (p *receptionProcessor) String() string { diff --git a/groupChat/send_test.go b/groupChat/send_test.go index f499f39612860449412ba6a5cf0a346b6be87f86..84d59f84705c5a6fa255fb5d2c4887d50b094ef8 100644 --- a/groupChat/send_test.go +++ b/groupChat/send_test.go @@ -53,7 +53,7 @@ func Test_manager_Send(t *testing.T) { timestamps := make(map[states.Round]time.Time) timestamps[states.PRECOMPUTING] = netTime.Now().Round(0) for _, msg := range messages { - reception.Process(msg, []string{}, receptionID.EphemeralIdentity{ + reception.Process(msg, []string{}, nil, receptionID.EphemeralIdentity{ EphId: ephemeral.Id{1, 2, 3}, Source: &id.ID{4, 5, 6}, }, rounds.Round{ID: roundId.ID, Timestamps: timestamps}) @@ -244,7 +244,7 @@ type testProcessor struct { msgChan chan MessageReceive } -func (tp *testProcessor) Process(decryptedMsg MessageReceive, _ format.Message, +func (tp *testProcessor) Process(decryptedMsg MessageReceive, _ format.Message, _ []string, _ []byte, _ receptionID.EphemeralIdentity, _ rounds.Round) { tp.msgChan <- decryptedMsg }