feat: Adds login via twitter
This commit is contained in:
32
server/utils/pkce.go
Normal file
32
server/utils/pkce.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
b64 "encoding/base64"
|
||||
"math/rand"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
length = 32
|
||||
)
|
||||
|
||||
// GenerateCodeChallenge creates PKCE-Code-Challenge
|
||||
// and returns the verifier and challenge
|
||||
func GenerateCodeChallenge() (string, string) {
|
||||
// Generate Verifier
|
||||
randGenerator := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
randomBytes := make([]byte, length)
|
||||
for i := 0; i < length; i++ {
|
||||
randomBytes[i] = byte(randGenerator.Intn(255))
|
||||
}
|
||||
verifier := strings.Trim(b64.URLEncoding.EncodeToString(randomBytes), "=")
|
||||
|
||||
// Generate Challenge
|
||||
rawChallenge := sha256.New()
|
||||
rawChallenge.Write([]byte(verifier))
|
||||
challenge := strings.Trim(b64.URLEncoding.EncodeToString(rawChallenge.Sum(nil)), "=")
|
||||
|
||||
return verifier, challenge
|
||||
}
|
Reference in New Issue
Block a user