33 lines
798 B
Go
33 lines
798 B
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
func VerifyToken(signature string) jwt.Keyfunc {
|
|
return func(token *jwt.Token) (any, error) {
|
|
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
|
|
return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
|
|
}
|
|
|
|
return []byte(signature), nil
|
|
}
|
|
}
|
|
|
|
func HashPassword(password string) (string, error) {
|
|
// Hashing the password with a cost of 14 (default)
|
|
hash, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(hash), nil
|
|
}
|
|
|
|
func ComparePassword(storedPassword, inputPassword string) bool {
|
|
err := bcrypt.CompareHashAndPassword([]byte(storedPassword), []byte(inputPassword))
|
|
return err == nil
|
|
}
|