Files
auth/error.go
T
2026-09-26 20:42:42 -04:00

90 lines
4.2 KiB
Go

package auth
import "errors"
// Base authentication errors
var (
ErrInvalidCredentials = errors.New("invalid credentials")
ErrWeakPassword = errors.New("password must be at least 8 bytes")
ErrPasswordTooLong = errors.New("password must be at most 1024 bytes")
)
// JWT-specific errors
var (
ErrTokenMalformed = errors.New("token: malformed structure")
ErrTokenExpired = errors.New("token: expired")
ErrTokenNotYetValid = errors.New("token: not yet valid")
ErrTokenInvalidSignature = errors.New("token: invalid signature")
ErrTokenMissingClaim = errors.New("token: missing required claim")
ErrTokenEmptyUserID = errors.New("token: empty user ID")
ErrTokenNoPrivateKey = errors.New("token: private key required for signing")
ErrTokenNoPublicKey = errors.New("token: public key required for verification")
ErrTokenTooLong = errors.New("token: exceeds size limit")
)
// JWT secret errors
var (
ErrSecretTooShort = errors.New("JWT secret must be at least 32 bytes")
)
// RSA key parsing errors
var (
ErrRSAInvalidPEM = errors.New("rsa: failed to parse PEM block")
ErrRSAInvalidPrivateKey = errors.New("rsa: invalid private key format")
ErrRSAInvalidPublicKey = errors.New("rsa: invalid public key format")
ErrRSANotPublicKey = errors.New("rsa: not an RSA public key")
ErrRSAWeakKey = errors.New("rsa: key must be at least 2048 bits")
)
// PHC format errors
var (
ErrPHCInvalidFormat = errors.New("phc: invalid format")
ErrPHCInvalidSalt = errors.New("phc: invalid salt encoding")
ErrPHCInvalidHash = errors.New("phc: invalid hash encoding")
ErrPHCCostTooHigh = errors.New("phc: cost parameters exceed verification limit")
ErrArgonInvalidParams = errors.New("argon2: invalid parameters (require t >= 1, p >= 1, m >= 8*p)")
)
// SCRAM-specific errors
var (
ErrSCRAMInvalidNonce = errors.New("scram: invalid nonce or expired handshake")
ErrSCRAMTimeout = errors.New("scram: handshake timeout")
ErrSCRAMVerifyInProgress = errors.New("scram: verification already in progress")
ErrSCRAMInvalidProof = errors.New("scram: invalid proof encoding")
ErrSCRAMInvalidProofLen = errors.New("scram: invalid proof length")
ErrSCRAMServerAuthFailed = errors.New("scram: server authentication failed")
ErrSCRAMInvalidState = errors.New("scram: invalid handshake state")
ErrSCRAMInvalidSalt = errors.New("scram: invalid salt encoding")
ErrSCRAMZeroParams = errors.New("scram: invalid Argon2 parameters")
ErrSCRAMSaltTooShort = errors.New("scram: salt must be at least 16 bytes")
ErrSCRAMTooManyHandshakes = errors.New("scram: handshake capacity exceeded")
ErrSCRAMParamsTooLarge = errors.New("scram: Argon2 parameters exceed limit")
ErrSCRAMParamsTooSmall = errors.New("scram: Argon2 parameters below client minimum")
ErrSCRAMInvalidUsername = errors.New("scram: invalid username")
ErrSCRAMSaltTooLong = errors.New("scram: salt exceeds 64 bytes")
ErrSCRAMStopped = errors.New("scram: server stopped")
ErrSCRAMDecoyKey = errors.New("scram: decoy key must be at least 32 bytes")
ErrSCRAMCredentialProfile = errors.New("scram: credentials must share Argon2 parameters and salt length")
)
// Credential import/export errors
var (
ErrCredMissingUsername = errors.New("credential: missing username")
ErrCredMissingSalt = errors.New("credential: missing salt")
ErrCredInvalidSalt = errors.New("credential: invalid salt encoding")
ErrCredMissingTime = errors.New("credential: missing argon_time")
ErrCredMissingMemory = errors.New("credential: missing argon_memory")
ErrCredMissingThreads = errors.New("credential: missing argon_threads")
ErrCredMissingStoredKey = errors.New("credential: missing stored_key")
ErrCredInvalidStoredKey = errors.New("credential: invalid stored_key encoding")
ErrCredMissingServerKey = errors.New("credential: missing server_key")
ErrCredInvalidServerKey = errors.New("credential: invalid server_key encoding")
ErrCredInvalidType = errors.New("credential: invalid type for field")
)
// HTTP auth parsing errors
var (
ErrAuthInvalidBearerFormat = errors.New("auth: invalid Bearer auth format")
ErrAuthEmptyBearerToken = errors.New("auth: empty Bearer token")
)