Files
bibliomane/internal/jwtauth/key.go

40 lines
657 B
Go

package jwtauth
import (
"crypto/rand"
"encoding/base64"
"os"
)
func generateRandomBytes(n int) ([]byte, error) {
b := make([]byte, n)
_, err := rand.Read(b)
if err != nil {
return nil, err
}
return b, nil
}
func generateSecureToken(n int) (string, error) {
bytes, err := generateRandomBytes(n)
if err != nil {
return "", err
}
return base64.URLEncoding.EncodeToString(bytes), nil
}
func getKeyVariableName() string {
return "PLM_JWT_KEY"
}
func InitKey() error {
var err error
keyName := getKeyVariableName()
key := os.Getenv(keyName)
if key == "" {
key, err = generateSecureToken(64)
os.Setenv(keyName, key)
}
return err
}