45 lines
776 B
Go
45 lines
776 B
Go
package main
|
|
|
|
import (
|
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
|
)
|
|
|
|
var wgKeys = KVSecrets[string]{"wireguard"}
|
|
|
|
func wgKey(path string) (key string, err error) {
|
|
return wgKeys.GetOrCreate(path, func() (key string, err error) {
|
|
k, err := wgtypes.GeneratePrivateKey()
|
|
if err != nil {
|
|
return
|
|
}
|
|
key = k.String()
|
|
return
|
|
})
|
|
}
|
|
|
|
func wgPSKey(path string) (key string, err error) {
|
|
return wgKeys.GetOrCreate(path, func() (key string, err error) {
|
|
k, err := wgtypes.GenerateKey()
|
|
if err != nil {
|
|
return
|
|
}
|
|
key = k.String()
|
|
return
|
|
})
|
|
}
|
|
|
|
func wgPubKey(path string) (pubkey string, err error) {
|
|
key, err := wgKey(path)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
k, err := wgtypes.ParseKey(key)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
pubkey = k.PublicKey().String()
|
|
return
|
|
}
|