summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto/wireguard/wireguard.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/proto/wireguard/wireguard.c b/proto/wireguard/wireguard.c
index 56507e2b..ade81f1a 100644
--- a/proto/wireguard/wireguard.c
+++ b/proto/wireguard/wireguard.c
@@ -20,8 +20,14 @@ int get_device(struct wg_proto *p, wg_device **pdev, const char *device_name)
wg_device *dev = calloc(1, sizeof(wg_device));
strncpy(dev->name, device_name, sizeof(dev->name));
- dev->flags = WGDEVICE_HAS_PRIVATE_KEY | WGDEVICE_HAS_LISTEN_PORT;
- memcpy(dev->private_key, p->private_key, sizeof(dev->private_key));
+ if (c->private_key)
+ {
+ dev->flags |= WGDEVICE_HAS_PRIVATE_KEY | WGDEVICE_HAS_PUBLIC_KEY;
+ wg_key_from_base64(dev->private_key, c->private_key);
+ wg_generate_public_key(dev->public_key, dev->private_key);
+ }
+ if (dev->listen_port)
+ dev->flags |= WGDEVICE_HAS_LISTEN_PORT;
dev->listen_port = c->listen_port;
debug("listen port %d\n", c->listen_port);
@@ -626,13 +632,6 @@ wg_init(struct proto_config *C)
P->reload_routes = wg_reload_routes;
// P->accept_ra_types = RA_ANY;
- log(L_TRACE "WG: private_key %s", c->private_key);
- if (c->private_key)
- wg_key_from_base64(p->private_key, c->private_key);
- log(L_TRACE "WG: public_key %s", c->peer.public_key);
- if (c->peer.public_key)
- wg_key_from_base64(p->peer.public_key, c->peer.public_key);
-
/* Add all channels */
struct wg_channel_config *cc;
WALK_LIST(cc, C->channels)