From 66aafba1510df8d1f64b5edf01bbd48e405e0ad8 Mon Sep 17 00:00:00 2001 From: Petar Maymounkov Date: Tue, 11 Aug 2020 16:43:55 -0700 Subject: [PATCH] add --peerid-base to ipfs id --- core/commands/id.go | 22 +++++++++++++++------- test/sharness/t0165-keystore.sh | 8 ++++---- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/core/commands/id.go b/core/commands/id.go index af6f3470d772..1855425f878e 100644 --- a/core/commands/id.go +++ b/core/commands/id.go @@ -14,6 +14,7 @@ import ( cmdenv "github.com/ipfs/go-ipfs/core/commands/cmdenv" cmds "github.com/ipfs/go-ipfs-cmds" + ke "github.com/ipfs/go-ipfs/core/commands/keyencode" ic "github.com/libp2p/go-libp2p-core/crypto" "github.com/libp2p/go-libp2p-core/host" peer "github.com/libp2p/go-libp2p-core/peer" @@ -41,7 +42,8 @@ type IdOutput struct { } const ( - formatOptionName = "format" + formatOptionName = "format" + idFormatOptionName = "peerid-base" ) var IDCmd = &cmds.Command{ @@ -68,8 +70,14 @@ EXAMPLE: }, Options: []cmds.Option{ cmds.StringOption(formatOptionName, "f", "Optional output format."), + cmds.StringOption(idFormatOptionName, "", "Encoding used for peer IDs: Can either be a multibase encoded CID or a base58btc encoded multihash. Takes {b58mh|base36|k|base32|b...}.").WithDefault("b58mh"), }, Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error { + keyEnc, err := ke.KeyEncoderFromString(req.Options[idFormatOptionName].(string)) + if err != nil { + return err + } + n, err := cmdenv.GetNode(env) if err != nil { return err @@ -87,7 +95,7 @@ EXAMPLE: } if id == n.Identity { - output, err := printSelf(n) + output, err := printSelf(keyEnc, n) if err != nil { return err } @@ -109,7 +117,7 @@ EXAMPLE: return err } - output, err := printPeer(n.Peerstore, id) + output, err := printPeer(keyEnc, n.Peerstore, id) if err != nil { return err } @@ -143,13 +151,13 @@ EXAMPLE: Type: IdOutput{}, } -func printPeer(ps pstore.Peerstore, p peer.ID) (interface{}, error) { +func printPeer(keyEnc ke.KeyEncoder, ps pstore.Peerstore, p peer.ID) (interface{}, error) { if p == "" { return nil, errors.New("attempted to print nil peer") } info := new(IdOutput) - info.ID = p.Pretty() + info.ID = keyEnc.FormatID(p) if pk := ps.PubKey(p); pk != nil { pkb, err := ic.MarshalPublicKey(pk) @@ -191,9 +199,9 @@ func printPeer(ps pstore.Peerstore, p peer.ID) (interface{}, error) { } // printing self is special cased as we get values differently. -func printSelf(node *core.IpfsNode) (interface{}, error) { +func printSelf(keyEnc ke.KeyEncoder, node *core.IpfsNode) (interface{}, error) { info := new(IdOutput) - info.ID = node.Identity.Pretty() + info.ID = keyEnc.FormatID(node.Identity) pk := node.PrivateKey.GetPublic() pkb, err := ic.MarshalPublicKey(pk) diff --git a/test/sharness/t0165-keystore.sh b/test/sharness/t0165-keystore.sh index e981162f3505..528f35523a7c 100755 --- a/test/sharness/t0165-keystore.sh +++ b/test/sharness/t0165-keystore.sh @@ -59,12 +59,12 @@ ipfs key rm key_ed25519 test_expect_success "create a new rsa key" ' - rsahash=$(ipfs key gen generated_rsa_key --type=rsa --size=2048 --ipns-base=b58mh) + rsahash=$(ipfs key gen generated_rsa_key --type=rsa --size=2048 --ipns-base=base36) echo $rsahash > rsa_key_id ' test_expect_success "create a new ed25519 key" ' - edhash=$(ipfs key gen generated_ed25519_key --type=ed25519 --ipns-base=b58mh) + edhash=$(ipfs key gen generated_ed25519_key --type=ed25519 --ipns-base=base36) echo $edhash > ed25519_key_id ' @@ -119,8 +119,8 @@ ipfs key rm key_ed25519 ' test_expect_success "key hashes show up in long list output" ' - ipfs key list -l --ipns-base=b58mh | grep $edhash > /dev/null && - ipfs key list -l --ipns-base=b58mh | grep $rsahash > /dev/null + ipfs key list -l --ipns-base=base36 | grep $edhash > /dev/null && + ipfs key list -l --ipns-base=base36 | grep $rsahash > /dev/null ' test_expect_success "key list -l contains self key with peerID" '