From 4050a353d24c819317f8ab9b1c39053068e7bef5 Mon Sep 17 00:00:00 2001 From: Benjamin Wenger <ben@elixxir.ioo> Date: Wed, 6 Apr 2022 12:56:36 -0700 Subject: [PATCH] made session resets come in on a unique service --- api/client.go | 6 ++++++ auth/cmix.go | 8 ++++++-- auth/request.go | 2 +- bindings/notifications.go | 1 + interfaces/preimage/generate.go | 10 ++++++++++ interfaces/preimage/types.go | 1 + 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/api/client.go b/api/client.go index 03fd0b318..58189f738 100644 --- a/api/client.go +++ b/api/client.go @@ -976,6 +976,12 @@ func checkVersionAndSetupStorage(def *ndf.NetworkDefinition, Source: protoUser.ReceptionID[:], }, protoUser.ReceptionID) + storageSess.GetEdge().Add(edge.Preimage{ + Data: preimage.GenerateRequest(protoUser.ReceptionID), + Type: preimage.Reset, + Source: protoUser.ReceptionID[:], + }, protoUser.ReceptionID) + if err != nil { return nil, errors.WithMessage(err, "Failed to denote state "+ "change in session") diff --git a/auth/cmix.go b/auth/cmix.go index 0f76dd7ef..9fceb57fb 100644 --- a/auth/cmix.go +++ b/auth/cmix.go @@ -34,7 +34,7 @@ func getMixPayloadSize(primeSize int) int { // is created. func sendAuthRequest(recipient *id.ID, contents, mac []byte, primeSize int, fingerprint format.Fingerprint, net interfaces.NetworkManager, - cMixParams params.CMIX) (id.Round, error) { + cMixParams params.CMIX, reset bool) (id.Round, error) { cmixMsg := format.NewMessage(primeSize) cmixMsg.SetKeyFP(fingerprint) cmixMsg.SetMac(mac) @@ -42,8 +42,12 @@ func sendAuthRequest(recipient *id.ID, contents, mac []byte, primeSize int, jww.INFO.Printf("Requesting Auth with %s, msgDigest: %s", recipient, cmixMsg.Digest()) + if reset { + cMixParams.IdentityPreimage = preimage.GenerateRequest(recipient) + } else { + cMixParams.IdentityPreimage = preimage.GenerateReset(recipient) + } - cMixParams.IdentityPreimage = preimage.GenerateRequest(recipient) cMixParams.DebugTag = "auth.Request" round, _, err := net.SendCMIX(cmixMsg, recipient, cMixParams) if err != nil { diff --git a/auth/request.go b/auth/request.go index 754597868..cd32a5116 100644 --- a/auth/request.go +++ b/auth/request.go @@ -179,7 +179,7 @@ func requestAuth(partner, me contact.Contact, rng io.Reader, reset bool, cMixParams := params.GetDefaultCMIX() rndID, err := sendAuthRequest(partner.ID, contents, mac, cMixPrimeSize, - requestfp, net, cMixParams) + requestfp, net, cMixParams, reset) return rndID, err } diff --git a/bindings/notifications.go b/bindings/notifications.go index 7f393cf72..57972fbe4 100644 --- a/bindings/notifications.go +++ b/bindings/notifications.go @@ -54,6 +54,7 @@ func (mnfmr *ManyNotificationForMeReport) Len() int { // TYPE SOURCE DESCRIPTION // "default" recipient user ID A message with no association // "request" sender user ID A channel request has been received +// "reset" sender user ID A channel reset has been received // "confirm" sender user ID A channel request has been accepted // "silent" sender user ID A message which should not be notified on // "e2e" sender user ID reception of an E2E message diff --git a/interfaces/preimage/generate.go b/interfaces/preimage/generate.go index 84798d696..28e8a2fc4 100644 --- a/interfaces/preimage/generate.go +++ b/interfaces/preimage/generate.go @@ -28,3 +28,13 @@ func GenerateRequest(recipient *id.ID) []byte { // Base 64 encode hash and truncate return h.Sum(nil) } + +func GenerateReset(recipient *id.ID) []byte { + // Hash fingerprints + h, _ := blake2b.New256(nil) + h.Write(recipient[:]) + h.Write([]byte(Reset)) + + // Base 64 encode hash and truncate + return h.Sum(nil) +} diff --git a/interfaces/preimage/types.go b/interfaces/preimage/types.go index bd6226e62..7067c87a5 100644 --- a/interfaces/preimage/types.go +++ b/interfaces/preimage/types.go @@ -3,6 +3,7 @@ package preimage const ( Default = "default" Request = "request" + Reset = "reset" Confirm = "confirm" Silent = "silent" E2e = "e2e" -- GitLab