SHA256
Первая версия вложенных файлов работает
This commit is contained in:
@@ -228,3 +228,22 @@ DeleteMessage принимает type=5/6. DeleteConversation принимает
|
||||
- при удалении чата с `friend`/`close_friend` UI должен отдельно предупредить, что одна очистка истории не уберёт строку чата, и при подтверждении снять социальную связь и очистить историю.
|
||||
|
||||
Это правило не меняет wire/API-формат DM и не меняет байтовый формат tombstone.
|
||||
|
||||
|
||||
## 15. Файлы в личных сообщениях
|
||||
|
||||
Файл не встраивается байтами в `SHiNE_DM`. До отправки DM официальный браузерный клиент:
|
||||
|
||||
1. генерирует отдельные случайные `AES-256-GCM` key и IV;
|
||||
2. шифрует исходный файл локально;
|
||||
3. вычисляет `fileId = Base58(SHA-256(ciphertext))`;
|
||||
4. подписанным HTTP `PUT` загружает ciphertext на свой текущий access-сервер;
|
||||
5. отправляет обычный контентный DM `type=1/2`, plaintext которого начинается с `<S:file...>`.
|
||||
|
||||
Внутри `<S:file...>` находятся `fileId`, абсолютный URL сервера отправителя, AES-key/IV и исходная метаинформация файла. Так как весь plaintext контентного DM уже шифруется на ключ получателя/отправителя, сервер не получает ключ файла.
|
||||
|
||||
Получатель после E2EE-расшифровки DM скачивает ciphertext непосредственно с указанного access-сервера отправителя, сверяет `SHA-256`, расшифровывает файл в браузере и сохраняет исходный файл.
|
||||
|
||||
Отключение функции «Передача файлов» в локальных дополнительных настройках запрещает только отправку новых файлов; ранее полученные `<S:file...>` остаются скачиваемыми.
|
||||
|
||||
Хранение ciphertext и HTTP-контракт описаны в `docs/API/18_DM_File_Storage_API.md`.
|
||||
|
||||
Reference in New Issue
Block a user