dm: accept authenticated mailbox conversations without a direct shared group
This commit is contained in:
1 parent
b1bfb94f1f
commit
515da0304c
2 files changed
+5
-4
No files matched your search
+3
-4
@@ -636,10 +636,9 @@ int dm_accept_message(struct UTUN_INSTANCE* inst, const uint8_t* msg, size_t len
|
||||
snprintf(c.conv_id, sizeof(c.conv_id), "%s", conv_id);
|
||||
c.mode = message.mode;
|
||||
c.peer_node_id = author;
|
||||
if (!dm_shared_group_id(dm, author, &c.group_id)) {
|
||||
DEBUG_WARN(DEBUG_CATEGORY_DM, "%s: unknown correspondent peer=%llu", DM_ID, (unsigned long long)author);
|
||||
return -1;
|
||||
}
|
||||
/* Автор/адресат уже проверены по подписанному телу. Доставка через S не требует общей группы A/B. */
|
||||
if (!dm_shared_group_id(dm, author, &c.group_id)) DEBUG_DEBUG(DEBUG_CATEGORY_DM,
|
||||
"%s: incoming conversation without direct group peer=%llu conv=%s", DM_ID, (unsigned long long)author, conv_id);
|
||||
if (c.mode == DM_MODE_GROUPS) {
|
||||
c.parties[0] = message.parties[side]; c.parties[1] = message.parties[1 - side];
|
||||
if (!side) {
|
||||
|
||||
@@ -72,6 +72,8 @@ int dm_peer_role(struct UTUN_INSTANCE* inst, uint64_t peer, const char* role);
|
||||
* Не расшифровывает тело и не проверяет членство/роль router-отправителя: это обязанность вызывающего. */
|
||||
int dm_verify_message(struct UTUN_INSTANCE* inst, uint64_t recipient, const uint8_t* msg, size_t len);
|
||||
/* Проверить и расшифровать входящее тело для локального узла, атомарно сохранить историю/беседу/media.
|
||||
* Вызывающий проверяет сетевого отправителя/посредника. Общая группа автора и адресата не требуется;
|
||||
* личность автора, адресат и закреплённые стороны определяются подписанным телом и проверенными ключами.
|
||||
* 0 и receipt после commit либо точного повтора; -1 при отказе. Для file нужен живой dm_media.
|
||||
* Точный удалённый повтор подтверждается по отпечатку без восстановления истории; конфликт отклоняется.
|
||||
* receipt — обязательные 136 байт; при -1 буфер не использовать. Ошибка подписи квитанции возможна после commit. */
|
||||
|
||||
Reference in new issue
Block a user