Document attachment key persistence failure during chat audit

This commit is contained in:
evgeny committed 2026-10-26 21:29:41 +01:00
1 parent 1899b7f8cf
commit e33d51a34a
2 files changed
+13 -2

No files matched your search

+9 -1
View File
@@ -14,7 +14,15 @@ Android показывает зашифрованное вложение отд
Список чатов сохраняет общее название зашифрованного вложения вместо manifest.
Автор генерирует независимые случайные crypto_UUID и ключ AES-256 на каждую
подготовку. Ключ записывается в локальную SQLite до шифрования. Готовый контейнер
подготовку. Штатно ключ записывается в локальную SQLite до шифрования. При аудите
26.10.2026 подтверждено исключение: отказ `sqlite3_bind_blob` ключа не проверяется,
и подготовка запускается со строкой `key=NULL`, несмотря на сообщение «key saved».
Контейнер создаётся, переданный исходник удаляется; последующая проверка
`chat_attachment_bind` запрещает публикацию, и отправка завершается событием ошибки.
Это открытый дефект сохранения ключа; аудит модуля остаётся частичным.
Стенд, точная граница проверки и план исправления — в
[chat_audit_findings.txt](chat_audit_findings.txt), продолжение chat_attachment.
Готовый контейнер
передаётся через обычные media_index/media_delivery. UUID транспортного медиа
и crypto_UUID имеют разные назначения: первый идентифицирует сетевые блоки,
второй — контейнер и ключ. Повтор доставки передаёт прежний контейнер.
+4 -1
View File
@@ -27,7 +27,10 @@ void chat_attachment_destroy(struct UTUN_INSTANCE* inst);
/* Асинхронно отправить подготовленный файл; channel — десятичный ID, reply — 32 байта ID ответа либо нули.
* Аргументы копируются. 0 — задача принята, source передан задаче и будет удалён даже при ошибке подготовки.
* -1 — отказ запуска, source остаётся у вызывающего. Ненулевой request возвращается в CHAT_EVT_MSG_SUBMITTED. */
* -1 — отказ запуска, source остаётся у вызывающего. Ненулевой request возвращается в CHAT_EVT_MSG_SUBMITTED.
* Ошибка media_async_submit может дать событие синхронно, до возврата 0 из send.
* Известный дефект: отказ SQL bind ключа не проверяется; 0 пока не гарантирует сохранение ключа перед worker.
* Подробности и локальная проверка: doc/chat_audit_findings.txt, продолжение chat_attachment. */
/* type проверяется encrypted_file_validate_type до выделения задачи, генерации UUID/ключа и записи в БД. */
int chat_attachment_send(struct UTUN_INSTANCE* inst, const char* channel, const char* source,
const struct attachment_info* info, const char* type, const uint8_t reply[32], uint64_t request);