Skip to content

Commit

Permalink
cmd: Add a simple cli util to generate peer private key and print out…
Browse files Browse the repository at this point in the history
… peer ID
  • Loading branch information
algorandskiy committed Jul 23, 2024
1 parent 47fd1c9 commit 9b23a43
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions cmd/p2pid/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright (C) 2019-2024 Algorand, Inc.
// This file is part of go-algorand
//
// go-algorand is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// go-algorand is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with go-algorand. If not, see <https://www.gnu.org/licenses/>.

// generate a new p2p private key and print out peerID to stdout

package main

import (
"flag"
"fmt"
"os"
"path"

"github.com/algorand/go-algorand/config"
"github.com/algorand/go-algorand/network/p2p"
"github.com/algorand/go-algorand/util"
"github.com/libp2p/go-libp2p/core/peer"
)

var dataDirectory = flag.String("d", "", "Root Algorand daemon data path or a path to a directory where the private key will be stored. If not provided, the current directory will be used.")

func main() {
flag.Parse()
dataDir := *dataDirectory
if dataDir == "" {
dataDir = "."
}

exist := false
privKeyPath := path.Join(dataDir, p2p.DefaultPrivKeyPath)
if util.FileExists(privKeyPath) {
exist = true
}

peerKey, err := p2p.GetPrivKey(config.Local{P2PPersistPeerID: true}, dataDir)
if err != nil {
fmt.Fprintf(os.Stderr, "Error obtaining private key: %v\n", err)
os.Exit(1)
}
peerID, err := peer.IDFromPublicKey(peerKey.GetPublic())
if err != nil {
fmt.Fprintf(os.Stderr, "Error obtaining peerID from a key: %v\n", err)
os.Exit(1)
}

fmt.Printf("PeerID: %s\n", peerID.String())
if !exist {
fmt.Printf("Private key saved to %s\n", privKeyPath)
} else {
fmt.Printf("Used existing key from path %s\n", privKeyPath)
}
}

0 comments on commit 9b23a43

Please sign in to comment.