diff --git a/p2p/protocol/identify/id.go b/p2p/protocol/identify/id.go index 5991fe695..d565bc5f6 100644 --- a/p2p/protocol/identify/id.go +++ b/p2p/protocol/identify/id.go @@ -186,9 +186,18 @@ func (ids *IDService) populateMessage(mes *pb.Identify, c inet.Conn) { // set our public key ownKey := ids.Host.Peerstore().PubKey(ids.Host.ID()) + + // check if we even have a public key. if ownKey == nil { - log.Errorf("did not have own public key in Peerstore") + // public key is nil. We are either using insecure transport or something erratic happened. + // check if we're even operating in "secure mode" + if ids.Host.Peerstore().PrivKey(ids.Host.ID()) != nil { + // private key is present. But NO public key. Something bad happened. + log.Errorf("did not have own public key in Peerstore") + } + // if neither of the key is present it is safe to assume that we are using an insecure transport. } else { + // public key is present. Safe to proceed. if kb, err := ownKey.Bytes(); err != nil { log.Errorf("failed to convert key to bytes") } else {