Commit 1c20313a authored by Felix Lange's avatar Felix Lange

Merge pull request #2493 from almindor/develop

eth: add personal_importRawKey
parents cfa999f0 572da73d
......@@ -284,7 +284,12 @@ func (am *Manager) Import(keyJSON []byte, passphrase, newPassphrase string) (Acc
// ImportECDSA stores the given key into the key directory, encrypting it with the passphrase.
func (am *Manager) ImportECDSA(priv *ecdsa.PrivateKey, passphrase string) (Account, error) {
return am.importKey(newKeyFromECDSA(priv), passphrase)
key := newKeyFromECDSA(priv)
if am.cache.hasAddress(key.Address) {
return Account{}, fmt.Errorf("account already exists")
}
return am.importKey(key, passphrase)
}
func (am *Manager) importKey(key *Key, passphrase string) (Account, error) {
......
......@@ -18,6 +18,7 @@ package eth
import (
"bytes"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
......@@ -448,6 +449,16 @@ func (s *PrivateAccountAPI) NewAccount(password string) (common.Address, error)
return common.Address{}, err
}
func (s *PrivateAccountAPI) ImportRawKey(privkey string, password string) (common.Address, error) {
hexkey, err := hex.DecodeString(privkey)
if err != nil {
return common.Address{}, err
}
acc, err := s.am.ImportECDSA(crypto.ToECDSA(hexkey), password)
return acc.Address, err
}
// UnlockAccount will unlock the account associated with the given address with
// the given password for duration seconds. If duration is nil it will use a
// default of 300 seconds. It returns an indication if the account was unlocked.
......
......@@ -18,12 +18,13 @@
package web3ext
var Modules = map[string]string{
"txpool": TxPool_JS,
"admin": Admin_JS,
"eth": Eth_JS,
"miner": Miner_JS,
"debug": Debug_JS,
"net": Net_JS,
"txpool": TxPool_JS,
"admin": Admin_JS,
"personal": Personal_JS,
"eth": Eth_JS,
"miner": Miner_JS,
"debug": Debug_JS,
"net": Net_JS,
}
const TxPool_JS = `
......@@ -175,6 +176,20 @@ web3._extend({
});
`
const Personal_JS = `
web3._extend({
property: 'personal',
methods:
[
new web3._extend.Method({
name: 'importRawKey',
call: 'personal_importRawKey',
params: 2
})
]
});
`
const Eth_JS = `
web3._extend({
property: 'eth',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment