Skip to content

Keycard account recovery #12115

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 18, 2021
Merged

Keycard account recovery #12115

merged 1 commit into from
May 18, 2021

Conversation

bitgamma
Copy link
Member

@bitgamma bitgamma commented May 17, 2021

Allow the creation of recovery/backup Keycard from the login interface. It requires the mnemonic and either a new or frozen Keycard (or actually a Keycard in any state, since you can factory reset).

Screenshots for localization

@status-im-auto
Copy link
Member

status-im-auto commented May 17, 2021

Jenkins Builds

Click to see older builds (3)
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ e942fd6 #1 2021-05-17 08:24:13 ~11 min android-e2e 📦apk 📲
✔️ e942fd6 #1 2021-05-17 08:24:32 ~11 min android 📦apk 📲
✔️ e942fd6 #1 2021-05-17 08:26:43 ~14 min ios 📦ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 4c2e84f #2 2021-05-18 05:51:37 ~9 min android-e2e 📦apk 📲
✔️ 4c2e84f #2 2021-05-18 05:54:08 ~11 min android 📦apk 📲
✔️ 4c2e84f #2 2021-05-18 05:56:07 ~13 min ios 📦ipa 📲
✔️ 5b51806 #3 2021-05-18 11:18:43 ~23 min android-e2e 📦apk 📲

