status-go/protocol
Patryk Osmaczko 5b7910ae5a fix: validate community events read from database
Despite the expectation that only validated events are stored in the
database, instances have been identified where invalid events are saved.
This can lead to unexpected behavior or crashes.

This commit adds validation for community events read from the database
to prevent such cases.

**NOTE**: this fix does not address the root cause, which involves
invalid events being saved to the database. The exact scenario leading
to this issue has yet to be identified.

mitigates: status-im/status-desktop#14106
2024-03-27 14:31:03 +01:00
..
anonmetrics chore: make generate with custom `-modtime` (#4896) 2024-03-08 09:25:17 +00:00
audio
common feat: handling replies for bridged messages 2024-03-13 12:50:15 +01:00
communities fix: validate community events read from database 2024-03-27 14:31:03 +01:00
datasync Add basic peersyncing 2024-01-23 12:46:17 +00:00
discord feat(discord): Import single channel from discord (#4160) 2023-10-25 12:32:21 -04:00
encryption Port back migrations from release branch 2024-03-14 13:27:12 +00:00
ens fix: use proper migrations for protocol's test database 2023-10-03 15:11:58 +02:00
identity fix: Remove proof of membership for the profile showcase communities (#4961) 2024-03-22 21:50:15 +01:00
internal/sqlite Sync Settings (#2478) 2022-03-23 18:47:00 +00:00
migrations Feature: store and retrieve a contact's bio (#4916) 2024-03-19 18:09:13 +00:00
peersyncing Add basic peersyncing 2024-01-23 12:46:17 +00:00
protobuf refactor: remove unused `COMMUNITY_EVENTS_MESSAGE_REJECTED` 2024-03-25 13:18:20 +01:00
pushnotificationclient chore: make generate with custom `-modtime` (#4896) 2024-03-08 09:25:17 +00:00
pushnotificationserver chore: make generate with custom `-modtime` (#4896) 2024-03-08 09:25:17 +00:00
requests Fix/community tags indices (#4992) 2024-03-26 20:02:12 +00:00
sqlite Add basic peersyncing 2024-01-23 12:46:17 +00:00
storenodes enable custom community storenodes (#4532) 2024-02-20 17:49:39 +02:00
subscription
transport chore: make generate with custom `-modtime` (#4896) 2024-03-08 09:25:17 +00:00
tt chore: introduce silent test logger config 2024-02-27 11:00:29 +01:00
urls feat: add parsing for new links format (#3665) 2023-07-04 17:48:52 +04:00
v1 Always set PubsubTopic in filters 2023-11-18 02:26:34 +02:00
verification fix: use proper migrations for protocol's test database 2023-10-03 15:11:58 +02:00
wakusync Feat: Add social links to the profile showcase (#4775) 2024-02-26 16:53:40 +03:00
zaputil
LICENSE
README.md
activity_center.go chore: fix ban/unban flow and delete all messages feature (#4743) 2024-02-22 11:25:13 +01:00
activity_center_persistence.go chore: fix ban/unban flow and delete all messages feature (#4743) 2024-02-22 11:25:13 +01:00
activity_center_persistence_test.go only sync decisions/state of AC notifications (#3979) 2023-10-22 17:41:20 +08:00
chat.go feat: Add HideIfPermissionsNotMet to CommunityChat struct 2024-03-18 15:01:29 +01:00
chat_group_proxy.go
chat_test.go Fix contact details large image is always empty (#4864) 2024-03-06 09:25:19 -08:00
communities_events_eventual_consistency_test.go fix: ensure community events eventual consistency 2024-02-20 21:07:01 +01:00
communities_events_owner_without_community_key_test.go feat: admins can delete all members messages during the ban (#4834) 2024-02-29 18:54:17 +01:00
communities_events_token_master_test.go feat: admins can delete all members messages during the ban (#4834) 2024-02-29 18:54:17 +01:00
communities_events_utils_test.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
communities_key_distributor.go feat: encrypt `CommunityDescription` fields 2023-12-22 18:17:06 +01:00
communities_messenger_admin_test.go feat: admins can delete all members messages during the ban (#4834) 2024-02-29 18:54:17 +01:00
communities_messenger_helpers_test.go fix: Update and improve `TestFetchRealCommunity` (#4949) 2024-03-20 18:10:02 +00:00
communities_messenger_signers_test.go chore: unskip flaky tests 2024-02-29 21:58:36 +01:00
communities_messenger_test.go feat: add new CommunityMemberState - CommunityMemberBanWithAllMessagesDelete (#4941) 2024-03-19 14:40:23 +01:00
communities_messenger_token_permissions_test.go Add canView to chat & fix admin role 2024-03-20 16:48:07 -04:00
contact.go Feat: Add social links to the profile showcase (#4775) 2024-02-26 16:53:40 +03:00
contact_test.go Compute emojiHash on-the-fly 2023-03-06 13:22:40 +02:00
delete_message.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
edit_message.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
emoji_reaction.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
errors.go fix(archives): Skip importing the archives for community when user not a member (#4006) 2023-09-15 10:42:28 +03:00
group_chat_invitation.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
group_chat_system_messages.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
identity_images.go feat: Profile showcase data sharing (#4209) 2023-11-09 22:59:01 +04:00
linkpreview_unfurler.go feature: Unfurl status links (#4033) 2023-10-13 13:25:34 +01:00
linkpreview_unfurler_image.go fix(ImageUnfurler): set title for image links (#4215) 2023-10-26 17:52:52 +01:00
linkpreview_unfurler_oembed.go feature: Unfurl status links (#4033) 2023-10-13 13:25:34 +01:00
linkpreview_unfurler_opengraph.go Add favicons to external link previews (#4788) 2024-03-12 22:47:51 +02:00
linkpreview_unfurler_status.go chore: fetch contact with `StoreNodeRequestManager` (#4484) 2023-12-20 12:49:12 +00:00
local_notifications.go feat: new deeplink status-im->status-app (#4198) 2023-11-02 13:56:06 +08:00
message_builder.go add PinMessage and PinnedMessage (#2180) 2021-05-14 23:22:50 +02:00
message_persistence.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
message_validator.go feat(BridgeMessage): Add new type of chat message content: BridgeMessage 2024-01-30 12:14:54 +01:00
message_validator_test.go feat(BridgeMessage): Add new type of chat message content: BridgeMessage 2024-01-30 12:14:54 +01:00
messages_iterator.go feat: introduce `MessagesIterator` 2024-02-09 16:02:17 +01:00
messenger.go fix: sync pending contacts (#4986) 2024-03-26 13:47:12 +00:00
messenger_activity_center.go feat: Community token received notification (#4682) 2024-02-19 14:55:38 +01:00
messenger_activity_center_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_auto_message.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
messenger_backup.go fix: recovering/migrating keypairs fixes 2024-03-01 11:11:16 +01:00
messenger_backup_handler.go fix: race condition on updating account.Name during handle BackupData 2024-03-07 20:18:50 +08:00
messenger_backup_test.go chore: skip TestBackupSettings 2024-03-06 18:05:40 +01:00
messenger_base_test.go fix: clear waku envelopes cache when deleting a chat (#4621) 2024-01-30 13:43:34 +00:00
messenger_bookmarks.go Sync all devices after initial pairing (#3047) 2023-01-06 20:21:14 +08:00
messenger_bridge_message_test.go feat(BridgeMessage): Add new type of chat message content: BridgeMessage 2024-01-30 12:14:54 +01:00
messenger_browsers.go Issue 13813 -- Use messenger ns for browser CRUD (#2801) 2022-08-24 16:05:35 +02:00
messenger_browsers_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_builder_test.go chore: disable curated communities loop in tests (#4894) 2024-03-09 09:42:06 +00:00
messenger_chat_context_test.go Fix contact details large image is always empty (#4864) 2024-03-06 09:25:19 -08:00
messenger_chats.go fix: better calculation of from/to mailserver batch parameters (#4702) 2024-02-12 12:20:56 +00:00
messenger_collapsed_community_categories.go Add collapsed community categories 2023-03-14 17:13:21 +00:00
messenger_collapsed_community_categories_test.go Fix collapsed tests 2023-03-16 13:40:20 +00:00
messenger_communities.go refactor: remove unused `COMMUNITY_EVENTS_MESSAGE_REJECTED` 2024-03-25 13:18:20 +01:00
messenger_communities_import_discord.go feat: Add HideIfPermissionsNotMet to CommunityChat struct 2024-03-18 15:01:29 +01:00
messenger_communities_sharding_test.go fix: waku connection status subscription lock (#4762) 2024-02-19 23:44:38 +00:00
messenger_community_for_mobile_testing.go feat: New field in TokenCriteria proto 2024-02-27 16:25:26 +01:00
messenger_community_for_mobile_testing_test.go fix: sometimes channels do not randomly appear in test community after its creation (#4669) 2024-02-23 10:16:51 +08:00
messenger_community_metrics.go chore: remove boilerplate check of `communities.GetByID` clients 2024-01-10 18:58:17 +01:00
messenger_community_metrics_test.go refactor: update community access enum naming 2023-10-25 17:34:37 +02:00
messenger_community_shard.go enable custom community storenodes (#4532) 2024-02-20 17:49:39 +02:00
messenger_community_storenodes.go enable custom community storenodes (#4532) 2024-02-20 17:49:39 +02:00
messenger_config.go chore: disable curated communities loop in tests (#4894) 2024-03-09 09:42:06 +00:00
messenger_config_test.go chore: disable curated communities loop in tests (#4894) 2024-03-09 09:42:06 +00:00
messenger_contact_requests_test.go chore: unskip flaky tests 2024-02-29 21:58:36 +01:00
messenger_contact_update_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_contact_verification.go Fix: handle accepted contact verifaction if persistedVR is null (#4918) 2024-03-14 20:56:26 +01:00
messenger_contact_verification_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_contacts.go Feat: add endpoint for getting latest pending CR for a contact (#4819) 2024-02-28 23:00:35 +03:00
messenger_contacts_test.go fix: self-contact related flaky tests (#4312) 2023-11-13 20:07:35 +00:00
messenger_curated_communities.go chore: disable curated communities loop in tests (#4894) 2024-03-09 09:42:06 +00:00
messenger_delete_message_for_everyone_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_delete_message_for_me_test.go Revert "Comment out all logged flaky tests" 2024-02-27 11:00:29 +01:00
messenger_delete_messages_test.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
messenger_discv5.go feat: Add DiscV5 to Waku2 (#2434) 2021-11-22 09:40:14 -04:00
messenger_edit_message_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_emoji_reactions.go feature: view only channel reactions (#4820) 2024-03-01 17:15:38 +00:00
messenger_emoji_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_ens.go Request/Decline access to communities 2021-02-26 15:35:43 +01:00
messenger_group_chat.go only sync decisions/state of AC notifications (#3979) 2023-10-22 17:41:20 +08:00
messenger_group_chat_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_handler.go feature: view only channel reactions (#4820) 2024-03-01 17:15:38 +00:00
messenger_handler_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_handlers.go refactor: remove unused `COMMUNITY_EVENTS_MESSAGE_REJECTED` 2024-03-25 13:18:20 +01:00
messenger_identity.go fix: race condition with empty PreferredName (status-desktop/14053) (#4981) 2024-03-25 15:43:45 +00:00
messenger_identity_display_name_test.go fix: set display name issue (#4642) 2024-02-01 19:13:41 +03:30
messenger_identity_image_test.go Fix contact details large image is always empty (#4864) 2024-03-06 09:25:19 -08:00
messenger_identity_social_links_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_installations_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_keycard.go chore: synchronization improvements applied to keycards 2023-07-11 15:14:49 +02:00
messenger_linkpreview.go feat: new `GetTextURLsToUnfurl` endpoint which extends GetURLs (#4294) 2023-11-17 13:32:37 +00:00
messenger_linkpreview_test.go Add favicons to external link previews (#4788) 2024-03-12 22:47:51 +02:00
messenger_mailserver.go enable custom community storenodes (#4532) 2024-02-20 17:49:39 +02:00
messenger_mailserver_cycle.go remove confusing debug log (#4948) 2024-03-19 19:11:18 +02:00
messenger_mailserver_processMailserverBatch_test.go chore: store node requests manager (#4446) 2023-12-15 19:50:12 +00:00
messenger_maps.go fix: don't store ourselves as a contact (#3627) 2023-07-12 12:46:56 +03:00
messenger_mention.go [mention] fix relate issues to input segments (#3766) 2023-07-25 16:47:24 +08:00
messenger_mention_test.go [mention] fix relate issues to input segments (#3766) 2023-07-25 16:47:24 +08:00
messenger_messages.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
messenger_messages_order_controller_test.go feat: introduce `MessagesOrderController` 2024-02-09 16:02:17 +01:00
messenger_messages_tracking_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_mute_test.go fx: deprecate profile and timeline chats (#3809) 2023-08-03 17:16:11 +03:00
messenger_offline_test.go chore: faster TestCommunityOfflineEdit (#4800) 2024-02-27 19:38:40 +00:00
messenger_peers.go feat: use protected topics for communities 2023-08-23 13:56:00 -04:00
messenger_peersyncing.go Peer syncing toggle (#4758) 2024-03-05 11:44:09 +01:00
messenger_peersyncing_test.go chore: skip TestMessengerPeersyncingSuite 2024-03-06 18:05:40 +01:00
messenger_pin_message_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_pin_messages.go feature: view only channel reactions (#4820) 2024-03-01 17:15:38 +00:00
messenger_profile_showcase.go fix: Remove proof of membership for the profile showcase communities (#4961) 2024-03-22 21:50:15 +01:00
messenger_profile_showcase_proto_conversions.go Feat: Simplify profile showcase preferences (#4854) 2024-03-08 17:20:23 +01:00
messenger_profile_showcase_test.go fix: Remove proof of membership for the profile showcase communities (#4961) 2024-03-22 21:50:15 +01:00
messenger_remove_message_test.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
messenger_reply_test.go Use base test messenger suite 2023-07-13 14:01:55 +01:00
messenger_response.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
messenger_response_test.go Fix duplicated notifications on receiving contact update 2023-02-14 09:22:37 +00:00
messenger_saved_address.go fix: saved addresses sync (`TestSyncDeletesOfSavedAddresses` flaky test) (#4742) 2024-02-16 09:45:10 +00:00
messenger_send_images_album_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_settings.go Peer syncing toggle (#4758) 2024-03-05 11:44:09 +01:00
messenger_settings_test.go feat: implement new endpoint to set customization color (#4568) 2024-02-07 18:20:54 +03:00
messenger_share_image_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_share_urls.go chore: remove boilerplate check of `communities.GetByID` clients 2024-01-10 18:58:17 +01:00
messenger_share_urls_test.go Fix/community tags indices (#4992) 2024-03-26 20:02:12 +00:00
messenger_status_updates.go feat: use protected topics for communities 2023-08-23 13:56:00 -04:00
messenger_status_updates_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_store_node_request_manager.go chore: improve StoreNodeRequestManager for community custom storenodes (#4860) 2024-03-04 20:46:25 +00:00
messenger_store_node_request_manager_config.go fix: remove store node envelopes ordering hotfix (#4622) 2024-01-27 13:02:12 +00:00
messenger_storenode_comunity_test.go chore: skip flaky TestSetStorenodeForCommunity_fetchMessagesFromNewStorenode 2024-03-11 22:02:07 +01:00
messenger_storenode_request_test.go fix: Update and improve `TestFetchRealCommunity` (#4949) 2024-03-20 18:10:02 +00:00
messenger_switcher_cards.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
messenger_sync_activity_center_test.go New way of sharing communities (#4341) 2023-12-15 13:55:32 +02:00
messenger_sync_bookmark_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_sync_chat_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_sync_clear_history_test.go Use base test messenger suite 2023-07-13 14:01:55 +01:00
messenger_sync_contact_request_decision_test.go Fix/duplicate accept cr messages (#4367) 2023-12-05 12:22:20 +08:00
messenger_sync_customization_color_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_sync_keycard_change_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_sync_keycards_state_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_sync_profile_picture_test.go Use base test messenger suite 2023-07-13 14:01:55 +01:00
messenger_sync_raw_messages.go Feat: Add social links to the profile showcase (#4775) 2024-02-26 16:53:40 +03:00
messenger_sync_saved_addresses_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
messenger_sync_settings.go fix (@status-go/stickers) Stickers still show in the recent list after being uninstalled (#4474) 2023-12-21 10:05:30 -08:00
messenger_sync_settings_test.go fix: clear waku envelopes cache when deleting a chat (#4621) 2024-01-30 13:43:34 +00:00
messenger_sync_verification_test.go fix: close messenger's databases in tests 2023-11-28 20:59:25 +01:00
messenger_sync_wallets_test.go Revert "Comment out all logged flaky tests" 2024-02-27 11:00:29 +01:00
messenger_test.go Add favicons to external link previews (#4788) 2024-03-12 22:47:51 +02:00
messenger_testing_utils.go Fix/community tags indices (#4992) 2024-03-26 20:02:12 +00:00
messenger_unread_test.go feat: Return seen/unseen messages count in MessnegerResponse (#4461) 2023-12-25 13:25:22 +07:00
messenger_waku_wrapper_test.go feat: introduce `testWakuWrapper` and `testPublicWakuAPIWrapper` 2024-02-09 16:02:17 +01:00
messenger_wallet.go Feat: Save and dispatch profile showcase on wallet account change (#4674) 2024-02-07 12:30:56 +03:00
messenger_walletconnect.go Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
messenger_walletconnect_test.go Use base test messenger suite 2023-07-13 14:01:55 +01:00
persistence.go Feature: store and retrieve a contact's bio (#4916) 2024-03-19 18:09:13 +00:00
persistence_collapsed_community_categories.go Feat/sync activity center notification (#3535) 2023-06-10 10:00:17 +08:00
persistence_metrics.go feat: Collecting community messages count metrics (#3802) 2023-08-01 17:08:57 +04:00
persistence_profile_showcase.go fix: Remove proof of membership for the profile showcase communities (#4961) 2024-03-22 21:50:15 +01:00
persistence_profile_showcase_test.go Feat: Simplify profile showcase preferences (#4854) 2024-03-08 17:20:23 +01:00
persistence_quoted_message_test.go fix: process empty albumId in albumMessages (#4874) (#4898) 2024-03-08 13:48:22 +00:00
persistence_test.go feat: get and delete community member messages API (#4932) 2024-03-19 20:44:49 +01:00
push_notification_test.go fix: prevent messenger being started twice 2024-02-27 11:00:29 +01:00
status_update.go Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
switcher_card.go Persist switcher cards (#3049) 2023-01-05 21:41:57 +05:30
transaction_validator.go
transaction_validator_test.go
waku_builder_test.go fix: Update and improve `TestFetchRealCommunity` (#4949) 2024-03-20 18:10:02 +00:00

README.md

status-go/protocol

This is an implementation of the secure transport and payloads which are a part of the Status Client specification.

This implementation uses SQLite and SQLCipher for persistent storage.

The payloads are encoded using protocol-buffers.

Content

  • messenger.go is the main file which exports Messenger struct. This is a public API to interact with this implementation of the Status Chat Protocol.
  • protobuf/ contains protobuf files implementing payloads described in the Payloads spec.
  • encryption/ implements the Secure Transport spec.
  • transport/ connects the Status Chat Protocol with a wire-protocol which in our case is either Whisper or Waku.
  • datasync/ is an adapter for MVDS.
  • applicationmetadata/ is an outer layer wrapping a payload with an app-specific metadata like a signature.
  • identity/ implements details related to creating a three-word name and identicon.
  • migrations/ contains implementation specific migrations for the sqlite database which is used by Messenger as a persistent data store.

History

Originally this package was a dedicated repo called status-protocol-go and was migrated into status-go. The new status-go/protocol package maintained its own dependencies until sub modules were removed and the root go.mod file managed all dependencies for the entire status-go repo.