Транспорт — любой

DVeProto задаёт только что передаётся: последовательность JSON-объектов (UTF-8). Канал может быть чем угодно, если вы можете доставить одну JSON-строку за шаг:

TLS для HTTP/WebSocket по-прежнему защищает канал от третьих лиц; DVeProto даёт свой слой шифрования полезной нагрузки поверх уже существующего транспорта.

Рукопожатие

На HTTPS это может выглядеть как: ответ первого запроса = dve_hello, второй POST = dve_client_ack, затем обмен телами dve — схему маршрутов выбираете вы.

Удобная интеграция (как готовый мини-SDK)

Криптография та же, что в спецификации; добавлены только обёртки, чтобы не собирать кадры вручную на каждом шаге:

Машиночитаемо это же перечислено в JSON спецификации: ключ developer_experience на https://api.f-chat.ru/DVeProto.

Зашифрованный кадр

После рукопожатия каждое сообщение — JSON вида (поля n, c в Base64):

После расшифровки AES-GCM внутри c — снова JSON объекта приложения. Исходящие от клиента шифруются ключом c2s, входящие к клиенту расшифровываются ключом s2c.

Свой сервер и другие проекты

Реализуйте на стороне сервера генерацию пары X25519, ответ dve_hello и приём dve_client_ack, затем шифрование/расшифровку кадров type: dve так же, как в эталонах на Python и в Web Crypto. Передавайте JSON-строки по WebSocket, HTTP, очереди или файлам — протокол не задаёт хост и порт.

Обмен между своими проектами

Реализуйте рукопожатие и кадры по этой спецификации и передавайте строки так, как удобно вашему API (REST, gRPC, боты, микросервисы). Опционально можно использовать очередь обмена на нашем API при авторизации пользователя в экосистеме f-chat.ru.

English summary

DVeProto v1 is transport-agnostic: the same JSON messages work over WSS, HTTPS bodies, NDJSON, queues, etc. Reference implementations: reference.py, reference-client.js. Canonical machine-readable spec: https://api.f-chat.ru/DVeProto (?format=json).