From a52f3f0d4333443950316165d892220e064eee2c Mon Sep 17 00:00:00 2001 From: Steven Polley Date: Sat, 20 Apr 2024 13:27:00 -0600 Subject: [PATCH] fix incorrect logic in rotateSequence This was introduced in the previous few commits when adding support for multiple secrets in knockd. The logic to push and pop entries from the knockSequences slice needed to be adjusted to cound for the number of secrets that are loaded by hypd. --- .gitignore | 3 ++- hypd/server/packet.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index fbba470..16b067f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ hyp.secret *.exe hypd/hypd hyp/hyp -hypd/hypdconfig.json \ No newline at end of file +hypd/hypdconfig.json +hypd/secrets/ \ No newline at end of file diff --git a/hypd/server/packet.go b/hypd/server/packet.go index 7918a54..9eb5c24 100644 --- a/hypd/server/packet.go +++ b/hypd/server/packet.go @@ -175,7 +175,7 @@ func rotateSequence() { for { // Generate new knock sequences with time skew support t := time.Now().Add(time.Second * -30) - for i := len(knockSequences); i < 3; i++ { + for i := len(knockSequences) / len(sharedSecrets); i < 3; i++ { for _, secret := range sharedSecrets { portSequence, err := otphyp.GeneratePorts(secret, t.Add((time.Second * 30 * time.Duration(i)))) if err != nil { @@ -190,7 +190,7 @@ func rotateSequence() { time.Sleep(time.Until(time.Now().Truncate(time.Second * 30).Add(time.Second * 30))) // pop first value, next iteration pushes new value - knockSequences = knockSequences[1:] + knockSequences = knockSequences[len(sharedSecrets):] } }