Specify admin import transaction and notification contracts
This commit is contained in:
1 parent
cc04f1c0fa
commit
5169ffd0b3
3 files changed
+8
-7
No files matched your search
@@ -5,9 +5,9 @@
|
||||
* выбранному узлу. Передача идёт через сервисный пакет etcp_router с
|
||||
* ROUTE_CRYPTO_SIGN | ROUTE_CRYPTO_ENCRYPT: X25519 ECDH + AES-128-CCM и Ed25519-подпись.
|
||||
* Получатель сверяет выведенные публичные ключи с уже известными ключами канала,
|
||||
* сохраняет оба privkey и синхронно публикует CHAT_EVT_ADMIN_KEY_RECEIVED.
|
||||
* Известный дефект: SQL-helper игнорирует ошибки bind; возможен частичный импорт
|
||||
* с ложным событием успеха. План: doc/chat_audit_findings.txt, продолжение chat_admin.
|
||||
* сохраняет оба privkey атомарно и после commit синхронно публикует CHAT_EVT_ADMIN_KEY_RECEIVED.
|
||||
* Ошибка SQL/crypto сохраняет прежнюю пару без события успеха; корректный повтор допустим.
|
||||
* Внешняя SQL-транзакция отклоняет входящий импорт; незавершённый rollback требует restart.
|
||||
* Модуль включается/отключается chat_sync; все вызовы — в потоке uasync.
|
||||
*/
|
||||
|
||||
|
||||
@@ -335,6 +335,7 @@ void chat_member_tags_commit_trampoline(void* arg);
|
||||
// ── Передача прав админа (владелец → другому узлу) ──
|
||||
|
||||
// Передать оба канальных privkey выбранному узлу (encrypted+signed через etcp_router).
|
||||
// uasync-поток; NULL/неинициализированный inst отклоняется с ERROR. Постановка в транспорт не подтверждает импорт.
|
||||
void chat_core_transfer_admin(struct UTUN_INSTANCE* inst, const char* ch_id, uint64_t target_node_id);
|
||||
|
||||
void chat_core_transfer_admin_trampoline(void* arg);
|
||||
|
||||
@@ -123,10 +123,10 @@ int topo_node_sqlite_channel_get_priv(sqlite3* db, const char* channel_id,
|
||||
int topo_node_sqlite_channel_get_privs(sqlite3* db, const char* channel_id,
|
||||
uint8_t* x25519_priv_out, uint8_t* ed25519_priv_out);
|
||||
|
||||
/* Записать оба канальных privkey по 32 байта (импорт прав админа); 0/-1, без проверки пары/подписи.
|
||||
* Отсутствующая строка даёт 0 без вставки; наличие канала проверяет вызывающий.
|
||||
* Известный дефект: bind/finalize не проверяются; ошибка bind допускает частичную пару/ложный 0.
|
||||
* Исправление ещё не выполнено: doc/chat_audit_findings.txt, продолжение chat_admin. */
|
||||
/* Атомарно записать оба канальных privkey[32] в одну существующую строку; 0/-1.
|
||||
* Savepoint проверяет все SQL-операции и откатывает запись при отказе; отсутствие строки — ошибка.
|
||||
* При внешней транзакции её commit остаётся вызывающему; событие успеха до него запрещено.
|
||||
* Соответствие пары/подпись проверяет вызывающий. Аргументы обязательны; rollback-отказ логируется. */
|
||||
int topo_node_sqlite_channel_set_privs(sqlite3* db, const char* channel_id,
|
||||
const uint8_t* x25519_priv, const uint8_t* ed25519_priv);
|
||||
|
||||
|
||||
Reference in new issue
Block a user