Skip to content

Commit 48019bf

Browse files
Add reentrancy guard to ed25519_verify in Identity class
1 parent 3d5a860 commit 48019bf

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

src/Identity.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "Identity.h"
22
#include <string.h>
3+
#include <assert.h>
34
#define ED25519_NO_SEED 1
45
#include <ed_25519.h>
56

@@ -14,7 +15,14 @@ Identity::Identity(const char* pub_hex) {
1415
}
1516

1617
bool Identity::verify(const uint8_t* sig, const uint8_t* message, int msg_len) const {
17-
return ed25519_verify(sig, message, msg_len, pub_key);
18+
// ed25519_verify uses static buffers internally (ge.c) and is NOT reentrant.
19+
// This guard catches concurrent calls (e.g. from multiple FreeRTOS tasks).
20+
static volatile bool in_verify = false;
21+
assert(!in_verify && "ed25519_verify is not reentrant - concurrent call detected");
22+
in_verify = true;
23+
bool result = ed25519_verify(sig, message, msg_len, pub_key);
24+
in_verify = false;
25+
return result;
1826
}
1927

2028
bool Identity::readFrom(Stream& s) {

0 commit comments

Comments
 (0)