Транспорт

Рукопожатие всегда — UTF-8 JSON. После выбора режима:

Криптография та же: X25519, HKDF-SHA256 (DVeProto-v1/c2s, DVeProto-v1/s2c), AES-256-GCM. TLS по-прежнему защищает канал; DVeProto шифрует полезную нагрузку поверх транспорта.

Рукопожатие (совместимо с v1)

Бинарный кадр 1.1

Длина сообщения задаётся границей WebSocket binary frame. Типы ptype: 0x01 APP_JSON, 0x02 APP_BIN, 0x03 TEXT, 0x10–0x15 файловый обмен.

Передача файлов (1.1)

Файл идёт чанками: FILE_BEGINFILE_CHUNK* → FILE_END. Каждый chunk — отдельный binary frame со своим AES-GCM nonce/tag. Возобновление: FILE_RESUME / FILE_ACK(last_ok). Целостность: AEAD на chunk + опциональный SHA-256 всего файла. Поддерживаются любые пользовательские файлы (текст, изображения, документы, аудио, видео, архивы).

Удобная интеграция

Полная машиночитаемая схема: https://api.f-chat.ru/DVeProto?format=json.

Совместимость

Клиенты только v1 продолжают работать на wire 1.0. Если обе стороны поддерживают 1.1 — автоматически выбирается binary-режим. Смешанные пары (старый клиент / новый сервер) остаются на JSON-кадрах.

English summary

DVeProto 1.1 keeps the v1 JSON handshake and crypto labels. After negotiation (offer/select), data may use compact binary WebSocket frames (no JSON/Base64) with chunked file transfer. Legacy wire 1.0 remains fully supported. Spec: API JSON; references: reference.py, reference-client.js.