Source File
errors.go
Belonging Package
github.com/golang-jwt/jwt/v4
package jwt
import (
)
// Error constants
var (
ErrInvalidKey = errors.New("key is invalid")
ErrInvalidKeyType = errors.New("key is of invalid type")
ErrHashUnavailable = errors.New("the requested hash function is unavailable")
ErrTokenMalformed = errors.New("token is malformed")
ErrTokenUnverifiable = errors.New("token is unverifiable")
ErrTokenSignatureInvalid = errors.New("token signature is invalid")
ErrTokenInvalidAudience = errors.New("token has invalid audience")
ErrTokenExpired = errors.New("token is expired")
ErrTokenUsedBeforeIssued = errors.New("token used before issued")
ErrTokenInvalidIssuer = errors.New("token has invalid issuer")
ErrTokenNotValidYet = errors.New("token is not valid yet")
ErrTokenInvalidId = errors.New("token has invalid id")
ErrTokenInvalidClaims = errors.New("token has invalid claims")
)
// The errors that might occur when parsing and validating a token
const (
ValidationErrorMalformed uint32 = 1 << iota // Token is malformed
ValidationErrorUnverifiable // Token could not be verified because of signing problems
ValidationErrorSignatureInvalid // Signature validation failed
// Standard Claim validation errors
ValidationErrorAudience // AUD validation failed
ValidationErrorExpired // EXP validation failed
ValidationErrorIssuedAt // IAT validation failed
ValidationErrorIssuer // ISS validation failed
ValidationErrorNotValidYet // NBF validation failed
ValidationErrorId // JTI validation failed
ValidationErrorClaimsInvalid // Generic claims validation error
)
// NewValidationError is a helper for constructing a ValidationError with a string error message
func ( string, uint32) *ValidationError {
return &ValidationError{
text: ,
Errors: ,
}
}
// ValidationError represents an error from Parse if token is not valid
type ValidationError struct {
Inner error // stores the error returned by external dependencies, i.e.: KeyFunc
Errors uint32 // bitfield. see ValidationError... constants
text string // errors that do not have a valid error just have text
}
// Error is the implementation of the err interface.
func ( ValidationError) () string {
if .Inner != nil {
return .Inner.Error()
} else if .text != "" {
return .text
} else {
return "token is invalid"
}
}
// Unwrap gives errors.Is and errors.As access to the inner error.
func ( *ValidationError) () error {
return .Inner
}
// No errors
func ( *ValidationError) () bool {
return .Errors == 0
}
// Is checks if this ValidationError is of the supplied error. We are first checking for the exact error message
// by comparing the inner error message. If that fails, we compare using the error flags. This way we can use
// custom error messages (mainly for backwards compatability) and still leverage errors.Is using the global error variables.
func ( *ValidationError) ( error) bool {
// Check, if our inner error is a direct match
if errors.Is(errors.Unwrap(), ) {
return true
}
// Otherwise, we need to match using our error flags
switch {
case ErrTokenMalformed:
return .Errors&ValidationErrorMalformed != 0
case ErrTokenUnverifiable:
return .Errors&ValidationErrorUnverifiable != 0
case ErrTokenSignatureInvalid:
return .Errors&ValidationErrorSignatureInvalid != 0
case ErrTokenInvalidAudience:
return .Errors&ValidationErrorAudience != 0
case ErrTokenExpired:
return .Errors&ValidationErrorExpired != 0
case ErrTokenUsedBeforeIssued:
return .Errors&ValidationErrorIssuedAt != 0
case ErrTokenInvalidIssuer:
return .Errors&ValidationErrorIssuer != 0
case ErrTokenNotValidYet:
return .Errors&ValidationErrorNotValidYet != 0
case ErrTokenInvalidId:
return .Errors&ValidationErrorId != 0
case ErrTokenInvalidClaims:
return .Errors&ValidationErrorClaimsInvalid != 0
}
return false
}
![]() |
The pages are generated with Golds v0.6.7. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |