Skip to content
Snippets Groups Projects
Commit ccb73e17 authored by Jono Wenger's avatar Jono Wenger
Browse files

Prevent initial E2E file transfer message from causing a notification

parent fb322c2b
No related branches found
No related tags found
2 merge requests!117Release,!116Dev
......@@ -84,6 +84,19 @@ func TestManager_Send(t *testing.T) {
retry := float32(1.5)
numFps := calcNumberOfFingerprints(numParts, retry)
rng := csprng.NewSystemRNG()
dhKey := m.store.E2e().GetGroup().NewInt(42)
pubKey := diffieHellman.GeneratePublicKey(dhKey, m.store.E2e().GetGroup())
_, mySidhPriv := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhA, rng)
theirSidhPub, _ := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhB, rng)
p := params.GetDefaultE2ESessionParams()
err := m.store.E2e().AddPartner(recipient, pubKey, dhKey,
mySidhPriv, theirSidhPub, p, p)
if err != nil {
t.Errorf("Failed to add partner %s: %+v", recipient, err)
}
tid, err := m.Send(
fileName, fileType, fileData, recipient, retry, preview, nil, 0)
if err != nil {
......@@ -244,9 +257,22 @@ func TestManager_Send_SendE2eError(t *testing.T) {
preview := []byte("filePreview")
retry := float32(1.5)
rng := csprng.NewSystemRNG()
dhKey := m.store.E2e().GetGroup().NewInt(42)
pubKey := diffieHellman.GeneratePublicKey(dhKey, m.store.E2e().GetGroup())
_, mySidhPriv := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhA, rng)
theirSidhPub, _ := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhB, rng)
p := params.GetDefaultE2ESessionParams()
err := m.store.E2e().AddPartner(recipient, pubKey, dhKey,
mySidhPriv, theirSidhPub, p, p)
if err != nil {
t.Errorf("Failed to add partner %s: %+v", recipient, err)
}
expectedErr := fmt.Sprintf(newFtSendE2eErr, recipient, "")
_, err := m.Send(
_, err = m.Send(
fileName, fileType, fileData, recipient, retry, preview, nil, 0)
if err == nil || !strings.Contains(err.Error(), expectedErr) {
t.Errorf("Send did not return the expected error when the E2E message "+
......
......@@ -34,8 +34,18 @@ func (m *Manager) sendNewFileTransfer(recipient *id.ID, fileName,
return errors.Errorf(newFtProtoMarshalErr, err)
}
// Get partner relationship so that the silent preimage can be generated
relationship, err := m.store.E2e().GetPartner(recipient)
if err != nil {
return err
}
// Sends as a silent message to avoid a notification
p := params.GetDefaultE2E()
p.CMIX.IdentityPreimage = relationship.GetSilentPreimage()
// Send E2E message
rounds, _, _, err := m.net.SendE2E(sendMsg, params.GetDefaultE2E(), nil)
rounds, _, _, err := m.net.SendE2E(sendMsg, p, nil)
if err != nil && len(rounds) == 0 {
return errors.Errorf(newFtSendE2eErr, recipient, err)
}
......
......@@ -9,9 +9,14 @@ package fileTransfer
import (
"fmt"
"github.com/cloudflare/circl/dh/sidh"
"github.com/golang/protobuf/proto"
"gitlab.com/elixxir/client/interfaces/message"
"gitlab.com/elixxir/client/interfaces/params"
util "gitlab.com/elixxir/client/storage/utility"
"gitlab.com/elixxir/crypto/diffieHellman"
ftCrypto "gitlab.com/elixxir/crypto/fileTransfer"
"gitlab.com/xx_network/crypto/csprng"
"gitlab.com/xx_network/primitives/id"
"reflect"
"strings"
......@@ -31,6 +36,19 @@ func TestManager_sendNewFileTransfer(t *testing.T) {
numParts, fileSize, retry := uint16(16), uint32(256), float32(1.5)
preview := []byte("filePreview")
rng := csprng.NewSystemRNG()
dhKey := m.store.E2e().GetGroup().NewInt(42)
pubKey := diffieHellman.GeneratePublicKey(dhKey, m.store.E2e().GetGroup())
_, mySidhPriv := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhA, rng)
theirSidhPub, _ := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhB, rng)
p := params.GetDefaultE2ESessionParams()
err := m.store.E2e().AddPartner(recipient, pubKey, dhKey,
mySidhPriv, theirSidhPub, p, p)
if err != nil {
t.Errorf("Failed to add partner %s: %+v", recipient, err)
}
expected, err := newNewFileTransferE2eMessage(recipient, fileName, fileType,
key, mac, numParts, fileSize, retry, preview)
if err != nil {
......@@ -60,8 +78,21 @@ func TestManager_sendNewFileTransfer_E2eError(t *testing.T) {
recipient := id.NewIdFromString("recipient", id.User, t)
key, _ := ftCrypto.NewTransferKey(NewPrng(42))
rng := csprng.NewSystemRNG()
dhKey := m.store.E2e().GetGroup().NewInt(42)
pubKey := diffieHellman.GeneratePublicKey(dhKey, m.store.E2e().GetGroup())
_, mySidhPriv := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhA, rng)
theirSidhPub, _ := util.GenerateSIDHKeyPair(sidh.KeyVariantSidhB, rng)
p := params.GetDefaultE2ESessionParams()
err := m.store.E2e().AddPartner(recipient, pubKey, dhKey,
mySidhPriv, theirSidhPub, p, p)
if err != nil {
t.Errorf("Failed to add partner %s: %+v", recipient, err)
}
expectedErr := fmt.Sprintf(newFtSendE2eErr, recipient, "")
err := m.sendNewFileTransfer(recipient, "", "", key, nil, 16, 256, 1.5, nil)
err = m.sendNewFileTransfer(recipient, "", "", key, nil, 16, 256, 1.5, nil)
if err == nil || !strings.Contains(err.Error(), expectedErr) {
t.Errorf("sendNewFileTransfer di dnot return the expected error when "+
"SendE2E failed.\nexpected: %s\nreceived: %+v", expectedErr, err)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment