Files
cmroubao/backend-api/internal/usecase/auth_runtime.go
T

21 lines
413 B
Go
Raw Normal View History

package usecase
import (
"crypto/rand"
"encoding/base64"
"errors"
"io"
)
const opaqueTokenBytes = 32
type CryptoTokenGenerator struct{}
func (CryptoTokenGenerator) NewToken() (string, error) {
value := make([]byte, opaqueTokenBytes)
if _, err := io.ReadFull(rand.Reader, value); err != nil {
return "", errors.New("generate opaque token")
}
return base64.RawURLEncoding.EncodeToString(value), nil
}