From 2e48537d8267770c89762ae125b1a701e5ce413f Mon Sep 17 00:00:00 2001 From: Sydney Anne Erickson <sydney@elixxir.io> Date: Wed, 18 Nov 2020 11:31:45 -0800 Subject: [PATCH] Add fact --- ud/addFact.go | 44 +++++++++++++++++++++++++++++++++++++ ud/addFact_test.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 ud/addFact.go create mode 100644 ud/addFact_test.go diff --git a/ud/addFact.go b/ud/addFact.go new file mode 100644 index 000000000..6c941717e --- /dev/null +++ b/ud/addFact.go @@ -0,0 +1,44 @@ +package ud + +import ( + "gitlab.com/elixxir/client/interfaces/contact" + pb "gitlab.com/elixxir/comms/mixmessages" + "gitlab.com/elixxir/primitives/fact" + "gitlab.com/xx_network/comms/connect" + "gitlab.com/xx_network/crypto/signature" + "gitlab.com/xx_network/crypto/signature/rsa" + "io" +) + +type addFactComms interface { + SendRegisterFact(host *connect.Host, message *pb.FactRegisterRequest) (*pb.FactRegisterResponse, error) +} + +func (m *Manager) SendRegisterFact(fact contact.Fact) (*pb.FactRegisterResponse, error) { + return m.addFact(fact, m.comms) +} + +func (m *Manager) addFact(fact fact.Fact, aFC addFactComms) (*pb.FactRegisterResponse, error) { + // Construct the message to send + // Convert our Fact to a mixmessages Fact for sending + mmFact := pb.Fact{ + Fact: fact.Fact, + FactType: uint32(fact.T), + } + + rsa.Sign(io.Reader, m.privKey, ) + //signature.Sign(mmFact, m.privKey) + + // Create our Fact Removal Request message data + remFactMsg := pb.FactRegisterRequest{ + UID: m.host.GetId().Marshal(), + Fact: &mmFact, + FactSig: []byte("B"), + } + + // Send the message + response, err := aFC.SendRegisterFact(m.host, &remFactMsg) + + // Return the error + return response, err +} diff --git a/ud/addFact_test.go b/ud/addFact_test.go new file mode 100644 index 000000000..8284215b5 --- /dev/null +++ b/ud/addFact_test.go @@ -0,0 +1,55 @@ +package ud + +import ( +"gitlab.com/elixxir/client/interfaces/contact" +"gitlab.com/elixxir/comms/client" + pb "gitlab.com/elixxir/comms/mixmessages" +"gitlab.com/xx_network/comms/connect" +"gitlab.com/xx_network/crypto/csprng" +"gitlab.com/xx_network/crypto/signature/rsa" +"gitlab.com/xx_network/primitives/id" +"testing" +) + +type testAFC struct{} + +func (rFC *testAFC) SendRegisterFact(host *connect.Host, message *pb.FactRegisterRequest) (*pb.FactRegisterResponse, error) { + return &pb.FactRegisterResponse{}, nil +} + +func TestAddFact(t *testing.T) { + c, err := client.NewClientComms(&id.DummyUser, nil, nil, nil) + if err != nil { + t.Fatal(err) + } + + h, err := connect.NewHost(&id.DummyUser, "address", nil, connect.GetDefaultHostParams()) + if err != nil { + t.Fatal(err) + } + + rng := csprng.NewSystemRNG() + cpk, err := rsa.GenerateKey(rng, 2048) + if err != nil { + t.Fatal(err) + } + + m := Manager{ + comms: c, + host: h, + privKey: cpk, + } + + f := contact.Fact{ + Fact: "testing", + T: 2, + } + + tafc := testAFC{} + + _, err = m.addFact(f, &tafc) + if err != nil { + t.Fatal(err) + } +} + -- GitLab