passwords

package
v0.6.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2026 License: AGPL-3.0 Imports: 5 Imported by: 0

Documentation

Overview

Package passwords provides bcrypt password hashing and strength validation.

Security:

  • bcrypt with cost factor 12 (tunable)
  • Constant-time comparison (built into bcrypt)
  • No plaintext passwords ever stored or logged

Index

Constants

View Source
const (
	// MinPasswordLength is the minimum acceptable password length.
	MinPasswordLength = 8
	// MaxPasswordLength is bcrypt's maximum password byte length.
	MaxPasswordLength = 72
)
View Source
const ProductionBcryptCost = 12

ProductionBcryptCost is the bcrypt work factor used in production (≈250 ms on modern hardware). Lowering it is a security regression; the strength_security_test enforces it.

Variables

This section is empty.

Functions

func Hash

func Hash(plaintext string) (string, error)

Hash hashes a plaintext password using bcrypt with cost 12. The returned string is suitable for storage (e.g. "$2a$12$...").

func SetCostForTests added in v0.6.5

func SetCostForTests(cost int) (restore func())

SetCostForTests overrides the bcrypt cost factor for the duration of a test binary. Call ONLY from TestMain (before any tests run) or from a single test that immediately defers the returned restore func. It is not safe for concurrent use and must never be called from production code. Returns a restore func that resets the original cost.

func ValidateStrength

func ValidateStrength(password string) []string

ValidateStrength validates password strength and returns a list of issues. An empty slice means the password meets all requirements.

func Verify

func Verify(plaintext, hash string) bool

Verify checks a plaintext password against a bcrypt hash using bcrypt's built-in constant-time comparison to prevent timing attacks. Returns true if the password matches, false otherwise.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL