Files
uncloud/internal/machine/network/wireguard.go
T

28 lines
725 B
Go

package network
import (
"fmt"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
"time"
"uncloud/internal/secret"
)
const (
WireGuardInterfaceName = "uncloud"
WireGuardPort = 51820
// WireGuardKeepaliveInterval is sensible interval that works with a wide variety of firewalls is 25 seconds.
WireGuardKeepaliveInterval = 25 * time.Second
)
// NewMachineKeys generates a new WireGuard private and public key pair.
func NewMachineKeys() (privKey, pubKey secret.Secret, err error) {
wgPrivKey, err := wgtypes.GeneratePrivateKey()
if err != nil {
return nil, nil, fmt.Errorf("generate WireGuard private key: %w", err)
}
privKey = wgPrivKey[:]
wgPubKey := wgPrivKey.PublicKey()
pubKey = wgPubKey[:]
return
}