Separate missing member verification keys from SQLite failures

This commit is contained in:
evgeny committed 2026-10-26 14:42:59 +01:00
1 parent fe7bcb334c
commit 1f3f1d9a34
2 files changed
+48 -20

No files matched your search

+9 -2
View File
@@ -17,6 +17,10 @@
#define PEERS_JOIN_TS_SIZE 8
#define PEERS_UPDATE_SIG_SIZE 64
/* Результаты channel_get/get_ed25519_pubkey: отсутствие зависимости и отказ чтения различаются. */
#define TOPO_SQLITE_LOOKUP_MISSING (-1)
#define TOPO_SQLITE_LOOKUP_ERROR (-2)
/* flags byte in wire format */
#define PEERS_FLAG_HAS_JOIN 0x01
@@ -104,7 +108,9 @@ int topo_node_sqlite_member_del(sqlite3* db, const char* channel_id, uint64_t no
int topo_node_sqlite_node_update_verified(sqlite3* db, uint64_t node_id,
const char* name, const uint8_t* x25519, const uint8_t* ed25519, uint64_t update_ts, time_t created_at);
/* Метаданные канала; 0/-1. Все выходы необязательны; name_sz включает NUL, ключи по 32, подпись 64 байта. */
/* Метаданные канала: 0 — успех, LOOKUP_MISSING — нет строки/запрошенного ключа,
* LOOKUP_ERROR — аргументы/SQL/повреждённый размер. Выходы действительны только при 0.
* Все выходы необязательны; name_sz включает NUL, ключи по 32, подпись 64 байта. */
int topo_node_sqlite_channel_get(sqlite3* db, const char* channel_id,
char* name_out, int name_sz, uint64_t* owner_node_id,
uint8_t* x25519_pub, uint8_t* ed25519_pub, uint8_t* signature);
@@ -126,7 +132,8 @@ int topo_node_sqlite_channel_set_privs(sqlite3* db, const char* channel_id,
int topo_node_sqlite_node_set_online(sqlite3* db, uint64_t node_id, int online);
/* online из nodes; 0, если записи нет или запрос не выполнен. */
int topo_node_sqlite_node_get_online(sqlite3* db, uint64_t node_id);
/* Скопировать ровно 32 байта Ed25519 из nodes: 0 — найден, -1 — отсутствует/другая длина/ошибка SQLite.
/* Скопировать ровно 32 байта Ed25519 из nodes: 0 — найден, LOOKUP_MISSING — нет строки/ключа,
* LOOKUP_ERROR — аргументы/SQL/повреждённый размер. При отказе выход не меняется.
* Значение байтов не определяет наличие ключа; криптографическую пригодность проверяет операция verify. */
int topo_node_sqlite_get_ed25519_pubkey(sqlite3* db, uint64_t node_id, uint8_t pubkey_out[32]);