56 lines
4.0 KiB
Markdown
56 lines
4.0 KiB
Markdown
# Источники проверки Android SASL
|
||
Проверено 2026-10-20. Java source использовался для анализа выбора механизма;
|
||
Android-приложения на устройстве не запускались. Python regression повторяет
|
||
выбор из Conversations, не всю реализацию приложения.
|
||
|
||
- https://xmpp.org/extensions/xep-0440.html (1.0.0)
|
||
- https://xmpp.org/extensions/xep-0474.html
|
||
- https://www.rfc-editor.org/rfc/rfc5929.html
|
||
- https://www.rfc-editor.org/rfc/rfc9266.html
|
||
- https://codeberg.org/iNPUTmice/Conversations
|
||
- https://codeberg.org/monocles/monocles_chat
|
||
|
||
Файлы fetched с mutable master. Следующие branch-head значения получены
|
||
после fetch; это не доказательство скачивания каждого файла по commit pin:
|
||
|
||
Retrieved 2026-10-20 UTC from mutable master; no commit pin confirmed.
|
||
https://codeberg.org/iNPUTmice/Conversations/raw/branch/master/src/main/java/eu/siacs/conversations/crypto/sasl/
|
||
API master commit observed after source fetch: bf3269cd128d4dbf0e479c091477fd9544a798b0
|
||
monocles master commit: 0bc8473a5d4597d1ffe5545055da692ef8b89d37
|
||
|
||
Локальные SHA256 загруженных исходников:
|
||
|
||
- ChannelBinding.java: 88723522ed5bb53e947ad7afbc8cd0f8712ea4747d847347c3e5cd7b9aa41389
|
||
- ChannelBindingMechanism.java: e8a492de0eb866fc93d673cbc46bd5fae18ecf4b7bb46e272e6dca9e8c086937
|
||
- DowngradeProtection.java: a3fe98c2ccad998deb46f5748411a1a26506215cabb2a4e1d7adce0f51f2ac03
|
||
- SaslMechanism.java: 9bec637e7d62cc86a7b09cb8353e6272c80fd7b5d94e305b936bcf8c5a611e73
|
||
- ScramMechanism.java: aa5b2cdc5389a12e8de8fef562f0ee2de45fbdf61fa8fdbd33ea63a5b9299ae8
|
||
- monocles-ChannelBinding.java: 88723522ed5bb53e947ad7afbc8cd0f8712ea4747d847347c3e5cd7b9aa41389
|
||
- monocles-ScramMechanism.java: fea3687a12260d9280e204cc003d689043654950118e2d1dc84c058c736234e7
|
||
|
||
Conversations selector предпочитает exporter только на TLS1.3, затем
|
||
unique на TLS≤1.2, затем endpoint. При отсутствии совместимого объявленного
|
||
типа старый путь использует NONE/y,,. Monocles master содержит дополнительный
|
||
continueWithoutChannelBinding с n,, и обязательным downgrade protection;
|
||
его поведение зависит от версии и не полностью моделируется Python тестом.
|
||
|
||
## Cached inline requests в 0.7.1
|
||
|
||
Полученный серверный журнал показывал TLS1.3 success и inline-request-malformed
|
||
до sasl-attempt. В server 0.7.0 строка `bind2 is disabled` не совпадала с
|
||
`Bind2 is disabled` в diagnostic mapper. В supplied конфигурации Bind2 явно
|
||
не включён. Quickstart constructor в клиентских XmppConnection.java использует
|
||
QUICKSTART_FEATURES, даже если на новом соединении Bind2 уже не объявлен.
|
||
Это воспроизведено новым tests/sasl2_cached_inline.py на binary0.7.0.
|
||
|
||
В0.7.1 unavailable optional bind/resume не отклоняет credentials exchange.
|
||
Bare authorization identifier и post-auth legacy bind позволяют клиентскому
|
||
fallback продолжить вход; available Bind2 работает по прежнему. Это решение
|
||
совместимости с фактическим client fallback, а не ссылка на явное MUST-ignore
|
||
из XEP-0388. Wrong password и malformed enabled extensions не разрешаются.
|
||
|
||
Источники: Conversations и monocles `src/main/java/eu/siacs/conversations/
|
||
xmpp/XmppConnection.java`, `im/conversations/android/xmpp/model/sm/Enable.java`,
|
||
полученные с mutable master 2026-10-20. Authentication success handler оставляет
|
||
isBound=false без bound, затем processSecureStreamFeatures делает обычный bind.
|