| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package guardiand
- import (
- "fmt"
- "io/ioutil"
- "os"
- p2pcrypto "github.com/libp2p/go-libp2p-core/crypto"
- "github.com/libp2p/go-libp2p-core/peer"
- "go.uber.org/zap"
- )
- func getOrCreateNodeKey(logger *zap.Logger, path string) (p2pcrypto.PrivKey, error) {
- b, err := ioutil.ReadFile(path)
- if err != nil {
- if os.IsNotExist(err) {
- logger.Info("No node key found, generating a new one...", zap.String("path", path))
- priv, _, err := p2pcrypto.GenerateKeyPair(p2pcrypto.Ed25519, -1)
- if err != nil {
- panic(err)
- }
- s, err := p2pcrypto.MarshalPrivateKey(priv)
- if err != nil {
- panic(err)
- }
- err = ioutil.WriteFile(path, s, 0600)
- if err != nil {
- return nil, fmt.Errorf("failed to write node key: %w", err)
- }
- return priv, nil
- } else {
- return nil, fmt.Errorf("failed to read node key: %w", err)
- }
- }
- priv, err := p2pcrypto.UnmarshalPrivateKey(b)
- if err != nil {
- return nil, fmt.Errorf("failed to unmarshal node key: %w", err)
- }
- peerID, err := peer.IDFromPrivateKey(priv)
- if err != nil {
- panic(err)
- }
- logger.Info("Found existing node key",
- zap.String("path", path),
- zap.Stringer("peerID", peerID))
- return priv, nil
- }
|