From 5cad0222b7ac157261c9b820eece8a1247c8ee66 Mon Sep 17 00:00:00 2001 From: Terry Mancey Date: Tue, 25 Jun 2019 04:31:39 +0100 Subject: [PATCH] Fix wallet is in a persisted bad state until wallet recovery is complete Fixes https://github.com/brave/brave-browser/issues/4794 --- .../src/bat/ledger/internal/bat_client.cc | 26 ++++++++++--------- .../src/bat/ledger/internal/bat_client.h | 6 +++-- .../src/bat/ledger/internal/bat_state.cc | 5 ---- .../src/bat/ledger/internal/bat_state.h | 2 -- .../src/bat/ledger/internal/ledger_impl.cc | 4 --- .../src/bat/ledger/internal/ledger_impl.h | 2 -- 6 files changed, 18 insertions(+), 27 deletions(-) diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.cc index 1c2d1d1679b1..29e98272fcfe 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.cc @@ -391,11 +391,6 @@ void BatClient::continueRecover(int result, return; } - - braveledger_bat_helper::WALLET_INFO_ST wallet_info = ledger_->GetWalletInfo(); - wallet_info.keyInfoSeed_ = newSeed; - ledger_->SetWalletInfo(wallet_info); - std::vector secretKey = braveledger_bat_helper::getHKDF(newSeed); std::vector publicKey; std::vector newSecretKey; @@ -408,7 +403,8 @@ void BatClient::continueRecover(int result, this, _1, _2, - _3); + _3, + newSeed); ledger_->LoadURL(braveledger_bat_helper::buildURL( (std::string)RECOVER_WALLET_PUBLIC_KEY + publicKeyHex, PREFIX_V2), std::vector(), "", "", @@ -418,7 +414,8 @@ void BatClient::continueRecover(int result, void BatClient::recoverWalletPublicKeyCallback( int response_status_code, const std::string& response, - const std::map& headers) { + const std::map& headers, + const std::vector& new_seed) { ledger_->LogResponse(__func__, response_status_code, response, headers); if (response_status_code != net::HTTP_OK) { @@ -434,7 +431,8 @@ void BatClient::recoverWalletPublicKeyCallback( _1, _2, _3, - recoveryId); + recoveryId, + new_seed); ledger_->LoadURL(braveledger_bat_helper::buildURL( (std::string)WALLET_PROPERTIES + recoveryId, PREFIX_V2), std::vector(), "", "", ledger::URL_METHOD::GET, callback); @@ -444,8 +442,9 @@ void BatClient::recoverWalletCallback( int response_status_code, const std::string& response, const std::map& headers, - const std::string& recoveryId) { -ledger_->LogResponse(__func__, response_status_code, response, headers); + const std::string& recoveryId, + const std::vector& new_seed) { + ledger_->LogResponse(__func__, response_status_code, response, headers); if (response_status_code != net::HTTP_OK) { std::vector empty; ledger_->OnRecoverWallet(ledger::Result::LEDGER_ERROR, 0, empty); @@ -467,14 +466,17 @@ ledger_->LogResponse(__func__, response_status_code, response, headers); &properties.balance_, &properties.probi_, &properties.grants_); - ledger_->SetWalletInfo(wallet_info); ledger_->SetCurrency(currency); if (!ledger_->GetUserChangedContribution()) { ledger_->SetContributionAmount(fee_amount); } ledger_->SetDays(days); ledger_->SetWalletProperties(&properties); - ledger_->SetPaymentId(recoveryId); + + wallet_info.paymentId_ = recoveryId; + wallet_info.keyInfoSeed_ = new_seed; + ledger_->SetWalletInfo(wallet_info); + ledger_->OnRecoverWallet(ledger::Result::LEDGER_OK, properties.balance_, properties.grants_); diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.h b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.h index 0a848dae8433..aaba9035d381 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_client.h @@ -93,13 +93,15 @@ class BatClient { void recoverWalletPublicKeyCallback( int response_status_code, const std::string& response, - const std::map& headers); + const std::map& headers, + const std::vector& new_seed); void recoverWalletCallback( int response_status_code, const std::string& response, const std::map& headers, - const std::string& paymentId); + const std::string& recoveryId, + const std::vector& new_seed); std::string getAnonizeProof(const std::string& registrarVK, const std::string& id, diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.cc index 34b30cc489df..0a7cca83e552 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.cc @@ -197,11 +197,6 @@ const std::string& BatState::GetPaymentId() const { return state_->walletInfo_.paymentId_; } -void BatState::SetPaymentId(const std::string& payment_id) { - state_->walletInfo_.paymentId_ = payment_id; - SaveState(); -} - const braveledger_bat_helper::Grants& BatState::GetGrants() const { return state_->grants_; } diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.h b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.h index 9e7453e2950a..026b126cfb84 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/bat_state.h @@ -76,8 +76,6 @@ class BatState { const std::string& GetPaymentId() const; - void SetPaymentId(const std::string& payment_id); - const braveledger_bat_helper::Grants& GetGrants() const; void SetGrants(braveledger_bat_helper::Grants grants); diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc index 0c3f4d352bb4..5b0a3877e634 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.cc @@ -1188,10 +1188,6 @@ const std::string& LedgerImpl::GetPaymentId() const { return bat_state_->GetPaymentId(); } -void LedgerImpl::SetPaymentId(const std::string& payment_id) { - bat_state_->SetPaymentId(payment_id); -} - const braveledger_bat_helper::Grants& LedgerImpl::GetGrants() const { return bat_state_->GetGrants(); } diff --git a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h index 17d09490f86f..2855f0812b8a 100644 --- a/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h +++ b/vendor/bat-native-ledger/src/bat/ledger/internal/ledger_impl.h @@ -322,8 +322,6 @@ class LedgerImpl : public ledger::Ledger, const std::string& GetPaymentId() const; - void SetPaymentId(const std::string& payment_id); - const braveledger_bat_helper::Grants& GetGrants() const; void SetGrants(braveledger_bat_helper::Grants grants);