mirror of
https://github.com/status-im/status-go.git
synced 2025-02-23 12:18:38 +00:00
fix(keycard): convert regular to a keycard account process fixed
This commit is contained in:
parent
d8e2884d4e
commit
902d4b7501
@ -8,6 +8,7 @@ import (
|
|||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@ -606,7 +607,7 @@ func (m *Manager) ReEncryptKeyStoreDir(keyDirPath, oldPass, newPass string) erro
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) DeleteAccount(keyDirPath string, address types.Address) error {
|
func (m *Manager) DeleteAccount(keyDirPath string, address types.Address, ignoreCase bool) error {
|
||||||
var err error
|
var err error
|
||||||
var foundKeyFile string
|
var foundKeyFile string
|
||||||
err = filepath.Walk(keyDirPath, func(path string, fileInfo os.FileInfo, err error) error {
|
err = filepath.Walk(keyDirPath, func(path string, fileInfo os.FileInfo, err error) error {
|
||||||
@ -629,9 +630,15 @@ func (m *Manager) DeleteAccount(keyDirPath string, address types.Address) error
|
|||||||
return fmt.Errorf("failed to read key file: %s", e)
|
return fmt.Errorf("failed to read key file: %s", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ignoreCase {
|
||||||
|
if strings.EqualFold("0x"+accountKey.Address, address.String()) {
|
||||||
|
foundKeyFile = path
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if types.HexToAddress("0x"+accountKey.Address).Hex() == address.Hex() {
|
if types.HexToAddress("0x"+accountKey.Address).Hex() == address.Hex() {
|
||||||
foundKeyFile = path
|
foundKeyFile = path
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -604,6 +604,26 @@ func (b *GethStatusBackend) ConvertToKeycardAccount(keyStoreDir string, account
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
masterAddress, err := accountDB.GetMasterAddress()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
dappsAddress, err := accountDB.GetDappsAddress()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
eip1581Address, err := accountDB.GetEIP1581Address()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
walletRootAddress, err := accountDB.GetWalletRootAddress()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
err = b.closeAppDB()
|
err = b.closeAppDB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -614,13 +634,18 @@ func (b *GethStatusBackend) ConvertToKeycardAccount(keyStoreDir string, account
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We need to delete all accounts for the keypair which is being migrated
|
||||||
|
// no need to check for the error below cause if this action fails from
|
||||||
|
// whichever reason the account is still successfully migrated
|
||||||
for _, acc := range knownAccounts {
|
for _, acc := range knownAccounts {
|
||||||
if account.KeyUID == acc.KeyUID {
|
if account.KeyUID == acc.KeyUID {
|
||||||
// This action deletes an account from the keystore, no need to check for error in this context here, cause if this
|
_ = b.accountManager.DeleteAccount(keyStoreDir, acc.Address, true)
|
||||||
// action fails from whichever reason the account is still successfully migrated since keystore won't be used any more.
|
|
||||||
_ = b.accountManager.DeleteAccount(keyStoreDir, acc.Address)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_ = b.accountManager.DeleteAccount(keyStoreDir, masterAddress, true)
|
||||||
|
_ = b.accountManager.DeleteAccount(keyStoreDir, dappsAddress, true)
|
||||||
|
_ = b.accountManager.DeleteAccount(keyStoreDir, eip1581Address, true)
|
||||||
|
_ = b.accountManager.DeleteAccount(keyStoreDir, walletRootAddress, true)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -402,6 +402,11 @@ var (
|
|||||||
dBColumnName: "wallet_root_address",
|
dBColumnName: "wallet_root_address",
|
||||||
valueHandler: AddressHandler,
|
valueHandler: AddressHandler,
|
||||||
}
|
}
|
||||||
|
MasterAddress = SettingField{
|
||||||
|
reactFieldName: "address",
|
||||||
|
dBColumnName: "address",
|
||||||
|
valueHandler: AddressHandler,
|
||||||
|
}
|
||||||
|
|
||||||
SettingFieldRegister = []SettingField{
|
SettingFieldRegister = []SettingField{
|
||||||
AnonMetricsShouldSend,
|
AnonMetricsShouldSend,
|
||||||
|
@ -587,6 +587,22 @@ func (db *Database) GetWalletRootAddress() (rst types.Address, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db *Database) GetEIP1581Address() (rst types.Address, err error) {
|
||||||
|
err = db.makeSelectRow(EIP1581Address).Scan(&rst)
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return rst, nil
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (db *Database) GetMasterAddress() (rst types.Address, err error) {
|
||||||
|
err = db.makeSelectRow(MasterAddress).Scan(&rst)
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return rst, nil
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (db *Database) TestNetworksEnabled() (rst bool, err error) {
|
func (db *Database) TestNetworksEnabled() (rst bool, err error) {
|
||||||
err = db.makeSelectRow(TestNetworksEnabled).Scan(&rst)
|
err = db.makeSelectRow(TestNetworksEnabled).Scan(&rst)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
|
@ -78,7 +78,7 @@ func (api *API) DeleteAccount(ctx context.Context, address types.Address) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if acc.Type != accounts.AccountTypeWatch {
|
if acc.Type != accounts.AccountTypeWatch {
|
||||||
err = api.manager.DeleteAccount(api.config.KeyStoreDir, address)
|
err = api.manager.DeleteAccount(api.config.KeyStoreDir, address, true)
|
||||||
var e *account.ErrCannotLocateKeyFile
|
var e *account.ErrCannotLocateKeyFile
|
||||||
if err != nil && !errors.As(err, &e) {
|
if err != nil && !errors.As(err, &e) {
|
||||||
return err
|
return err
|
||||||
@ -444,7 +444,7 @@ func (api *API) AddMigratedKeyPair(ctx context.Context, kcUID string, kpName str
|
|||||||
for _, addr := range addresses {
|
for _, addr := range addresses {
|
||||||
// This action deletes an account from the keystore, no need to check for error in this context here, cause if this
|
// This action deletes an account from the keystore, no need to check for error in this context here, cause if this
|
||||||
// action fails from whichever reason the account is still successfully migrated since keystore won't be used any more.
|
// action fails from whichever reason the account is still successfully migrated since keystore won't be used any more.
|
||||||
_ = api.manager.DeleteAccount(keyStoreDir, addr)
|
_ = api.manager.DeleteAccount(keyStoreDir, addr, true)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user