mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
Use verifyPassword instead of submitPassword when exporting priv key (#9288)
* Use verifyPassword instead of submitPassword when exporting priv key Fixes #9287 which was when submitPassword is called will fully clear the keyring state https://github.com/MetaMask/KeyringController/blob/master/index.js#L155ad823d0ac1/index.js (L562)
ad823d0ac1/index.js (L726)
Also, pass hideWarning action prop so it will clear the appState.warning if a correct password is never provided on componentWillUnmount * Hide Warning on componentWillUnmount * Update exportAccount tests to verifyPassword * Update ui/app/store/actions.js Co-authored-by: Mark Stacey <markjstacey@gmail.com>
This commit is contained in:
parent
20b0e66cc9
commit
79d477009e
@ -1144,10 +1144,10 @@ describe('Actions', function () {
|
||||
})
|
||||
|
||||
describe('#exportAccount', function () {
|
||||
let submitPasswordSpy, exportAccountSpy
|
||||
let verifyPasswordSpy, exportAccountSpy
|
||||
|
||||
afterEach(function () {
|
||||
submitPasswordSpy.restore()
|
||||
verifyPasswordSpy.restore()
|
||||
exportAccountSpy.restore()
|
||||
})
|
||||
|
||||
@ -1159,11 +1159,11 @@ describe('Actions', function () {
|
||||
{ type: 'SHOW_PRIVATE_KEY', value: '7ec73b91bb20f209a7ff2d32f542c3420b4fccf14abcc7840d2eff0ebcb18505' },
|
||||
]
|
||||
|
||||
submitPasswordSpy = sinon.spy(background, 'submitPassword')
|
||||
verifyPasswordSpy = sinon.spy(background, 'verifyPassword')
|
||||
exportAccountSpy = sinon.spy(background, 'exportAccount')
|
||||
|
||||
await store.dispatch(actions.exportAccount(password, '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc'))
|
||||
assert(submitPasswordSpy.calledOnce)
|
||||
assert(verifyPasswordSpy.calledOnce)
|
||||
assert(exportAccountSpy.calledOnce)
|
||||
assert.deepEqual(store.getActions(), expectedActions)
|
||||
})
|
||||
@ -1176,8 +1176,8 @@ describe('Actions', function () {
|
||||
{ type: 'DISPLAY_WARNING', value: 'Incorrect Password.' },
|
||||
]
|
||||
|
||||
submitPasswordSpy = sinon.stub(background, 'submitPassword')
|
||||
submitPasswordSpy.callsFake((_, callback) => {
|
||||
verifyPasswordSpy = sinon.stub(background, 'verifyPassword')
|
||||
verifyPasswordSpy.callsFake((_, callback) => {
|
||||
callback(new Error('error'))
|
||||
})
|
||||
|
||||
|
@ -25,6 +25,7 @@ export default class ExportPrivateKeyModal extends Component {
|
||||
warning: PropTypes.node,
|
||||
showAccountDetailModal: PropTypes.func.isRequired,
|
||||
hideModal: PropTypes.func.isRequired,
|
||||
hideWarning: PropTypes.func.isRequired,
|
||||
clearAccountDetails: PropTypes.func.isRequired,
|
||||
previousModalState: PropTypes.string,
|
||||
}
|
||||
@ -37,6 +38,7 @@ export default class ExportPrivateKeyModal extends Component {
|
||||
|
||||
componentWillUnmount () {
|
||||
this.props.clearAccountDetails()
|
||||
this.props.hideWarning()
|
||||
}
|
||||
|
||||
exportAccountAndGetPrivateKey = (password, address) => {
|
||||
|
@ -32,6 +32,7 @@ function mapDispatchToProps (dispatch) {
|
||||
},
|
||||
showAccountDetailModal: () => dispatch(showModal({ name: 'ACCOUNT_DETAILS' })),
|
||||
hideModal: () => dispatch(hideModal()),
|
||||
hideWarning: () => dispatch(hideWarning()),
|
||||
clearAccountDetails: () => dispatch(clearAccountDetails()),
|
||||
}
|
||||
}
|
||||
|
@ -1707,11 +1707,11 @@ export function exportAccount (password, address) {
|
||||
return function (dispatch) {
|
||||
dispatch(showLoadingIndication())
|
||||
|
||||
log.debug(`background.submitPassword`)
|
||||
log.debug(`background.verifyPassword`)
|
||||
return new Promise((resolve, reject) => {
|
||||
background.submitPassword(password, function (err) {
|
||||
background.verifyPassword(password, function (err) {
|
||||
if (err) {
|
||||
log.error('Error in submitting password.')
|
||||
log.error('Error in verifying password.')
|
||||
dispatch(hideLoadingIndication())
|
||||
dispatch(displayWarning('Incorrect Password.'))
|
||||
reject(err)
|
||||
|
Loading…
Reference in New Issue
Block a user