e8c4b7647f
* chore(upgradeSQLCipher): Upgrading SQLCipher to version 5.4.5 Changes: ### github.com/mutecomm/go-sqlcipher 1. The improved crypto argorighms from go-sqlcipher v3 are merged in v4 Tags: v4.4.2-status.1 - merge `burn_stack` improvement v4.4.2-status.2 - merge `SHA1` improvement v4.4.2-status.4- merge 'AES' improvement 2. Fixed `go-sqlcipher` to support v3 database in compatibility mode (`sqlcipher` already supports this) (Tag: v4.4.2-status.3) 3. Upgrade `sqlcipher` to v5.4.5 (Tag: v4.5.4-status.1) ### github.com/status-im/migrate/v4 1. Upgrade `go-sqlcipher` version in `github.com/status-im/migrate/v4` ### status-go 1. Upgrade `go-sqlcipher` and `migrate` modules in status-go 2. Configure the DB connections to open the DB in v3 compatibility mode * chore(upgradeSQLCipher): Use sqlcipher v3 configuration to encrypt a plain text database * chore(upgradeSQLCipher): Scanning NULL BLOB value should return nil Fixing failing tests: TestSyncDeviceSuite/TestPairingSyncDeviceClientAsReceiver; TestSyncDeviceSuite/TestPairingSyncDeviceClientAsSender Considering the following configuration: 1. Table with BLOB column has 1 NULL value 2. Query the value 3. Rows.Scan(&dest sql.NullString) Expected: dest.Valid == false; dest.String == nil Actual: dest.Valid == true; dest.String == "" * chore: Bump go-sqlcipher version to include NULL BLOB fix |
||
---|---|---|
.. | ||
anonmetrics | ||
audio | ||
common | ||
communities | ||
datasync | ||
discord | ||
encryption | ||
ens | ||
identity | ||
internal/sqlite | ||
linkpreview | ||
migrations | ||
protobuf | ||
pushnotificationclient | ||
pushnotificationserver | ||
requests | ||
sqlite | ||
subscription | ||
transport | ||
tt | ||
urls | ||
v1 | ||
verification | ||
wakusync | ||
zaputil | ||
LICENSE | ||
README.md | ||
activity_center.go | ||
activity_center_persistence.go | ||
activity_center_persistence_test.go | ||
chat.go | ||
chat_group_proxy.go | ||
chat_test.go | ||
communities_messenger_test.go | ||
contact.go | ||
contact_test.go | ||
delete_message.go | ||
edit_message.go | ||
emoji_reaction.go | ||
errors.go | ||
group_chat_invitation.go | ||
group_chat_system_messages.go | ||
identity_images.go | ||
local_notifications.go | ||
message_builder.go | ||
message_persistence.go | ||
message_validator.go | ||
message_validator_test.go | ||
messenger.go | ||
messenger_activity_center.go | ||
messenger_activity_center_test.go | ||
messenger_auto_message.go | ||
messenger_backup.go | ||
messenger_backup_handler.go | ||
messenger_backup_test.go | ||
messenger_base_test.go | ||
messenger_bookmarks.go | ||
messenger_browsers.go | ||
messenger_browsers_test.go | ||
messenger_chats.go | ||
messenger_collapsed_community_categories.go | ||
messenger_collapsed_community_categories_test.go | ||
messenger_communities.go | ||
messenger_config.go | ||
messenger_contact_requests_test.go | ||
messenger_contact_update_test.go | ||
messenger_contact_verification.go | ||
messenger_contact_verification_test.go | ||
messenger_contacts.go | ||
messenger_delete_message_for_everyone_test.go | ||
messenger_delete_message_for_me_test.go | ||
messenger_delete_message_test.go | ||
messenger_discv5.go | ||
messenger_edit_message_test.go | ||
messenger_emoji_test.go | ||
messenger_ens.go | ||
messenger_group_chat.go | ||
messenger_group_chat_test.go | ||
messenger_handler.go | ||
messenger_handler_test.go | ||
messenger_identity.go | ||
messenger_identity_display_name_test.go | ||
messenger_identity_image_test.go | ||
messenger_identity_social_links_test.go | ||
messenger_installations_test.go | ||
messenger_keycard.go | ||
messenger_mailserver.go | ||
messenger_mailserver_cycle.go | ||
messenger_mailserver_processMailserverBatch_test.go | ||
messenger_maps.go | ||
messenger_mention.go | ||
messenger_mention_test.go | ||
messenger_messages.go | ||
messenger_mute_test.go | ||
messenger_peers.go | ||
messenger_pin_message_test.go | ||
messenger_pin_messages.go | ||
messenger_reply_test.go | ||
messenger_response.go | ||
messenger_response_test.go | ||
messenger_saved_address.go | ||
messenger_send_images_album_test.go | ||
messenger_share_image_test.go | ||
messenger_status_updates.go | ||
messenger_status_updates_test.go | ||
messenger_switcher_cards.go | ||
messenger_sync_bookmark_test.go | ||
messenger_sync_chat_test.go | ||
messenger_sync_clear_history_test.go | ||
messenger_sync_keycard_change_test.go | ||
messenger_sync_keycards_state_test.go | ||
messenger_sync_profile_picture_test.go | ||
messenger_sync_raw_messages.go | ||
messenger_sync_saved_addresses_test.go | ||
messenger_sync_settings.go | ||
messenger_sync_settings_test.go | ||
messenger_sync_verification_test.go | ||
messenger_sync_wallets_test.go | ||
messenger_test.go | ||
messenger_wallet.go | ||
messenger_walletconnect.go | ||
messenger_walletconnect_test.go | ||
persistence.go | ||
persistence_collapsed_community_categories.go | ||
persistence_test.go | ||
push_notification_test.go | ||
status_update.go | ||
switcher_card.go | ||
transaction_validator.go | ||
transaction_validator_test.go |
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 exportsMessenger
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 byMessenger
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.