Merge pull request #749 from fjl/fix-nodekey-persistence
Fix p2p node key persistence
This commit is contained in:
commit
9ec56637f9
@ -120,6 +120,7 @@ func HexToECDSA(hexkey string) (*ecdsa.PrivateKey, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// LoadECDSA loads a secp256k1 private key from the given file.
|
// LoadECDSA loads a secp256k1 private key from the given file.
|
||||||
|
// The key data is expected to be hex-encoded.
|
||||||
func LoadECDSA(file string) (*ecdsa.PrivateKey, error) {
|
func LoadECDSA(file string) (*ecdsa.PrivateKey, error) {
|
||||||
buf := make([]byte, 64)
|
buf := make([]byte, 64)
|
||||||
fd, err := os.Open(file)
|
fd, err := os.Open(file)
|
||||||
@ -139,8 +140,8 @@ func LoadECDSA(file string) (*ecdsa.PrivateKey, error) {
|
|||||||
return ToECDSA(key), nil
|
return ToECDSA(key), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SaveECDSA saves a secp256k1 private key to the given file with restrictive
|
// SaveECDSA saves a secp256k1 private key to the given file with
|
||||||
// permissions
|
// restrictive permissions. The key data is saved hex-encoded.
|
||||||
func SaveECDSA(file string, key *ecdsa.PrivateKey) error {
|
func SaveECDSA(file string, key *ecdsa.PrivateKey) error {
|
||||||
k := hex.EncodeToString(FromECDSA(key))
|
k := hex.EncodeToString(FromECDSA(key))
|
||||||
return ioutil.WriteFile(file, []byte(k), 0600)
|
return ioutil.WriteFile(file, []byte(k), 0600)
|
||||||
|
@ -3,7 +3,6 @@ package eth
|
|||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"math"
|
"math"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@ -110,7 +109,7 @@ func (cfg *Config) nodeKey() (*ecdsa.PrivateKey, error) {
|
|||||||
if key, err = crypto.GenerateKey(); err != nil {
|
if key, err = crypto.GenerateKey(); err != nil {
|
||||||
return nil, fmt.Errorf("could not generate server key: %v", err)
|
return nil, fmt.Errorf("could not generate server key: %v", err)
|
||||||
}
|
}
|
||||||
if err := ioutil.WriteFile(keyfile, crypto.FromECDSA(key), 0600); err != nil {
|
if err := crypto.SaveECDSA(keyfile, key); err != nil {
|
||||||
glog.V(logger.Error).Infoln("could not persist nodekey: ", err)
|
glog.V(logger.Error).Infoln("could not persist nodekey: ", err)
|
||||||
}
|
}
|
||||||
return key, nil
|
return key, nil
|
||||||
@ -223,12 +222,10 @@ func New(config *Config) (*Ethereum, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
protocols := []p2p.Protocol{eth.protocolManager.SubProtocol}
|
protocols := []p2p.Protocol{eth.protocolManager.SubProtocol}
|
||||||
if config.Shh {
|
if config.Shh {
|
||||||
protocols = append(protocols, eth.whisper.Protocol())
|
protocols = append(protocols, eth.whisper.Protocol())
|
||||||
}
|
}
|
||||||
|
|
||||||
eth.net = &p2p.Server{
|
eth.net = &p2p.Server{
|
||||||
PrivateKey: netprv,
|
PrivateKey: netprv,
|
||||||
Name: config.Name,
|
Name: config.Name,
|
||||||
|
Loading…
Reference in New Issue
Block a user