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.
This commit is contained in:
Steven Polley 2024-04-20 13:27:00 -06:00
parent 1e195c3768
commit a52f3f0d43
2 changed files with 4 additions and 3 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@ hyp.secret
*.exe *.exe
hypd/hypd hypd/hypd
hyp/hyp hyp/hyp
hypd/hypdconfig.json hypd/hypdconfig.json
hypd/secrets/

View File

@ -175,7 +175,7 @@ func rotateSequence() {
for { for {
// Generate new knock sequences with time skew support // Generate new knock sequences with time skew support
t := time.Now().Add(time.Second * -30) 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 { for _, secret := range sharedSecrets {
portSequence, err := otphyp.GeneratePorts(secret, t.Add((time.Second * 30 * time.Duration(i)))) portSequence, err := otphyp.GeneratePorts(secret, t.Add((time.Second * 30 * time.Duration(i))))
if err != nil { if err != nil {
@ -190,7 +190,7 @@ func rotateSequence() {
time.Sleep(time.Until(time.Now().Truncate(time.Second * 30).Add(time.Second * 30))) time.Sleep(time.Until(time.Now().Truncate(time.Second * 30).Add(time.Second * 30)))
// pop first value, next iteration pushes new value // pop first value, next iteration pushes new value
knockSequences = knockSequences[1:] knockSequences = knockSequences[len(sharedSecrets):]
} }
} }