@bitgamma bitgamma requested review from a team and jinhojang6 May 17, 2021 09:35
[{:keys [db] :as cofx}]
(fx/merge cofx
{:db (-> db
(assoc-in [:keycard :pin :enter-step] :login)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can probably do as well:

(update-in [:keycard :pin] assoc :enter-step :login
                                                   :status nil
                                                   :login [])

Which is a bit neater

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the review! fixed

@status-im-auto
Copy link
Member

99% of end-end tests have passed

Total executed tests: 70
Failed tests: 1
Passed tests: 69
IDs of failed tests: 5758 

Failed tests (1)

Click to expand
  • Rerun tests

  • 1. test_keycard_can_recover_keycard_account_card_pairing, id: 5758

    Device 1: *Type '000000' to EditBox*
    Device 1: *Find Button by xpath:* `//*[@text="Pair to this device"]`

    Device 1: Button by xpath: `//*[@text="Pair to this device"]` is not found on the screen

    Device sessions

    Passed tests (69)

    Click to expand

    1. test_sign_message_and_transactions_filters_from_daap, id: 5342
    Device sessions

    2. test_image_in_one_to_one_send_save_reply_timeline, id: 6305
    Device sessions

    3. test_add_account_to_multiaccount_instance_generate_new, id: 6224
    Device sessions

    4. test_keycard_can_see_all_transactions_in_history, id: 6291
    Device sessions

    5. test_add_and_delete_watch_only_account_to_multiaccount_instance, id: 6244
    Device sessions

    6. test_open_blocked_secure_not_secure_inlalid_offline_urls, id: 6210
    Device sessions

    7. test_open_public_chat_using_deep_link, id: 5396
    Device sessions

    8. test_offline_add_new_group_chat_member, id: 3998
    Device sessions

    9. test_send_non_english_message_to_newly_added_contact_on_different_networks, id: 5315
    Device sessions

    10. test_can_see_balance_and_all_transactions_history_on_cellular, id: 5314
    Device sessions

    11. test_keycard_create_login_resotore_unlock_same_seed, id: 5689
    Device sessions

    12. test_insufficient_funds_wallet_positive_balance, id: 5412
    Device sessions

    13. test_delete_close_all_tabs, id: 5390
    Device sessions

    14. test_send_token_with_7_decimals, id: 5350
    Device sessions

    15. test_delete_chats_via_delete_button_rejoin, id: 5387
    Device sessions

    16. test_send_transaction_set_recipient_options, id: 6328
    Device sessions

    17. test_keycard_sign_message_and_transactions_from_daap, id: 6251
    Device sessions

    18. test_recover_account_from_new_user_seedphrase, id: 6296
    Device sessions

    19. test_block_user_from_public_chat, id: 5786
    Device sessions

    20. test_send_audio_message_with_push_notification_check, id: 6316
    Device sessions

    21. test_redirect_to_public_chat_tapping_tag_message_fetch_more_history, id: 5675
    Device sessions

    22. test_restore_account_migrate_multiaccount_to_keycard, id: 6645
    Device sessions

    23. test_ens_mentions_pn_and_nickname_in_public_and_1_1_chats, id: 6226
    Device sessions

    24. test_keycard_send_eth_from_wallet_to_address, id: 6289
    Device sessions

    25. test_add_account_to_wallet_private_key_and_seed_phrase, id: 6272
    Device sessions

    26. test_back_forward_refresh_navigation_history_kept_after_relogin (TestRail link is not found)
    Device sessions

    27. test_offline_is_shown_messaging_1_1_chat_sent_delivered, id: 5310
    Device sessions

    28. test_pair_devices_sync_one_to_one_contacts_nicknames_public_chat, id: 5762
    Device sessions

    29. test_long_press_to_delete_chat, id: 5319
    Device sessions

    30. test_copy_and_paste_messages, id: 5317
    Device sessions

    31. test_open_transaction_on_etherscan_copy_tx_hash, id: 5384
    Device sessions

    32. test_unread_messages_counter_public_chat, id: 5360
    Device sessions

    33. test_user_can_see_all_own_assets_after_account_recovering, id: 5381
    Device sessions

    34. test_send_eth_from_wallet_to_address_incorrect_password, id: 5308
    Device sessions

    35. test_mobile_data_usage_complex_settings, id: 6228
    Device sessions

    36. test_start_chat_with_ens_mention_in_one_to_one, id: 5403
    Device sessions

    37. test_decline_transactions_in_1_1_chat_push_notification_changing_state, id: 6265
    Device sessions

    38. test_send_eth_in_1_1_chat_transaction_push, id: 6253
    Device sessions

    39. test_install_pack_and_send_sticker, id: 5782
    Device sessions

    40. test_switch_users_special_char_password_and_add_new_account_logcat, id: 5356
    Device sessions

    41. test_manage_assets, id: 5341
    Device sessions

    42. test_browser_managing_bookmarks, id: 6633
    Device sessions

    43. test_open_chat_by_pasting_chat_key_check_invalid_chat_key_cases, id: 5304
    Device sessions

    44. test_request_stt_from_daap, id: 5309
    Device sessions

    45. test_can_use_purchased_stickers_on_recovered_account, id: 5783
    Device sessions

    46. test_dapps_permissions, id: 5738
    Device sessions

    47. test_account_recovery_with_uppercase_whitespaces_seed_phrase_special_char_passw_logcat, id: 5394
    Device sessions

    48. test_send_eth_to_ens_in_chat, id: 6279
    Device sessions

    49. test_create_new_group_chat_messaging_pn_delived, id: 3994
    Device sessions

    50. test_share_copy_contact_code_and_wallet_address, id: 5323
    Device sessions

    51. test_wallet_set_up, id: 5335
    Device sessions

    52. test_send_transaction_with_custom_token, id: 6208
    Device sessions

    53. test_home_view, id: 5379
    Device sessions

    54. test_can_add_existing_ens, id: 5502
    Device sessions

    55. test_logcat_backup_recovery_phrase, id: 5419
    Device sessions

    56. test_request_and_receive_stt_in_1_1_chat_offline, id: 6263
    Device sessions

    57. test_set_profile_picture, id: 6646
    Device sessions

    58. test_collectible_from_wallet, id: 5346
    Device sessions

    59. test_add_and_remove_mention_contact_with_nickname_from_public_chat, id: 5332
    Device sessions

    60. test_keycard_request_stt_from_daap, id: 6249
    Device sessions

    61. test_restore_account_from_mnemonic_to_keycard, id: 6240
    Device sessions

    62. test_pass_phrase_validation, id: 5363
    Device sessions

    63. test_keycard_send_eth_in_1_1_chat, id: 6293
    Device sessions

    64. test_send_and_open_links_with_previews, id: 5373
    Device sessions

    65. test_reactions_to_message_in_chats, id: 6315
    Device sessions

    66. test_fetching_balance_after_offline, id: 6237
    Device sessions

    67. test_push_notification_1_1_chat_no_pn_activity_center, id: 6283
    Device sessions

    68. test_public_chat_messaging_emojis_timestamps, id: 5313
    Device sessions

    69. test_keycard_fetching_balance_after_offline, id: 6290
    Device sessions

    @churik churik self-assigned this May 18, 2021
    @churik
    Copy link
    Member

    churik commented May 18, 2021

    awesome work @bitgamma !
    e2e failures are not related to PR.
    Tested:

    • keycard recovery for fresh, recovered, or restored multicaccount
    • can login with 2+ cards
    • can switch between devices in case it is paired for both
    • can change PIN and updated PIN is required on another device if card is paired
    • "Your card is full" popup
    • "Seems this card is not paired" popup

    Found one edge case, but don't think it is worth fixing.
    So if user has 2 devices (A and B) with same multiaccount in case of pairing card on device B at attempt to recover same multiaccount on device A (with pairing code) user will get a popup with the suggestion to UNLOCK existing multiaccount as it exists on the device, but in fact, you can't unlock as you need to pair it again.
    Anyway as user can pair it to device A - it is not a big deal.

    Devices:

    • IPhone 12 Mini (IOS 14)
    • Xiaomi Mi Note 9 Pro (Android 10)

    @bitgamma bitgamma force-pushed the feature/recovery-keycard branch from 4c2e84f to 5b51806 Compare May 18, 2021 10:55
    Signed-off-by: Michele Balistreri <michele@bitgamma.com>
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    No open projects
    Archived in project
    Development

    Successfully merging this pull request may close these issues.

    4 participants