[management] Use xID for setup key IDs to avoid id collisions (#3977)

This PR addresses potential ID collisions by switching the setup key ID generation from a hash-based approach to using xid-generated IDs.

Replace the hash function with xid.New().String()
Remove obsolete imports and the Hash() function
This commit is contained in:
Maycon Santos
2025-06-14 12:24:16 +01:00
committed by GitHub
parent f595057a0b
commit b1247a14ba
2 changed files with 7 additions and 18 deletions

View File

@@ -3,13 +3,12 @@ package types
import (
"crypto/sha256"
b64 "encoding/base64"
"hash/fnv"
"strconv"
"strings"
"time"
"unicode/utf8"
"github.com/google/uuid"
"github.com/rs/xid"
"github.com/netbirdio/netbird/management/server/util"
)
@@ -170,7 +169,7 @@ func GenerateSetupKey(name string, t SetupKeyType, validFor time.Duration, autoG
encodedHashedKey := b64.StdEncoding.EncodeToString(hashedKey[:])
return &SetupKey{
Id: strconv.Itoa(int(Hash(key))),
Id: xid.New().String(),
Key: encodedHashedKey,
KeySecret: HiddenKey(key, 4),
Name: name,
@@ -192,12 +191,3 @@ func GenerateDefaultSetupKey() (*SetupKey, string) {
return GenerateSetupKey(DefaultSetupKeyName, SetupKeyReusable, DefaultSetupKeyDuration, []string{},
SetupKeyUnlimitedUsage, false, false)
}
func Hash(s string) uint32 {
h := fnv.New32a()
_, err := h.Write([]byte(s))
if err != nil {
panic(err)
}
return h.Sum32()
}