mirror of
https://github.com/ArcaneChat/core.git
synced 2026-07-03 14:05:33 +02:00
c724e2981c
Close https://github.com/chatmail/core/issues/7396. Before reviewing, you should read the issue description of https://github.com/chatmail/core/issues/7396. I recommend to review with hidden whitespace changes. TODO: - [x] Implement the new protocol - [x] Make Rust tests pass - [x] Make Python tests pass - [x] Test it manually on a phone - [x] Print the sent messages, and check that they look how they should: [test_secure_join_group_with_mime_printed.txt](https://github.com/user-attachments/files/24800556/test_secure_join_group.txt) - [x] Fix bug: If Alice has a second device, then Bob's chat won't be shown yet on that second device. Also, Bob's contact isn't shown in her contact list. As soon as either party writes something into the chat, the that shows up and everything is fine. All of this is still a way better UX than in WhatsApp, where Bob always has to write first 😂 Still, I should fix that. - This is actually caused by a larger bug: AUTH tokens aren't synced if there is no corresponding INVITE token. - Fixed by 6b658a0e0 - [x] Either make a new `auth_tokens` table with a proper UNIQUE bound, or put a UNIQUE bound on the `tokens` table - [x] Benchmarking - [x] TODOs in the code, maybe change naming of the new functions - [x] Write test for interop with older DC (esp. that the original securejoin runs if you remove the &v=3 param) - [x] From a cryptography perspective, is it fine that vc-request is encrypted with AUTH, rather than a separate secret (like INVITE)? - [x] Make sure that QR codes without INVITE work, so that we can remove it eventually - [x] Self-review, and comment on some of my code changes to explain what they do - [x] ~~Maybe use a new table rather than reusing AUTH token.~~ See https://github.com/chatmail/core/pull/7754#discussion_r2728544725 - [ ] Update documentation; I'll do that in a separate PR. All necessary information is in the https://github.com/chatmail/core/issues/7396 issue description - [ ] Update tests and other code to use the new names (e.g. `request-pubkey` rather than `request` and `pubkey` rather than `auth-required`); I'll do that in a follow-up PR **Backwards compatibility:** Everything works seamlessly in my tests. If both devices are updated, then the new protocol is used; otherwise, the old protocol is used. If there is a not-yet-updated second device, it will correctly observe the protocol, and mark the chat partner as verified. Note that I removed the `Auto-Submitted: auto-replied` header from securejoin messages. We don't need it ourselves, it's a cleartext header that leaks too much information, and I can't see any reason to have it. --------- Co-authored-by: iequidoo <117991069+iequidoo@users.noreply.github.com>