This is an implementation of the WireGuard® for ESP32 Arduino.
Almost all of this code is based on the WireGuard Implementation for lwIP, but some potion of the code is adjusted to build with ESP32 Arduino.
- Include
WireGuard.hpp
at the early part of the sketch.
#include <WireGuard.hpp>
- Define the instance of the
WireGuard
class at module level.
static WireGuard wg;
- Connect to WiFi AP by using
WiFi
class.
WiFi.begin(ssid, password);
while( !WiFi.isConnected() ) {
delay(1000);
}
- Sync the system time via NTP.
configTime(9 * 60 * 60, 0, "ntp.jst.mfeed.ad.jp", "ntp.nict.jp", "time.google.com");
- Start the WireGuard interface.
wg.begin(
local_ip, // IP address of the local interface
private_key, // Private key of the local interface
endpoint_address, // Address of the endpoint peer.
public_key, // Public key of the endpoint peer.
endpoint_port); // Port pf the endpoint peer.
You can see an example sketch uptime_post.ino
, which connects SORACOM Arc WireGuard endpoint and post uptime to SORACOM Harvest via WireGuard connection.
The original WireGuard implementation for lwIP is licensed under BSD 3 clause license so the code in this repository also licensed under the same license.
Original license is below:
The code is copyrighted under BSD 3 clause Copyright (c) 2021 Daniel Hope (www.floorsense.nz)
See LICENSE for details