metamask-extension
metamask-extension copied to clipboard
Fix #7073 - Provide a QR to export private key
Description
It's been requested by many to provide a QR code to export private key in the "Show Private Key" flow. This PR puts a QR code on the private key modal after the user has authenticated password and pressed-to-hold.
Related issues
Fixes: #7073
Manual testing steps
- Click the three-dot global menu
- Click "Account Details"
- Click "Show Private Key"
- Enter correct password
- Hold the button to reveal key
- See the QR code above the text private key
- Use a QR reader to read the value
- Ensure the output matches the private key
Screenshots/Recordings
Before
N/A
After
Not putting in the PR to not expose any data
Pre-merge author checklist
- [ ] I’ve followed MetaMask Coding Standards.
- [ ] I've clearly explained what problem this PR is solving and how it is solved.
- [ ] I've linked related issues
- [ ] I've included manual testing steps
- [ ] I've included screenshots/recordings if applicable
- [ ] I’ve included tests if applicable
- [ ] I’ve documented my code using JSDoc format if applicable
- [ ] I’ve applied the right labels on the PR (see labeling guidelines). Not required for external contributors.
- [ ] I’ve properly set the pull request status:
- [ ] In case it's not yet "ready for review", I've set it to "draft".
- [ ] In case it's "ready for review", I've changed it from "draft" to "non-draft".
Pre-merge reviewer checklist
- [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.
CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.
This PR could likely use security review and advisement
Builds ready [3c5cebc]
- builds: chrome, firefox
- builds (beta): chrome
- builds (flask): chrome, firefox
- builds (MMI): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- mv3: Background Module Init Stats
- mv3: UI Init Stats
- mv3: Module Load Stats
- mv3: Bundle Size Stats
- mv2: E2e Actions Stats
- code coverage: Report
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
Page Load Metrics (797 ± 24 ms)
| Platform | Page | Metric | Min (ms) | Max (ms) | Average (ms) | StandardDeviation (ms) | MarginOfError (ms) |
|---|---|---|---|---|---|---|---|
| Chrome | Home | firstPaint | 83 | 117 | 102 | 10 | 5 |
| domContentLoaded | 12 | 33 | 20 | 6 | 3 | ||
| load | 674 | 889 | 797 | 49 | 24 | ||
| domInteractive | 12 | 33 | 20 | 6 | 3 |
Bundle size diffs
- background: 0 Bytes (0.00%)
- ui: 429 Bytes (0.01%)
- common: 0 Bytes (0.00%)
Builds ready [fbb1db4]
- builds: chrome, firefox
- builds (beta): chrome
- builds (flask): chrome, firefox
- builds (MMI): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- mv3: Background Module Init Stats
- mv3: UI Init Stats
- mv3: Module Load Stats
- mv3: Bundle Size Stats
- mv2: E2e Actions Stats
- code coverage: Report
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
Page Load Metrics (1036 ± 79 ms)
| Platform | Page | Metric | Min (ms) | Max (ms) | Average (ms) | StandardDeviation (ms) | MarginOfError (ms) |
|---|---|---|---|---|---|---|---|
| Chrome | Home | firstPaint | 125 | 292 | 188 | 50 | 24 |
| domContentLoaded | 9 | 73 | 33 | 23 | 11 | ||
| load | 918 | 1591 | 1036 | 165 | 79 | ||
| domInteractive | 9 | 73 | 33 | 23 | 11 |
Bundle size diffs
- background: 0 Bytes (0.00%)
- ui: 429 Bytes (0.01%)
- common: 0 Bytes (0.00%)
Builds ready [903d882]
- builds: chrome, firefox
- builds (beta): chrome
- builds (flask): chrome, firefox
- builds (MMI): chrome, firefox
- builds (test): chrome, firefox
- builds (test-flask): chrome, firefox
- build viz: Build System
- mv3: Background Module Init Stats
- mv3: UI Init Stats
- mv3: Module Load Stats
- mv3: Bundle Size Stats
- mv2: E2e Actions Stats
- code coverage: Report
- storybook: Storybook
- typescript migration: Dashboard
- all artifacts
Page Load Metrics (1870 ± 89 ms)
| Platform | Page | Metric | Min (ms) | Max (ms) | Average (ms) | StandardDeviation (ms) | MarginOfError (ms) |
|---|---|---|---|---|---|---|---|
| Chrome | Home | firstPaint | 90 | 448 | 210 | 95 | 46 |
| domContentLoaded | 11 | 91 | 38 | 24 | 11 | ||
| load | 1500 | 2389 | 1870 | 186 | 89 | ||
| domInteractive | 11 | 91 | 38 | 24 | 11 |
Bundle size diffs
- background: 0 Bytes (0.00%)
- ui: 429 Bytes (0.01%)
- common: 0 Bytes (0.00%)
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Comparison is base (
d3f0a32) 68.46% compared to head (903d882) 68.46%.
Additional details and impacted files
@@ Coverage Diff @@
## develop #22885 +/- ##
========================================
Coverage 68.46% 68.46%
========================================
Files 1089 1089
Lines 43045 43048 +3
Branches 11469 11469
========================================
+ Hits 29469 29472 +3
Misses 13576 13576
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.