package ssl import ( "sync" ) type ChallengeStore struct { mu sync.RWMutex tokens map[string]string } func NewChallengeStore() *ChallengeStore { return &ChallengeStore{tokens: make(map[string]string)} } func (s *ChallengeStore) Set(token, keyAuth string) { s.mu.Lock() defer s.mu.Unlock() s.tokens[token] = keyAuth } func (s *ChallengeStore) Get(token string) (string, bool) { s.mu.RLock() defer s.mu.RUnlock() v, ok := s.tokens[token] return v, ok } func (s *ChallengeStore) Delete(token string) { s.mu.Lock() defer s.mu.Unlock() delete(s.tokens, token) }