Commit Graph

101 Commits

Author SHA1 Message Date
frank f123e98179
feat: fallback pairing seed (#5614)
* feat(pairing)!: Add extra parameters and remove v2 compatibility

This commit includes the following changes:

I have added a flag to maintain 2.29 compatibility.

Breaking change in connection string

The local pairing code that was parsing the connection string had a few non-upgradable features:

It was strictly checking the number of parameters, throwing an error if the number was different. This made it impossible to add parameters to it without breaking.
It was strictly checking the version number. This made increasing the version number impossible as older client would just refuse to connect.
The code has been changed so that:

Two parameters have been added, installation-id and key-uid. Those are needed for the fallback flow.
I have also removed version from the payload, since it wasn't used.

This means that we don't support v1 anymore. V2 parsing is supported . Going forward there's a clear strategy on how to update the protocol (append parameters, don't change existing one).

https://www.youtube.com/watch?v=oyLBGkS5ICk Is a must watch video for understanding the strategy

Changed MessengerResponse to use internally a map of installations rather than an array (minor)
Just moving towards maps as arrays tend to lead to subtle bugs.

Moved pairing methods to messenger_pairing.go
Just moved some methods

Added 2 new methods for the fallback flow
FinishPairingThroughSeedPhraseProcess
https://github.com/status-im/status-go/pull/5567/files#diff-1ad620b07fa3bd5fbc96c9f459d88829938a162bf1aaf41c61dea6e38b488d54R29

EnableAndSyncInstallation

https://github.com/status-im/status-go/pull/5567/files#diff-1ad620b07fa3bd5fbc96c9f459d88829938a162bf1aaf41c61dea6e38b488d54R18

Flow for clients
Client A1 is logged in
Client A2 is logged out

Client A1 shows a QR code
Client A2 scans a QR code
If connection fails on A2, the user will be prompted to enter a seed phrase.
If the generated account matches the key-uid from the QR code, A2 should call FinishPairingThroughSeedPhraseProcess with the installation id passed in the QR code. This will send installation information over waku. The user should be shown its own installation id and prompted to check the other device.
Client A1 will receive new installation data through waku, if they are still on the qr code page, they should show a popup to the user showing the received installation id, and a way to Enable and Sync, which should call the EnableAndSyncInstallation endpoint. This should finish the fallback syncing flow.
Current issues
Currently I haven't tested that all the data is synced after finishing the flow. I see that the two devices are paired correctly, but for example the DisplayName is not changed on the receiving device. I haven't had time to look into it further.

* test_: add more test for connection string parser

* fix_: fix panic when parse old connection string

* test_: add comments for TestMessengerPairAfterSeedPhrase

* fix_: correct error description

* feat_:rename FinishPairingThroughSeedPhraseProcess to EnableInstallationAndPair

* fix_: delete leftover

* fix_: add UniqueKey method

* fix_: unify the response for InputConnectionStringForBootstrapping

* fix_: remove fields installationID and keyUID in GethStatusBackend

* fix_: rename messenger_pairing to messenger_pairing_and_syncing

---------

Co-authored-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2024-07-30 17:14:05 +08:00
Igor Sirotin 49eaabaca5
feat: adapt create/restore/login endpoints for keycard usage (#5311)
* chore_: remove duplicated `StartNodeWithKey`

* feat(KeycardPairing)_: added GetPairings method

* chore_: simplify startNode... methods

* chore_: added encryption path to be derived

* fix_: error handling in StartNodeWithKey

* feat_: added keycard properties to CreateAccount

* feat_: moved KeycardWhisperPrivateKey to LoginAccount

* fix_: LoginAccount during local pairing

* feat_: added chat key handling to loginAccount

* chore_: struct response from generateOrImportAccount

* fix_: do not store keycard account to keystore

* feat_: added Mnemonic parameter to LoginAccount

* chore_: wrap loginAccount errors

* feat_: RestoreKeycardAccountAndLogin endpoint

* chore_: merge RestoreKeycardAccountRequest into RestoreAccountRequest

* fix_: TestRestoreKeycardAccountAndLogin

* fix_: MessengerRawMessageResendTest

* chore_: cleanup

* chore_: cleanup according to pr comments

* chore_: better doc for Login.Mnemonic

* chore_: add/fix comments

* fix_: lint
2024-06-26 13:14:27 +02:00
Andrey Bocharnikov 9ffe842acc fix(config)_: fix TorrentConfig when loading node config from DB
* Fix TorrentConfig validation condition
* Add tests
* Should help existing users who cannot login to the app

fixes #14813
2024-06-12 02:50:29 +07:00
Igor Sirotin a01ffdbe8e
fix: proper usage of CreateAccount RootDataDir (#5284)
* fix_: introduce CreateAccount.RootDataDir
* fix_: deprecate and remove ShhextConfig.BackupDisabledDataDir
2024-06-05 14:03:34 +01:00
Mikhail Rogachev 4f493a533e
chore(identity)_: remove old social links implementation (#5214) 2024-05-24 10:35:34 +02:00
frank 3b5eab3bf1
fix_:sync contact request decision (#5130)
* fix_:sync contact request decision

* chore_:optimise test

* chore_:address feedback from review
2024-05-15 08:01:47 +08:00
frank 4f4b7a9ce4 refactor_: add more default node config values for frontend when doing local pair sync 2024-05-07 18:17:25 +08:00
frank 90b18d4f88 refactor_: set default node config values for frontend when doing local pair sync 2024-04-25 11:51:23 +08:00
Igor Sirotin edcb8ba3b8
fix: sync pending contacts (#4986) 2024-03-26 13:47:12 +00:00
Igor Sirotin 168398d7a5
chore: faster TestCommunityOfflineEdit (#4800)
* chore: faster TestCommunityOfflineEdit
* chore: enable debug logs in TestSyncDeviceSuite
2024-02-27 19:38:40 +00:00
Patryk Osmaczko 0a1a66afa7 fix: prevent messenger being started twice
Previously, Messenger was `Start`ed multiple times, which resulted in
the shutdown process not being invoked on previously initialized
Messenger's sub-instances. This led to the failure of MVDS instance
shutdown causing massive error logs due to the attempts to read from a
closed database.
2024-02-27 11:00:29 +01:00
Patryk Osmaczko 5aed0d178f chore: unskip flaky tests 2024-02-27 11:00:29 +01:00
Mikhail Rogachev 7cc4c12642
Feat: Add social links to the profile showcase (#4775)
* feat: add social links to the profile showcase

* fix: deprecate old social links, add synced profile showcase to response
2024-02-26 16:53:40 +03:00
Mikhail Rogachev eb5bad4868
Feat: Profile showcase validate collectible ownership (#4737)
* feat: profile showcase checks then presenting collectibles

* chore: more obvious CollectiblesManager configuration
2024-02-22 11:08:58 +03:00
Patryk Osmaczko 30f4edf48d fix: keep flaky tests compilable and easy to find 2024-02-19 21:46:35 +01:00
Patryk Osmaczko 1fca1e1743 Revert "Comment out flaky tests (#4741)"
This reverts commit 582927868d.
2024-02-19 21:46:35 +01:00
Roman Volosovskyi 582927868d
Comment out flaky tests (#4741) 2024-02-19 10:10:37 +01:00
Igor Sirotin 85c0e282ae
feature: profile showcase preferences sync&backup (#4729) 2024-02-17 18:07:20 +00:00
Siddarth Kumar 926f6a3c72 Revert "test: bump go-libp2p"
This reverts commit d0ca4447c6.
2024-01-18 20:29:33 +00:00
Richard Ramos d0ca4447c6
test: bump go-libp2p 2024-01-18 14:28:06 +00:00
Stefan 70b2cab096 chore(wallet) rename pokt urls to grove in config and tests
Change tests to account for new urls

Updates status-desktop #13189
2024-01-12 20:23:11 +01:00
Roman Volosovskyi aee111e5ab
[#4200] Avoid tx watching for addresses which were not exposed 2023-12-01 12:30:42 +01:00
frank 3140a0bc53
local pair: check netIPs if empty before find server cert (#4333) 2023-11-20 13:15:59 +08:00
osmaczko a584ab086a
Fix/timesource offline (#4309)
* fix: add missing callback cleanup in timesource

fixes: "panic: sync: negative WaitGroup counter"

part of: status-im/status-desktop#12691

* fix: ensure timesource.GetCurrentTime is non-blocking

closes: status-im/status-desktop#12691
2023-11-13 14:06:32 -05:00
frank 7ad5800a9a
use timesource(synced) to generate/validate server cert time (#4228)
* use timesource(synced) to generate/validate server cert time

* add debug log

* bump version
2023-11-07 09:51:15 +08:00
frank 3326362b90
optimised finding server cert (#4148)
* optimised finding server cert

* make sure `close(done)` invoked only once

* remove sleep

* resolve IDE warning

* refactor for findServerCert
2023-10-18 14:17:49 +08:00
Patryk Osmaczko 53423e58ba fix: use proper migrations for protocol's test database
- use `appdatabse.DbInitializer{}` in tests to ensure consistent migrations

- remove protocol's open database functions due to improper
  initialization caused by missing node config migration

- introduce `PushNotificationServerConfig` to resolve cyclic dependency
  issues
2023-10-03 15:11:58 +02:00
frank b3213172a7
Prevent Logged In Account Local Pairing / Syncing With Another Account (#4044)
* Prevent Logged In Account Local Pairing / Syncing With Another Account

* addressed feedback from @siddarthkay

* fixed `TestPairingThreeDevices`

* replace `prepareBackendWithAccount` with `prepareBackendWithoutAccount`
2023-09-21 08:32:16 +08:00
Igor Sirotin 6977a94cdc
[CHERRY-PICK] PR#4036 (#4037)
* fix: correct selections of server url, remove ip duplicates (#4036)
* fix `TestConnectionParams_GetLocalAddressesForPairingServer` flaky test
2023-09-20 10:37:51 +01:00
Sale Djenic 3bacb84a02 chore: pairings file related properties removed from the local pairing
The pairings file is transferred along with the `SyncKeypair` message.
2023-09-13 17:15:32 +02:00
Sale Djenic 6894295ac3 feat: register and maintain keycard local pairing file by `status-go`
Closes: #4003
2023-09-13 17:15:32 +02:00
frank eda1f5482b
fix mobile issue: Sync is hanging in "syncing devices" stage (#4010)
align another time of cert

addressed feedback from @Samyoul @igor-sirotin

add logger

move line

fix mobile issue #17223
2023-09-11 20:19:26 +08:00
Samuel Hawksby-Robinson 3e53eabe4b Moved Android GOOS const to common 2023-09-05 16:42:20 +01:00
Samuel Hawksby-Robinson 1a7414312e Added noop returns for Android GOOS 2023-09-05 16:42:20 +01:00
Sale Djenic 0f58d01cc4 tests: added test simulating a migration of an imported keypair to/from keycard and transferring keystore files for it 2023-08-31 12:13:54 +02:00
Sale Djenic 13931817dd fix: a crash when the user provides a connection string there is no running server for is fixed 2023-08-23 12:59:18 +02:00
Igor Sirotin 5a8f1feea9
Local Pairing: connection string version 2 with sharing multiple server addresses (#3909)
* feat: network functions for local pairing (#3898)
2023-08-22 19:18:14 +03:00
Andrea Maria Piana 8dd1b66d69 Always use protobufs by reference & generate handlers 2023-08-22 12:08:54 +01:00
Samuel Hawksby-Robinson 6f1c9af76b Added functionality to local pairing that makes client calls (more) idempotent 2023-08-21 15:44:32 +01:00
Sale Djenic 3c6087e5c4 fix: changes lost while rebasing
- send transferred keyuids instead of number of transferred files
- updating keypair's operability for transferred keypairs
- unnecessary check of a number of transferred keystore files
2023-08-21 14:45:50 +02:00
Sale Djenic d05ce522f9 feat: transferring keystore files for selected keypair via local network
There is a desktop app feature where we need to transfer keystore files for selected
keypair/s only via local network using a QR code (of course, which are not migrated
to a keycard, otherwise we wouldn't need to do that).
2023-08-18 17:43:14 +02:00
Samuel Hawksby-Robinson b49b9fe3c5 Added a (rough) roadmap to resolving a number of known issues 2023-08-14 15:10:54 +01:00
Sale Djenic 7c72d5ec99 fix: discard backed up messages if `ProcessBackedupMessages` is not set to `true`
If user followed onboarding flow to recover his account using seed phrase or keycard,
then `ProcessBackedupMessages` property of node config json object should be set to
`true`, otherwise it should be set to `false` or be omitted.
2023-07-25 07:50:43 +02:00
frank 71ca35bf34
Feat/sync customization color (#3702)
* sync customization color

* addressed feedback from @cammellos

* add param customizationColorClock to function generateOrImportAccount
2023-07-18 21:35:06 +08:00
Igor Sirotin 244b4273de
fix: don't store ourselves as a contact (#3627) 2023-07-12 12:46:56 +03:00
frank bbb17c6ce8 fix: unable to perform backup 2023-06-29 13:04:49 +01:00
Roman Volosovskyi 18a0bc3130
Set installation name on account creation and pairing 2023-06-29 10:14:12 +02:00
Sale Djenic 5738cf7e21 keypairs pairing details added to local pairing 2023-06-28 14:04:47 +02:00
Sale Djenic 413120e299 feat: local pairing - adding support for syncing from a profile which is migrated to a Keycard 2023-06-28 14:04:47 +02:00
Sale Djenic cff7d2f693 fix: profile social links updated 2023-06-06 09:59:12 +02:00