diff options
author | Péter Szilágyi <peterke@gmail.com> | 2017-05-23 19:58:28 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2017-05-23 19:58:28 +0800 |
commit | 136f78ff0a324f7f79296143a6ab7c2dd8a2c37d (patch) | |
tree | 0d5fc07a79d24af7526f7ce6e72d3d3d35231b6d /mobile/accounts.go | |
parent | aa73420207cba02a68befdbb8667f1e6ceed3f4d (diff) | |
download | dexon-136f78ff0a324f7f79296143a6ab7c2dd8a2c37d.tar.gz dexon-136f78ff0a324f7f79296143a6ab7c2dd8a2c37d.tar.zst dexon-136f78ff0a324f7f79296143a6ab7c2dd8a2c37d.zip |
mobile: support importing flat ecdsa keyst too
Diffstat (limited to 'mobile/accounts.go')
-rw-r--r-- | mobile/accounts.go | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/mobile/accounts.go b/mobile/accounts.go index f5b7e81aa..977999c3a 100644 --- a/mobile/accounts.go +++ b/mobile/accounts.go @@ -25,6 +25,7 @@ import ( "github.com/ethereum/go-ethereum/accounts" "github.com/ethereum/go-ethereum/accounts/keystore" + "github.com/ethereum/go-ethereum/crypto" ) const ( @@ -176,6 +177,11 @@ func (ks *KeyStore) NewAccount(passphrase string) (*Account, error) { return &Account{account}, nil } +// UpdateAccount changes the passphrase of an existing account. +func (ks *KeyStore) UpdateAccount(account *Account, passphrase, newPassphrase string) error { + return ks.keystore.Update(account.account, passphrase, newPassphrase) +} + // ExportKey exports as a JSON key, encrypted with newPassphrase. func (ks *KeyStore) ExportKey(account *Account, passphrase, newPassphrase string) (key []byte, _ error) { return ks.keystore.Export(account.account, passphrase, newPassphrase) @@ -190,9 +196,17 @@ func (ks *KeyStore) ImportKey(keyJSON []byte, passphrase, newPassphrase string) return &Account{acc}, nil } -// UpdateAccount changes the passphrase of an existing account. -func (ks *KeyStore) UpdateAccount(account *Account, passphrase, newPassphrase string) error { - return ks.keystore.Update(account.account, passphrase, newPassphrase) +// ImportECDSAKey stores the given encrypted JSON key into the key directory. +func (ks *KeyStore) ImportECDSAKey(key []byte, passphrase string) (account *Account, _ error) { + privkey, err := crypto.ToECDSA(key) + if err != nil { + return nil, err + } + acc, err := ks.keystore.ImportECDSA(privkey, passphrase) + if err != nil { + return nil, err + } + return &Account{acc}, nil } // ImportPreSaleKey decrypts the given Ethereum presale wallet and stores |