diff --git a/gateway/endpoint.go b/gateway/endpoint.go index 8a70be73ebde7f8ea18ac4e4a7a4b9ca9fe8b89d..dbb15f5599183c68ba61227278e501090c111581 100644 --- a/gateway/endpoint.go +++ b/gateway/endpoint.go @@ -74,7 +74,7 @@ func (g *Comms) ConfirmNonce(ctx context.Context, // Gateway -> Gateway message sharing within a team func (g *Comms) ShareMessages(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { - authState, err := g.AuthenticatedReceiver(msg) + authState, err := g.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable to handle reception of AuthenticatedMessage: %+v", err) } diff --git a/go.mod b/go.mod index 84c53bfff905e89c6a78f55d85e8eadfb9bdfb0b..2c9433a6578be4b30fd7450859a0dcb486782da6 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 gitlab.com/elixxir/crypto v0.0.7-0.20210614155844-c1e9c23a6ba7 gitlab.com/elixxir/primitives v0.0.3-0.20210614155726-ebcf2d47a527 - gitlab.com/xx_network/comms v0.0.4-0.20210617183321-d5f4fd71033c + gitlab.com/xx_network/comms v0.0.4-0.20210622173957-3c81ba16a735 gitlab.com/xx_network/crypto v0.0.5-0.20210614155554-8c333814205b gitlab.com/xx_network/primitives v0.0.4-0.20210617180018-6472489fd418 gitlab.com/xx_network/ring v0.0.3-0.20210527191221-ce3f170aabd5 diff --git a/go.sum b/go.sum index 092d8bf4a17ed227dc557220b7e7be54e1213c1b..9a22b4a7cb8ed89a9c3ca6a49915ee2b1ca6f0e9 100644 --- a/go.sum +++ b/go.sum @@ -86,6 +86,8 @@ gitlab.com/elixxir/primitives v0.0.3-0.20210614155726-ebcf2d47a527/go.mod h1:nSm gitlab.com/xx_network/comms v0.0.0-20200805174823-841427dd5023/go.mod h1:owEcxTRl7gsoM8c3RQ5KAm5GstxrJp5tn+6JfQ4z5Hw= gitlab.com/xx_network/comms v0.0.4-0.20210617183321-d5f4fd71033c h1:qrdft99RsCaXuMOlMBZaQm6JHySt4M+kGBofUyW/RU8= gitlab.com/xx_network/comms v0.0.4-0.20210617183321-d5f4fd71033c/go.mod h1:ehwxZxcAQHkJjP5BNkwPNK8/o6avUn0j0iDDiu+nMFc= +gitlab.com/xx_network/comms v0.0.4-0.20210622173957-3c81ba16a735 h1:U1SATNTQnRQpf57O45Y88gTVnWf+aCkfkS81idZw1i4= +gitlab.com/xx_network/comms v0.0.4-0.20210622173957-3c81ba16a735/go.mod h1:ehwxZxcAQHkJjP5BNkwPNK8/o6avUn0j0iDDiu+nMFc= gitlab.com/xx_network/crypto v0.0.3/go.mod h1:DF2HYvvCw9wkBybXcXAgQMzX+MiGbFPjwt3t17VRqRE= gitlab.com/xx_network/crypto v0.0.4/go.mod h1:+lcQEy+Th4eswFgQDwT0EXKp4AXrlubxalwQFH5O0Mk= gitlab.com/xx_network/crypto v0.0.5-0.20210614155554-8c333814205b h1:X2Hhg9/IYowxMdI6TTnWj6WW3pnO2vMB/7f4mnu6Muw= diff --git a/network/instance_test.go b/network/instance_test.go index c2b749b65a7712916025c7e8ed40505ff7f6584a..7c468159e49e7310f46a47f0b2b79aad8d9726a9 100644 --- a/network/instance_test.go +++ b/network/instance_test.go @@ -1204,12 +1204,12 @@ func TestInstance_GetNodeAndGateway(t *testing.T) { } if !reflect.DeepEqual(nodeGw.Gateway, expectedGateway) { - t.Errorf("Unexpected value in gateway." + + t.Errorf("Unexpected value in gateway."+ "\n\tExpected: %v\n\tReceived: %v", expectedGateway, nodeGw.Gateway) } if !reflect.DeepEqual(nodeGw.Node, expectedNode) { - t.Errorf("Unexpected value in node." + + t.Errorf("Unexpected value in node."+ "\n\tExpected: %v\n\tReceived: %v", expectedNode, nodeGw.Node) } -} \ No newline at end of file +} diff --git a/node/endpoint.go b/node/endpoint.go index b77987c91a086ec7e16aa80ba8c2bdd643de6228..661c0b4b92b3d80340ed1bf7ce865dc8635a57a1 100644 --- a/node/endpoint.go +++ b/node/endpoint.go @@ -40,7 +40,7 @@ func (s *Comms) RequestToken(context.Context, *messages.Ping) (*messages.AssignT // Handle a NewRound event func (s *Comms) CreateNewRound(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -59,7 +59,7 @@ func (s *Comms) CreateNewRound(ctx context.Context, msg *messages.AuthenticatedM // PostNewBatch polls the first node and sends a batch when it is ready func (s *Comms) PostNewBatch(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -80,7 +80,7 @@ func (s *Comms) PostNewBatch(ctx context.Context, msg *messages.AuthenticatedMes func (s *Comms) PostPhase(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -106,7 +106,7 @@ func (s *Comms) StreamPostPhase(server pb.Node_StreamPostPhaseServer) error { return errors.Errorf("Unable to extract authentication info: %+v", err) } - authState, err := s.AuthenticatedReceiver(authMsg) + authState, err := s.AuthenticatedReceiver(authMsg, server.Context()) if err != nil { return errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -121,7 +121,7 @@ func (s *Comms) GetRoundBufferInfo(ctx context.Context, *pb.RoundBufferInfo, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -138,7 +138,7 @@ func (s *Comms) RequestNonce(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.Nonce, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -165,7 +165,7 @@ func (s *Comms) ConfirmRegistration(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.RegistrationConfirmation, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -186,7 +186,7 @@ func (s *Comms) PostPrecompResult(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -207,7 +207,7 @@ func (s *Comms) PostPrecompResult(ctx context.Context, // FinishRealtime broadcasts to all nodes when the realtime is completed func (s *Comms) FinishRealtime(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -229,7 +229,7 @@ func (s *Comms) FinishRealtime(ctx context.Context, msg *messages.AuthenticatedM func (s *Comms) GetCompletedBatch(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.Batch, error) { - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -238,7 +238,7 @@ func (s *Comms) GetCompletedBatch(ctx context.Context, func (s *Comms) GetMeasure(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.RoundMetrics, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -256,7 +256,7 @@ func (s *Comms) GetMeasure(ctx context.Context, msg *messages.AuthenticatedMessa // Gateway -> Server unified polling func (s *Comms) Poll(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.ServerPollResponse, error) { - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -271,7 +271,7 @@ func (s *Comms) Poll(ctx context.Context, msg *messages.AuthenticatedMessage) (* } func (s *Comms) RoundError(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable to handle reception of AuthenticatedMessage: %+v", err) } @@ -286,7 +286,7 @@ func (s *Comms) RoundError(ctx context.Context, msg *messages.AuthenticatedMessa func (s *Comms) SendRoundTripPing(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -313,7 +313,7 @@ func (s *Comms) GetPermissioningAddress(context.Context, *messages.Ping) (*pb.St // Server -> Server initiating multi-party round DH key generation func (s *Comms) StartSharePhase(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -332,7 +332,7 @@ func (s *Comms) StartSharePhase(ctx context.Context, msg *messages.Authenticated // Server -> Server passing state of multi-party round DH key generation func (s *Comms) SharePhaseRound(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -351,7 +351,7 @@ func (s *Comms) SharePhaseRound(ctx context.Context, msg *messages.Authenticated // Server -> Server sending multi-party round DH final key func (s *Comms) ShareFinalKey(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Verify the message authentication - authState, err := s.AuthenticatedReceiver(msg) + authState, err := s.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } diff --git a/notificationBot/endpoint.go b/notificationBot/endpoint.go index 6d3cdd019801c1d53ad03784bf9e44716ea29b0e..7d9426b6f5f74fe663cbe994de252fd637a7eaf8 100644 --- a/notificationBot/endpoint.go +++ b/notificationBot/endpoint.go @@ -37,9 +37,9 @@ func (nb *Comms) RequestToken(context.Context, *messages.Ping) (*messages.Assign } // RegisterForNotifications event handler which registers a client with the notification bot -func (nb *Comms) RegisterForNotifications(_ context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { +func (nb *Comms) RegisterForNotifications(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Check the authState of the message - authState, err := nb.AuthenticatedReceiver(msg) + authState, err := nb.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Failed to handle reception of AuthenticatedMessage: %+v", err) } @@ -57,9 +57,9 @@ func (nb *Comms) RegisterForNotifications(_ context.Context, msg *messages.Authe } // UnregisterForNotifications event handler which unregisters a client with the notification bot -func (nb *Comms) UnregisterForNotifications(_ context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { +func (nb *Comms) UnregisterForNotifications(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Check the authState of the message - authState, err := nb.AuthenticatedReceiver(msg) + authState, err := nb.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Failed to handle reception of AuthenticatedMessage: %+v", err) } @@ -76,9 +76,9 @@ func (nb *Comms) UnregisterForNotifications(_ context.Context, msg *messages.Aut return &messages.Ack{}, err } -func (nb *Comms) ReceiveNotificationBatch(_ context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { +func (nb *Comms) ReceiveNotificationBatch(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Check the authState of the message - authState, err := nb.AuthenticatedReceiver(msg) + authState, err := nb.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Failed to handle reception of AuthenticatedMessage: %+v", err) } diff --git a/notificationBot/registerNotification_test.go b/notificationBot/registerNotification_test.go index c3fc5ef6e9c392604c80e98bd431e64350dfdc28..cdc093dfc49022291cda0fedc3da65fc9dac1761 100644 --- a/notificationBot/registerNotification_test.go +++ b/notificationBot/registerNotification_test.go @@ -8,10 +8,10 @@ package notificationBot import ( - "context" "gitlab.com/elixxir/comms/gateway" "gitlab.com/elixxir/comms/mixmessages" "gitlab.com/elixxir/comms/testkeys" + "gitlab.com/elixxir/comms/testutils" "gitlab.com/xx_network/comms/connect" "gitlab.com/xx_network/comms/gossip" "gitlab.com/xx_network/primitives/id" @@ -40,7 +40,9 @@ func TestRegisterForNotifications(t *testing.T) { gossip.DefaultManagerFlags()) defer gw.Shutdown() - ctx, _ := context.WithCancel(context.Background()) + ctx, cancel := testutils.NewContextTesting(t) + defer cancel() + defer ctx.Done() //Init host and manager manager := connect.NewManagerTesting(t) @@ -80,7 +82,9 @@ func TestUnRegisterForNotifications(t *testing.T) { notificationBot := StartNotificationBot(testId, notificationBotAddress, NewImplementation(), certData, keyData) defer notificationBot.Shutdown() - ctx, _ := context.WithCancel(context.Background()) + ctx, cancel := testutils.NewContextTesting(t) + defer cancel() + defer ctx.Done() //Init host and manager manager := connect.NewManagerTesting(t) diff --git a/registration/endpoint.go b/registration/endpoint.go index eb33fa8bd9c7523d2e7b8b43505f78cbd32cc403..ff2812c3c5d2553dde63f333cb7a34a0c0356435 100644 --- a/registration/endpoint.go +++ b/registration/endpoint.go @@ -86,7 +86,7 @@ func (r *Comms) PollNdf(ctx context.Context, ndfHash *pb.NDFHash) (*pb.NDF, erro // Server -> Permissioning unified polling func (r *Comms) Poll(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.PermissionPollResponse, error) { // Create an auth object - authState, err := r.AuthenticatedReceiver(msg) + authState, err := r.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } diff --git a/testutils/utils.go b/testutils/utils.go index 5d0f0c7ec4e1ce133d626cd4ad2787b292cf431c..6ce547a81bada501f24d2ec782ff6d739f489e39 100644 --- a/testutils/utils.go +++ b/testutils/utils.go @@ -8,6 +8,7 @@ package testutils import ( + "context" "crypto/rand" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" @@ -16,13 +17,14 @@ import ( "gitlab.com/xx_network/comms/signature" "gitlab.com/xx_network/crypto/signature/ec" "gitlab.com/xx_network/crypto/signature/rsa" + "google.golang.org/grpc/peer" + "net" "testing" + "time" ) const privKeyEncoded = `uVAt6d+y3XW699L3THlcoTA2utw2dhoqnX6821x6OcnOliwX84eajmp45IZ+STw0dUl8uJtZwDKDuHVX6ZpGzg==` - - func LoadPublicKeyTesting(i interface{}) (*rsa.PublicKey, error) { switch i.(type) { case *testing.T: @@ -137,3 +139,31 @@ func SignRoundInfoEddsa(ri *pb.RoundInfo, key *ec.PrivateKey, i interface{}) err return nil } + +// NewContextTesting constructs a context.Context object on +// the local Unix default domain (UDP) port +func NewContextTesting(i interface{}) (context.Context, context.CancelFunc) { + switch i.(type) { + case *testing.T: + break + case *testing.M: + break + case *testing.B: + break + default: + jww.FATAL.Panicf("SignRoundInfoEddsa is restricted to testing only. Got %T", i) + } + + protoCtx, cancel := context.WithTimeout(context.Background(), + time.Second) + timeout := 1 * time.Second + conn, err := net.DialTimeout("udp", "0.0.0.0:53", timeout) + if err != nil { + jww.FATAL.Fatalf("Failed to get a conn object in setup: %v", err) + } + p := &peer.Peer{ + Addr: conn.RemoteAddr(), + } + + return peer.NewContext(protoCtx, p), cancel +} diff --git a/udb/endpoint.go b/udb/endpoint.go index 55817fcff8a87844c25f9d5ba78e3bdd4083c2b0..69efefd3c0a0daf60fbb4c0e36c32791cfa59aba 100644 --- a/udb/endpoint.go +++ b/udb/endpoint.go @@ -41,7 +41,7 @@ func (u *Comms) RequestToken(context.Context, *messages.Ping) (*messages.AssignT func (u *Comms) RegisterUser(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Create an auth object - authState, err := u.AuthenticatedReceiver(msg) + authState, err := u.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -58,7 +58,7 @@ func (u *Comms) RegisterUser(ctx context.Context, msg *messages.AuthenticatedMes func (u *Comms) RegisterFact(ctx context.Context, msg *messages.AuthenticatedMessage) (*pb.FactRegisterResponse, error) { // Create an auth object - authState, err := u.AuthenticatedReceiver(msg) + authState, err := u.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -75,7 +75,7 @@ func (u *Comms) RegisterFact(ctx context.Context, msg *messages.AuthenticatedMes func (u *Comms) ConfirmFact(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Create an auth object - authState, err := u.AuthenticatedReceiver(msg) + authState, err := u.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) } @@ -92,7 +92,7 @@ func (u *Comms) ConfirmFact(ctx context.Context, msg *messages.AuthenticatedMess func (u *Comms) RemoveFact(ctx context.Context, msg *messages.AuthenticatedMessage) (*messages.Ack, error) { // Create an auth object - authState, err := u.AuthenticatedReceiver(msg) + authState, err := u.AuthenticatedReceiver(msg, ctx) if err != nil { return nil, errors.Errorf("Unable handles reception of AuthenticatedMessage: %+v", err) }