wireguard: make KeyPairs solid
Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
+12
-21
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user