fix undecryptable self-copies by preserving the self-session
iOS CI / Build and Test SwiftUI App (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build Unsigned iOS IPA (push) Canceled after 0s
Build Unsigned iOS and macOS Apps / Build macOS ZIP (push) Canceled after 0s

- Purge the poisoned self-session only once per account instead of on
  every connect, and rebuild it from the own published bundle when
  missing: deleting it repeatedly broke encrypt-to-self, so archived
  copies of own messages (most visibly in the self-chat) failed with
  "could not decrypt".
- Detect OMEMO 2 (urn:xmpp:omemo:2) payloads, which the pinned
  MartinOMEMO does not implement, and show them as undecryptable
  instead of empty plaintext bubbles.
- Guard both behaviours in verify.sh and document the namespace
  limitation in SECURITY.md.
This commit is contained in:
wt committed 2026-08-30 00:32:40 +07:00
1 parent 5a7fc36722
commit 8b86e33186
5 files changed
+92 -20

No files matched your search

+3
View File
@@ -14,6 +14,9 @@
серверной нормализацией; для PLAIN пароль отправляется как введён.
- SCRAM доступен в вариантах SHA-512 (предпочтительный, реализация Luma),
SHA-256 и SHA-1 (Martin); механизм выбирается по рекламе сервера.
- OMEMO работает в legacy-неймспейсе `eu.siacs.conversations.axolotl` (так
умеет закреплённая версия MartinOMEMO); сообщения OMEMO 2
(`urn:xmpp:omemo:2`) показываются как нерасшифрованные, а не пустые.
- Канал шифруется STARTTLS/direct TLS через SecureTransport с уровнем
`negotiatedSSL` (исключает TLS ниже 1.2) и ALPN «xmpp-client»; на системах
с поддержкой SecureTransport договаривается TLS 1.3.