diff options
Diffstat (limited to 'player-server/internal/auth/token.go')
| -rw-r--r-- | player-server/internal/auth/token.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/player-server/internal/auth/token.go b/player-server/internal/auth/token.go index bdb7e6b..bcb696f 100644 --- a/player-server/internal/auth/token.go +++ b/player-server/internal/auth/token.go @@ -20,14 +20,17 @@ func NewTokenManager() TokenManager { } // Generate creates a plaintext API token and its stored hash. -func (m *tokenManager) Generate() (plaintext, hash string) { +// Returns an error if the system random source fails. A crypto/rand.Read +// failure indicates a process-level emergency, so callers should propagate +// the error upward rather than masking it. +func (m *tokenManager) Generate() (plaintext, hash string, err error) { b := make([]byte, tokenByteLength) if _, err := rand.Read(b); err != nil { - panic(fmt.Sprintf("generate token: %v", err)) + return "", "", fmt.Errorf("generate token: %w", err) } plaintext = hex.EncodeToString(b) - return plaintext, m.Hash(plaintext) + return plaintext, m.Hash(plaintext), nil } // Hash returns the SHA-256 hash of a plaintext API token. |
