package util import ( "crypto/rand" "encoding/base64" "golang.org/x/crypto/curve25519" ) // GenerateWireguardKeypair generates a base64 encoded private and public key pair for Wireguard. func GenerateWireguardKeypair() (privateKey string, publicKey string, err error) { var priv [32]byte if _, err := rand.Read(priv[:]); err != nil { return "", "", err } priv[0] &= 248 priv[31] &= 127 priv[31] |= 64 var pub [32]byte curve25519.ScalarBaseMult(&pub, &priv) return base64.StdEncoding.EncodeToString(priv[:]), base64.StdEncoding.EncodeToString(pub[:]), nil }