package auth import ( "crypto/subtle" "fmt" "git.warky.dev/wdevs/amcs/internal/config" ) type Keyring struct { keys []config.APIKey } func NewKeyring(keys []config.APIKey) (*Keyring, error) { if len(keys) == 0 { return nil, fmt.Errorf("keyring requires at least one key") } return &Keyring{keys: append([]config.APIKey(nil), keys...)}, nil } func (k *Keyring) Lookup(value string) (string, bool) { for _, key := range k.keys { if subtle.ConstantTimeCompare([]byte(key.Value), []byte(value)) == 1 { return key.ID, true } } return "", false }