Commit Graph

9546 Commits

Author SHA1 Message Date
WofWca
129137b5de fix(jsonrpc): fix ChatListItem::is_self_in_group
Make it return the correct value for non-Group chats.

This also should improve performance, thanks to the fact that
we now don't have to query all the chat's contacts.
Instead we only need confirm that self-contact
is among the group members, and only when the chat type is `Group`.
2025-10-23 16:52:32 +02:00
link2xt
ec3f765727 refactor(add_transport_from_qr): do not set deprecated config values 2025-10-23 14:04:53 +00:00
link2xt
a743ad9490 feat: do not send Autocrypt in MDNs 2025-10-23 13:49:40 +00:00
link2xt
89315b8ef2 refactor: stop using deprecated Account.configure() 2025-10-23 13:41:57 +00:00
link2xt
e7348a4fd8 feat: do not run SecureJoin if we are already in the group 2025-10-23 06:53:22 +00:00
link2xt
c68244692d api(jsonrpc): restore protect argument for create_group_chat
It was removed in 498a831873
Restoring as optional argument to avoid breaking compatibility.
2025-10-22 18:14:21 +00:00
link2xt
3c93f61b4d fix: migrate from tokio-tar to astral-tokio-tar
tokio-tar is unmaintained and has unpatched CVE-2025-62518.
More details on CVE are in <https://edera.dev/stories/tarmageddon>.
tokio-tar is only used for transferring backups
and worst case is that by manually inspecting
a carefully crafted backup user will not see
the same files as get unpacked when importing a backup.
2025-10-22 16:09:21 +00:00
Hocuri
51b9e86d71 Opt-in weekly sending of statistics (#6851)
This way, the statistics / self-reporting bot will be made into an
opt-in regular sending of statistics, where you enable the setting once
and then they will be sent automatically. The statistics will be sent to
a bot, so that the user can see exactly which data is being sent, and
how often. The chat will be archived and muted by default, so that it
doesn't disturb the user.

The collected statistics will focus on the public-key-verification that
is performed while scanning a QR code. Later on, we can add more
statistics to collect.

**Context:**

_This is just to give a rough idea; I would need to write a lot more
than a few paragraphs in order to fully explain all the context here_.

End-to-end encrypted messengers are generally susceptible to MitM
attacks. In order to mitigate against this, messengers offer some way of
verifying the chat partner's public key. However, numerous studies found
that most popular messengers implement this public-key-verification in a
way that is not understood by users, and therefore ineffective - [a 2021
"State of Knowledge" paper
concludes:](https://dl.acm.org/doi/pdf/10.1145/3558482.3581773)

> Based on our evaluation, we have determined that all current E2EE
apps, particularly when operating in opportunistic E2EE mode, are
incapable of repelling active man-in-the-middle (MitM) attacks. In
addition, we find that none of the current E2EE apps provide better and
more usable [public key verification] ceremonies, resulting in insecure
E2EE communications against active MitM attacks.

This is why Delta Chat tries to go a different route: When the user
scans a QR code (regardless of whether the QR code creates a 1:1 chat,
invites to a group, or subscribes to a broadcast channel), a
public-key-verification is performed in the background, without the user
even having to know about this.

The statistics collected here are supposed to tell us whether Delta Chat
succeeds to nudge the users into using QR codes in a way that is secure
against MitM attacks.

**Plan for statistics-sending:**

- [x] Get this PR reviewed and merged (but don't make it available in
the UI yet; if Android wants to make a release in the meantime, I will
create a PR that removes the option there)
- [x] Set the interval to 1 week again (right now, it's 1 minute for
testing)
- [ ] Write something for people who are interested in what exactly we
count, and link to it (see `TODO[blog post]` in the code)
- [ ] Prepare a short survey for participants
- [ ] Fine-tune the texts at
https://github.com/deltachat/deltachat-android/pull/3794, and get it
reviewed and merged
- [ ] After the next release, ask people to enable the
statistics-sending
2025-10-21 15:29:21 +02:00
Simon Laux
347938a9f9 refactor: jsonrpc rename change casing in names of jsonrpc structs/enums to comply with rust naming conventions. (#7324) 2025-10-21 13:49:16 +02:00
Hocuri
9897ef2e9b refactor: Remove error stock strings that are rarely used these days (#7327)
This removes the DC_STR_CANTDECRYPT_MSG_BODY and
DC_STR_CANT_DECRYPT_OUTGOING_MSGS stock strings.

See
https://github.com/deltachat/deltachat-android/pull/3956#issuecomment-3425349195
for reasoning.
2025-10-21 09:04:11 +00:00
link2xt
2f34a740c7 build(nix): fix build of deltachat-rpc-server-x86_64-darwin 2025-10-20 20:29:47 +00:00
iequidoo
fc81cef113 refactor: Rename chat::create_group_chat() to create_group()
If we use modules (which are actually namespaces), we can use shorter names. Another approach is to
only use modules for internal code incapsulation and use full names like deltachat-ffi does.
2025-10-20 04:19:22 -03:00
iequidoo
04c2585c27 feat: Synchronize encrypted groups creation across devices (#7001)
Unencrypted groups don't have grpid since key-contacts were merged, so we don't sync them for now.
2025-10-20 04:19:22 -03:00
Simon Laux
59fac54f7b test: Add unique offsets to ids generated by TestContext to increase test correctness (#7297)
and fix the mistakes in tests that get discovered by this.

closes #6799
2025-10-19 17:08:23 +00:00
Simon Laux
65b61efb31 build: ignore configuration for the zed editor (#7322) 2025-10-19 17:03:39 +00:00
link2xt
afc74b0829 fix: do not allow sync item timestamps to be in the future 2025-10-19 11:35:10 +00:00
link2xt
2481a0f48e feat: reset all indirect verifications 2025-10-19 11:35:09 +00:00
link2xt
6c24edb40d feat: do not mark Bob as verified if auth token is old 2025-10-19 11:35:09 +00:00
link2xt
e4178789da refactor: remove ProtectionStatus 2025-10-19 11:35:09 +00:00
link2xt
b417ba86bc api!: remove Chat.is_protected() 2025-10-19 11:35:09 +00:00
link2xt
498a831873 api!: remove APIs to create protected chats
Create unprotected group in test_create_protected_grp_multidev
The test is renamed accordingly.

SystemMessage::ChatE2ee is added in encrypted groups
regardless of whether they are protected or not.
Previously new encrypted unprotected groups
had no message saying that messages are end-to-end encrypted
at all.
2025-10-19 11:35:09 +00:00
link2xt
c6722d36de api!: remove public APIs to check if the chat is protected 2025-10-19 11:35:09 +00:00
link2xt
90f0d5c060 api: make dc_chat_is_protected always return 0 2025-10-19 11:35:09 +00:00
link2xt
90ec2f2518 docs: document Autocrypt-Gossip _verified attribute 2025-10-19 11:35:09 +00:00
link2xt
5b66535134 feat: verify contacts via Autocrypt-Gossip
This mechanism replaces `Chat-Verified` header.
New parameter `_verified=1` in `Autocrypt-Gossip`
header marks that the sender has the gossiped key
verified.

Using `_verified=1` instead of `_verified`
because it is less likely to cause troubles
with existing Autocrypt header parsers.
This is also how https://www.rfc-editor.org/rfc/rfc2045
defines parameter syntax.
2025-10-19 11:35:09 +00:00
link2xt
eea848f72b fix: don't ignore QR token timestamp from sync messages 2025-10-19 11:35:09 +00:00
link2xt
214a1d3e2d feat: do not resolve MX records during configuration
MX record lookup was only used to detect Google Workspace domains.
They can still be configured manually.
We anyway do not want to encourage creating new profiles
with Google Workspace as we don't have Gmail OAUTH2 token anymore
and new users can more easily onboard with a chatmail relay.
2025-10-18 18:09:56 +00:00
link2xt
e270a502d1 refactor: remove invalid Gmail OAuth2 tokens
They were already unused since
<https://github.com/chatmail/provider-db/pull/310>
2025-10-18 18:09:56 +00:00
iequidoo
b863345600 test(rpc-client): vCard color is the same as the contact color (#7294)
This tests "fix(jsonrpc): Use Core's logic for computing VcardContact.color".
2025-10-17 14:46:57 -03:00
link2xt
61b49a9339 Merge tag 'v2.22.0'
Release 2.22.0
2025-10-17 10:53:12 +00:00
link2xt
41c80cf3f2 chore(release): prepare for 2.22.0 v2.22.0 2025-10-17 10:51:26 +00:00
l
6fd3645360 Merge pull request #7320 from chatmail/link2xt/dont-notify-contact-request-calls 2025-10-17 10:45:41 +00:00
link2xt
b812d0a7f7 fix: do not notify about incoming calls for contact requests and blocked contacts 2025-10-17 10:30:46 +00:00
link2xt
e8a4c9237d test: accept the chat with the caller before accepting calls 2025-10-17 10:30:46 +00:00
link2xt
5256013615 feat: protect Autocrypt header 2025-10-16 23:34:44 +00:00
link2xt
9826c28581 feat: anonymize OpenPGP recipients 2025-10-16 23:34:03 +00:00
link2xt
9ceceebdc3 ci: set 7 days cooldown on Dependabot updates
This fixes the warning
<https://docs.zizmor.sh/audits/#dependabot-cooldown>
and avoids updating to freshly published dependencies
that are more likely to be unpublished.
2025-10-16 20:50:24 +00:00
link2xt
187d913f84 ci: pin GitHub action astral-sh/setup-uv
Pinned version corresponds to the current v7.1.0 tag.
2025-10-16 20:50:03 +00:00
link2xt
4a0b180d86 chore(release): prepare for 2.21.0 v2.21.0 2025-10-16 18:18:10 +00:00
dependabot[bot]
6fa6055912 chore(deps): bump github/codeql-action from 3 to 4 (#7304) 2025-10-16 02:24:19 +00:00
dependabot[bot]
667995cde4 chore(cargo): bump async_zip from 0.0.17 to 0.0.18 (#7257) 2025-10-15 21:54:02 +00:00
link2xt
1e0def87fd feat: cache tile.openstreetmap.org tiles for 7 days 2025-10-15 17:07:55 +00:00
link2xt
a219e5ee8c feat: set User-Agent for tile.openstreetmap.org requests 2025-10-15 17:07:55 +00:00
link2xt
8070dfcc82 refactor(mimeparser): store only one signature fingerprint
Messages are normally not signed with more than one key
and in this case we pick an arbitrary signature later anyway.
2025-10-15 16:45:36 +00:00
link2xt
176a89bd03 feat(deltachat-repl): add send-sync command
This allows to send send messages when disconnected
using `send_msg_sync` to create a dedicated connection
and send a single message.

The command can be used for measuring
the duration of SMTP connection establishment.
2025-10-15 16:45:19 +00:00
link2xt
dd8dd2f95c build(nix): remove unused dependencies
darwin.apple_sdk.frameworks is deprecated and does nothing according to
<https://nixos.org/manual/nixpkgs/stable/#sec-darwin-legacy-frameworks>

libiconv dependency also does not seem to be needed for `libdeltachat`,
I have checked that `nix build .#libdeltachat` still succeeds on macOS.
2025-10-15 16:43:54 +00:00
link2xt
eb1bd1d200 feat: TLS 1.3 session resumption 2025-10-15 16:41:50 +00:00
link2xt
460d2f3c2a refactor: pass ALPN around as &str 2025-10-15 16:41:50 +00:00
link2xt
0ab10f99fd refactor: use rustls reexported from tokio_rustls 2025-10-15 16:41:50 +00:00
iequidoo
377f57f1c3 fix(jsonrpc): Use Core's logic for computing VcardContact.color (#7294)
Before, the color was computed from the address, but as we've switched to fingerprint-based contact
colors, this logic became stale. Now `deltachat::contact::get_color()` is used. A test would be nice
to have, but as now all the logic is in Core, this isn't critical as there are Core tests at least.
2025-10-14 05:43:10 -03:00