pkce/utils.go (20 lines of code) (raw):

package pkce import ( "crypto/rand" "crypto/sha256" "encoding/base64" ) func codeVerifier() (string, error) { bs := make([]byte, 32) _, err := rand.Read(bs) if err != nil { return "", err } str := base64.RawURLEncoding.EncodeToString(bs) return str, nil } func codeChallenge(verifier string) string { bs := sha256.Sum256([]byte(verifier)) str := base64.RawURLEncoding.EncodeToString(bs[:]) return str }