func (p *pkceCode) Verifier() string {
	return p.verifier
}
Verifier returns the PKCE verifier value which is used in the final step of the OAuth/OIDC authentication flow.
package external
import (
	"crypto/rand"
	"crypto/sha256"
	"encoding/base64"
)
type pkceCode struct {
	challenge string
	verifier  string
}
func newPkceCode() (*pkceCode, error) {
	pkce := new(pkceCode)
	buf := make([]byte, 32)  
	if _, err := rand.Read(buf); err != nil {
		return nil, err
	}
	pkce.verifier = base64.RawURLEncoding.EncodeToString(buf)
	h := sha256.New()
	_, _ = h.Write([]byte(pkce.verifier))
	pkce.challenge = base64.RawURLEncoding.EncodeToString(h.Sum(nil))
	return pkce, nil
}
func (p *pkceCode) Challenge() string {
	return p.challenge
}