wireguard: make KeyPairs solid

Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2023-08-24 19:49:59 +00:00
parent 60e2687d04
commit 30a7bceda3
3 changed files with 30 additions and 47 deletions
+12 -21
View File
@@ -11,25 +11,24 @@ import (
)
// GetWireguardKeys reads a wgN.key/wgN.pub files
func (m *Machine) GetWireguardKeys(ring int) (*wireguard.KeyPair, error) {
func (m *Machine) GetWireguardKeys(ring int) (wireguard.KeyPair, error) {
var (
data []byte
err error
key wireguard.PrivateKey
pub wireguard.PublicKey
out wireguard.KeyPair
)
data, err = m.ReadFile("wg%v.key", ring)
if err != nil {
// failed to read
return nil, err
return out, err
}
key, err = wireguard.PrivateKeyFromBase64(string(data))
out.PrivateKey, err = wireguard.PrivateKeyFromBase64(string(data))
if err != nil {
// bad key
err = core.Wrapf(err, "wg%v.key", ring)
return nil, err
return out, err
}
data, err = m.ReadFile("wg%v.pub", ring)
@@ -38,27 +37,19 @@ func (m *Machine) GetWireguardKeys(ring int) (*wireguard.KeyPair, error) {
// no wgN.pub is fine
case err != nil:
// failed to read
return nil, err
return out, err
default:
// good read
pub, err = wireguard.PublicKeyFromBase64(string(data))
out.PublicKey, err = wireguard.PublicKeyFromBase64(string(data))
if err != nil {
// bad key
err = core.Wrapf(err, "wg%v.pub", ring)
return nil, err
return out, err
}
}
kp := &wireguard.KeyPair{
PrivateKey: key,
PublicKey: pub,
}
if err = kp.Validate(); err != nil {
return nil, err
}
return kp, nil
err = out.Validate()
return out, err
}
func (m *Machine) tryReadWireguardKeys(ring int) error {
@@ -157,7 +148,7 @@ func (m *Machine) applyWireguardInterfaceConfig(ring int, data wireguard.Interfa
ri := &RingInfo{
Ring: ring,
Enabled: true,
Keys: &wireguard.KeyPair{
Keys: wireguard.KeyPair{
PrivateKey: data.PrivateKey,
},
}
@@ -177,7 +168,7 @@ func (m *Machine) applyWireguardPeerConfig(ring int, pc wireguard.PeerConfig) er
ri := &RingInfo{
Ring: ring,
Enabled: true,
Keys: &wireguard.KeyPair{
Keys: wireguard.KeyPair{
PublicKey: pc.PublicKey,
},
}