diff --git a/auth/interface.go b/auth/interface.go index 92ad54b7752de8531b43faa947568845b7908f0c..e01e5576685fede4971dbcf8ccd542f08a464bb4 100644 --- a/auth/interface.go +++ b/auth/interface.go @@ -16,6 +16,7 @@ import ( "gitlab.com/elixxir/primitives/format" "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/id/ephemeral" + "io" ) type State interface { @@ -94,6 +95,9 @@ type State interface { // VerifyOwnership checks if the received ownership proof is valid VerifyOwnership(received, verified contact.Contact, e2e e2e.Handler) bool + + //Closer stops listening to auth + io.Closer } // Callbacks is the interface for auth callback methods. diff --git a/auth/state.go b/auth/state.go index 751f60312a3eccbc9a30ffbf3c8820f7dff49c1b..0cd1a33ea9c9c3614bc713a13d3929bf63160605 100644 --- a/auth/state.go +++ b/auth/state.go @@ -119,3 +119,18 @@ func (s *state) CallAllReceivedRequests() { func makeStorePrefix(partner *id.ID) string { return "authStore:" + base64.StdEncoding.EncodeToString(partner.Marshal()) } + +func (s *state) Close() error { + s.net.DeleteService(s.e2e.GetReceptionID(), message.Service{ + Identifier: s.e2e.GetReceptionID()[:], + Tag: s.params.RequestTag, + Metadata: nil, + }, nil) + + s.net.AddService(s.e2e.GetReceptionID(), message.Service{ + Identifier: s.e2e.GetReceptionID()[:], + Tag: s.params.ResetRequestTag, + Metadata: nil, + }, nil) + return nil +} diff --git a/bindings/connect.go b/bindings/connect.go index b7d1bcb181c94b96aee86c3a997a52499e95492d..9910af952b93165e769b15e9e54d508adcf378e3 100644 --- a/bindings/connect.go +++ b/bindings/connect.go @@ -85,8 +85,8 @@ func (c *Connection) SendE2E(mt int, payload []byte) ([]byte, error) { } // Close deletes this Connection's partner.Manager and releases resources -func (c *Connection) Close() { - c.Close() +func (c *Connection) Close() error { + return c.connection.Close() } // GetPartner returns the partner.Manager for this Connection diff --git a/connect/connect.go b/connect/connect.go index ebb98f52aa6835120e3c12b39312c3a8c5185392..0747184292194f581e6e51bf8cd711dcc44c556b 100644 --- a/connect/connect.go +++ b/connect/connect.go @@ -94,8 +94,8 @@ type Params struct { // GetDefaultParams returns a usable set of default Connection parameters. func GetDefaultParams() Params { return Params{ - Auth: auth.GetDefaultParams(), - Rekey: rekey.GetDefaultParams(), + Auth: auth.GetDefaultTemporaryParams(), + Rekey: rekey.GetDefaultEphemeralParams(), Event: event.NewEventManager(), Timeout: connectionTimeout, } @@ -211,6 +211,7 @@ func StartServer(cb Callback, myId *id.ID, privKey *cyclic.Int, // handler provides an implementation for the Connection interface. type handler struct { + auth auth.State partner partner.Manager e2e clientE2e.Handler params Params @@ -220,8 +221,9 @@ type handler struct { // after an E2E partnership has already been confirmed with the given // partner.Manager. func BuildConnection(partner partner.Manager, e2eHandler clientE2e.Handler, - p Params) Connection { + auth auth.State, p Params) Connection { return &handler{ + auth: auth, partner: partner, params: p, e2e: e2eHandler, @@ -230,7 +232,10 @@ func BuildConnection(partner partner.Manager, e2eHandler clientE2e.Handler, // Close deletes this Connection's partner.Manager and releases resources. func (h *handler) Close() error { - return h.e2e.DeletePartner(h.partner.PartnerId()) + if err := h.e2e.DeletePartner(h.partner.PartnerId()); err != nil { + return err + } + return h.auth.Close() } // GetPartner returns the partner.Manager for this Connection. @@ -309,7 +314,7 @@ func (a authCallback) Confirm(requestor contact.Contact, // Return the new Connection object if a.confrimCallback != nil { a.confrimCallback(BuildConnection(newPartner, a.connectionE2e, - a.connectionParams)) + a.authState, a.connectionParams)) } } @@ -341,7 +346,7 @@ func (a authCallback) Request(requestor contact.Contact, // Return the new Connection object a.requestCallback(BuildConnection(newPartner, a.connectionE2e, - a.connectionParams)) + a.authState, a.connectionParams)) } // Reset will be called when an auth Reset operation occurs.