Skip to content

Add SimpleX Chat iOS support (SQLCipher via keychain) - #2257

Merged
abrignoni merged 1 commit into
mainfrom
feat/simplex
Sep 23, 2026
Merged

abrignoni merged 1 commit into
mainfrom
feat/simplex

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Adds SimpleX Chat support for iOS, which had no coverage.

SimpleX keeps its data in a SQLCipher-encrypted database, simplex_v1_chat.db, in the group.chat.simplex.app app group. The database passphrase is stored in the iOS keychain (generic-password account databasePassword, access group chat.simplex.app), so the keychain is supplied with --keychain or the keychain field in the GUI, the same way the Signal module works; a keychain the extraction carries is picked up automatically. The database is decrypted in memory with the SQLCipher 4 defaults (4096 byte pages, 256000 PBKDF2-HMAC-SHA512 iterations, SHA512 HMAC), and every page authenticated on the sample tested.

Three artifacts:

  • SimpleX - Messages: from chat_items, with time, direction, sender and chat resolved from contacts, groups and group members, and the message text, plus a conversation view. Attachments render inline: SimpleX stores them unencrypted under app_files and links them to a message through the files table.
  • SimpleX - Contacts: from contacts joined to contact_profiles.
  • SimpleX - Group Members: from group_members joined to groups and profiles.

Field mapping was done against a private sample.

SimpleX keeps its data in a SQLCipher-encrypted database
(simplex_v1_chat.db) in the group.chat.simplex.app app group. The
database passphrase is a generic-password keychain item (account
databasePassword, access group chat.simplex.app), so the keychain is
supplied with --keychain or the GUI field, matching the Signal module.
The database is decrypted in memory with the SQLCipher 4 defaults
(4096 byte pages, 256000 PBKDF2-HMAC-SHA512 iterations, SHA512 HMAC),
which authenticated every page on the tested sample.

Three artifacts:
- Messages (chat_items): time, direction (item_sent), sender and chat
  resolved from contacts, groups and group members, message text, and a
  conversation view. Attachments render inline from the unencrypted
  app_files, linked through the files table.
- Contacts (contacts + contact_profiles).
- Group Members (group_members + groups + profiles).

Field mapping was done against a private sample; no sample data recorded.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@abrignoni
abrignoni merged commit 1c02949 into main Sep 23, 2026
11 checks passed
@abrignoni
abrignoni deleted the feat/simplex branch September 23, 2026 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant