From d487b849261e5531175aefb1ec8ca71e09a3d99a Mon Sep 17 00:00:00 2001 From: UA1ZBE Date: Wed, 22 Jul 2026 13:39:33 +0300 Subject: [PATCH] fix beacon: init Ed25519 identity for valid advert signature --- src/main.cpp | 15 +++++++++++++++ src/target.h | 1 + 2 files changed, 16 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 4e1f6a9..06bed5a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -351,6 +351,21 @@ void setup() { fast_rng.begin(radio_driver.getRngSeed()); + { + File f = InternalFS.open(IDENTITY_FILE, FILE_O_READ); + if (f) { + uint8_t buf[PUB_KEY_SIZE + PRV_KEY_SIZE]; + if (f.read(buf, sizeof(buf)) == sizeof(buf)) the_mesh.self_id.readFrom(buf, sizeof(buf)); + f.close(); + } else { + the_mesh.self_id = mesh::LocalIdentity(&fast_rng); + uint8_t buf[PUB_KEY_SIZE + PRV_KEY_SIZE]; + the_mesh.self_id.writeTo(buf, sizeof(buf)); + f = InternalFS.open(IDENTITY_FILE, FILE_O_WRITE); + if (f) { f.write(buf, sizeof(buf)); f.close(); } + } + } + the_mesh.setup_channel(); the_mesh.begin(); diff --git a/src/target.h b/src/target.h index ed9731a..11c299a 100644 --- a/src/target.h +++ b/src/target.h @@ -116,6 +116,7 @@ #define CONFIG_FILE "/security.cfg" #define CHANNEL_FILE "/channel.cfg" #define NAME_FILE "/name.cfg" +#define IDENTITY_FILE "/identity.dat" #define WDT_TIMEOUT_MS 10000 #include