Commit Graph

142 Commits

Author SHA1 Message Date
Icaro Motta 919277be38
feat(pairing)_: Fallback pairing seed (#5614) (#5627)
* 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: frank <lovefree103@gmail.com>
Co-authored-by: Andrea Maria Piana <andrea.maria.piana@gmail.com>
2024-07-30 13:03:43 -03:00
Michal Iskierko a3e834c26e fix_: fix returned value in toggleCentralizeMetrics function
Issue #15628
2024-07-19 17:45:30 +02:00
Michal Iskierko 5059c19aae feat_: add CentralizedMetricsInfo function
Issue #15446
2024-07-16 11:51:09 +01:00
Andrea Maria Piana 9a59d6a459 feat(metrics)_: add centralized metrics
This commit adds support for centralized metrics.
There are two providers as of now, and we haven't quite decided which
one to go for, so for the time being both are supported.
It also introduces a new endpoint InitializeApplication that replaces
OpenAccounts
2024-07-11 10:05:31 +01: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
richΛrd 94e5431ea3
chore: add fleet ENRs to the list of discv5 nodes (#5184)
* chore_: add fleet ENRs to the list of discv5 nodes
* fix_: handle scenario in which there are dnsDiscoveryURLs and enrs in the DiscV5Bootnode list
2024-05-26 19:16:26 -04:00
Igor Sirotin 223a1d759e
Login endpoints improvements (#4980) 2024-03-28 15:01:44 +00:00
Igor Sirotin 3f98a34eae
fix: send LoggedIn signal when UpdateNodeConfigFleet failed on login (#4829) 2024-02-28 15:42:32 +00:00
Igor Sirotin 4fb27ec53a
fix: ensure db opened in UpdateNodeConfigFleet (#4822) 2024-02-27 19:00:20 +00:00
Igor Sirotin c32ab70c33
fix: lost wakuv2 nameserver with `CreateAccountAndLogin` (#4813) 2024-02-27 16:15:11 +00:00
Igor Sirotin 34c693bdea
fix: override unsupported settings.fleet (#4785) (#4797)
* chore: remove fleet enum duplication
* fix: `updateNodeConfigFleet` on login
2024-02-22 19:32:24 +00:00
Omar Basem 54d0cf28c7
feat: mobile status.go - getRandomMnemonic (#4712)
* feat: mobile status.go - getRandomMnemonic (#4712)
2024-02-19 16:53:01 +04:00
frank 69948a7024
fix: endless logout (#4563) 2024-01-30 19:45:08 +08:00
Andrea Maria Piana 546f0b9d5c Set default fleet to shards.test 2023-12-20 12:53:32 +00:00
frank 575a421786
chore: Enhance error logging in LoginInAccount function for better traceability (#4442) 2023-12-12 11:15:26 +08:00
Roman Volosovskyi aee111e5ab
[#4200] Avoid tx watching for addresses which were not exposed 2023-12-01 12:30:42 +01:00
Richard Ramos 8e0621d1b1 chore: add cluster_id to DB, move clusterID to config file and load clusterID when switching fleets 2023-11-23 11:16:50 -04:00
Roman Volosovskyi 4e0583263a
_ 2023-10-31 13:50:26 +01:00
Roman Volosovskyi 1a6c421cad
[#4087] Omit history scanning on generated multiacc creation on desktop client 2023-10-31 13:46:27 +01:00
Andrea Maria Piana bafdf08529 Fix account not being stored 2023-10-24 19:01:46 +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 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
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 1d5ffc0ba0
add InitLogging (#3643)
* add InitLogging

* addressed feedback from @Samyoul
2023-06-21 21:04:43 +08:00
Samuel Hawksby-Robinson 5cf2038d32 Added API endpoint 2023-06-02 15:55:48 +01:00
Samuel Hawksby-Robinson 9a2e9fbc3c Added preflight outbound check to local pairing 2023-06-02 15:55:48 +01:00
Andrea Maria Piana 7fd9fefdef Add LoginAccount endpoint
This commit adds LoginAccount endpoint.
This makes it consistent with CreateAccount and RestoreAccount as they
use similar config.

The notable difference with the previous endpoint is the API, which is
the same as CreateAccount/RestoreAccount, and the fact that it will
override your networks configuration.

Storing them in the config is now not needed anymore, as that's always
driven from the backend, and we won't allow custom networks in the new
wallet.
2023-06-01 10:05:11 +01:00
Igor Sirotin a7df4ed388
Local Pairing update for `StopNode` (#3536) 2023-06-01 08:33:57 +03:00
yqrashawn 6fed50ce53
feat: media server and colorhash related change (#3500) 2023-05-18 14:27:16 +08:00
Sale Djenic 31144ed5a3 chore: `password` removed from the `DeleteAccount` function
Asking for a password when removing a key is not necessary.
2023-05-09 10:48:44 +02:00
Samuel Hawksby-Robinson 552c58bb9c Intergrated with external API endpoint 2023-04-17 12:01:38 +01:00
Sale Djenic a812365525 feat: create acc from private key endpoint added
`CreateAccountFromPrivateKey` function added, it generates an account based on provided
private key, but doesn't store anything anywhere.
2023-03-28 16:19:27 +02:00
Roman Volosovskyi 91c6949cd2
Return keyUID on succesfull validation of mnemonic 2023-03-28 10:52:06 +02:00
Samuel Hawksby-Robinson fae7e8dba5 Removed server mode from pairing 2023-03-24 17:53:29 +00:00
Samuel Hawksby-Robinson 7cd7430d31
Improved Local Pairing Separation of Concerns (#3248)
* Moved all configs into config.go

* Completed build out of new config structures

* Completed SenderClient process flow

* Completed sync data Mounter and client integration

* Completed installation data Mounter and client integration

* House keeping, small refactor to match conventions.

PayloadEncryptor is passed by value and used as a pointer to the instance value and not a shared pointer.

* Reintroduced explicit Mounter field type

* Completed ReceiverClient structs and flows

* Finished BaseClient function parity with old acc

* Integrated new Clients into tests

Solved some test breaks caused by encryptors sharing pointers to their managed payloads

* Built out SenderServer and ReceiverServer structs

With all associated functions and integrated with endpoints.

* Updated tests to handle new Server types

* Added docs and additional refinement

* Renamed some files to better match the content of those files

* Added json tags to config fields that were missing explicit tags.

* fix tests relating to payload locking

* Addressing feedback from @ilmotta

* Addressed feedback from @qfrank
2023-03-23 11:44:15 +00:00
Andrea Maria Piana 31ae4c958b Add RestoreAccountAndLogin endpoint 2023-03-22 13:31:16 +00:00
Andrea Maria Piana 3d2fd26d80 Add CreateAccount endpoint 2023-03-16 17:02:11 +00:00
Igor Sirotin 4d491da8de
LocalPairing minor fixes. `ValidateConnectionString` method. (#3184)
* fix(pairing): Added ConnectionParams::FromString input length check
* feat: Added `IsValidConnectionString` method
* Renamed IsValidConnectionString to ValidateConnectionString
* Bump version
2023-02-15 10:42:12 -04:00
Andrea Maria Piana 7e1a894ab8 Add compressed key to multiaccount/messages/contacts 2023-01-30 16:40:40 +00:00
Sale Djenic c8994fe175 test: `TestConvertAccount` test update
This tests the entire process of converting a regular account to a keycard
account and then converting that keycard account back to a regular account.

For the need of this test I had to improve `DeleteAccount` function, cause the
previous implementation didn't remove account from the keystore cache, but
only from the keystore.
2023-01-27 13:20:52 +01:00
Sale Djenic 6e656448ba feat(keycard): `ConvertToRegularAccount` endpoint added
It converts a keycard user to a regular user, setting all necessary details
that logged in account looks like it has never been a keycard account.
2023-01-27 13:20:52 +01:00
frank ec7c0e9c7d
Sync all devices after initial pairing (#3047) 2023-01-06 20:21:14 +08:00
Siddarth Kumar d43e06f4c2
converting desktop key to mobile readable (#3042)
In desktop when a community is created the share url looks like :

https://join.status.im/c/zQ3shTAten2v9CwyQD1Kc7VXAqNPDcHZAMsfbLHCZEx6nFqk9 where
zQ3shTAten2v9CwyQD1Kc7VXAqNPDcHZAMsfbLHCZEx6nFqk9
is the serialised key which desktop uses.

In mobile when a community is created the share url looks like :
https://join.status.im/c/0x025596a7ff87da36860a84b0908191ce60a504afc94aac93c1abd774f182967ce6 where
0x025596a7ff87da36860a84b0908191ce60a504afc94aac93c1abd774f182967ce6
is the non serialised key (but compressed) key which mobile uses.

The goal of this PR is to give mobile the ability to go from
zQ3shTAten2v9CwyQD1Kc7VXAqNPDcHZAMsfbLHCZEx6nFqk9 to 0x025596a7ff87da36860a84b0908191ce60a504afc94aac93c1abd774f182967ce6
2023-01-04 07:25:07 +05:30
frank 9137257638
synchronize display name (#2989) 2022-12-29 14:16:19 +08:00
Michal Iskierko 2a9ac92db9 Expose 33-bytes compression functions
Issue #8001
2022-11-08 13:35:37 +01:00
Sale Djenic c1c7d2dbf6 fix: create acc from mnemonic endpoint extended
`CreateAccountFromMnemonic` function renamed to `createAccountFromMnemonicAndDeriveAccountsForPaths`
and extended in a way that it is able to derive accounts from passed mnemonic for the given paths, if paths is empty
only an account from the given mnemonic will be generated. This endpoint doesn't store anything anywhere.
2022-10-28 19:50:55 +02:00
Sale Djenic b18ae7b617 fix(keycard): subaccounts updated wiht keyuid, colorhash and colorid 2022-10-28 13:27:55 +02:00
Andrea Maria Piana fc836e4c76 upgrade ethereum 2022-10-26 09:39:30 +02:00
frank 94fea4725d
replace web3-utils methods usage by status-go (#2840) 2022-10-18 21:36:54 +08:00
Samuel Hawksby-Robinson d82c914aa5 Fix if configJSON is empty, NOT not empty 2022-09-21 15:28:31 +01:00