Add scoped authenticated carrier interface for chat joins
This commit is contained in:
1 parent
44c796a72f
commit
8a0cc6f5e1
2 files changed
+27
No files matched your search
@@ -23,6 +23,32 @@ extern "C" {
|
||||
|
||||
struct UTUN_INSTANCE;
|
||||
|
||||
#define CHAT_JOIN_WIRE_MAX 2048 /* Полное сообщение CHAT_SYNC для ограниченного транспорта JOIN. */
|
||||
/* Подтверждённая личность и путь конкретной попытки; handle=0 обозначает обычный ETCP. */
|
||||
struct chat_join_route {
|
||||
uint64_t peer, handle;
|
||||
uint8_t public_key[32];
|
||||
};
|
||||
/* Заимствованный транспорт только JOIN, все вызовы в uasync, без синхронных событий.
|
||||
* open закрепляет X25519 из ссылки: 0=принято и handle!=0, 1=пир недоступен, -1=ошибка.
|
||||
* send копирует весь CHAT_SYNC frame: 0=принят, -1=отказ без передачи владения.
|
||||
* close освобождает удержание JOIN после отправки принятых сообщений; физический GATT не закрывает.
|
||||
* success разрешает повышение до ETCP только при независимой проверке known-key. */
|
||||
struct chat_join_carrier {
|
||||
void* ctx;
|
||||
int (*open)(void* ctx, const uint8_t public_key[32], uint64_t* handle);
|
||||
int (*send)(void* ctx, uint64_t handle, const uint8_t* data, size_t len);
|
||||
void (*close)(void* ctx, uint64_t handle, int success);
|
||||
};
|
||||
/* Установить/снять provider; замена отменяет его попытки и waiters до освобождения ctx. 0/-1. */
|
||||
int chat_sync_set_join_carrier(struct UTUN_INSTANCE* inst, const struct chat_join_carrier* carrier);
|
||||
/* События provider после проверки личности и свежести сессии. Получение разрешает только JOIN-типы;
|
||||
* data/public_key заимствованы до возврата. closed отменяет только указанный handle. */
|
||||
void chat_sync_join_carrier_ready(struct UTUN_INSTANCE* inst, uint64_t handle, const uint8_t public_key[32]);
|
||||
void chat_sync_join_carrier_receive(struct UTUN_INSTANCE* inst, uint64_t handle, const uint8_t public_key[32],
|
||||
const uint8_t* data, size_t len);
|
||||
void chat_sync_join_carrier_closed(struct UTUN_INSTANCE* inst, uint64_t handle);
|
||||
|
||||
/* etcp service IDs (direct P2P): ETCP_ID_CHAT_SYNC / ETCP_ID_MEMBER_SYNC
|
||||
* (etcp_bind, см. etcp_api.h) */
|
||||
|
||||
|
||||
@@ -243,6 +243,7 @@ struct UTUN_INSTANCE {
|
||||
// Контексты чат-сервиса; освобождаются при chat_service_stop.
|
||||
struct chat_core_ctx* chat_core; // каналы, сообщения и доступ к общей БД
|
||||
const struct chat_local_provider* bluetooth_discovery; // заимствованный API BLE владельца GUI; снять до destroy instance
|
||||
const struct chat_join_carrier* join_carrier; // заимствованный транспорт JOIN до допуска ETCP; снять до destroy provider
|
||||
struct local_transport* local_transport; // отдельный открытый LAN UDP, принадлежит чат-сервису
|
||||
struct chat_sync* chat_sync; // join и синхронизация каналов
|
||||
struct join_key_entry* join_keys; // зарегистрированные ключи приглашений
|
||||
|
||||
Reference in new issue
Block a user