func initIdentity(cfg *config.Identity, peers peer.Peerstore, online bool) (peer.Peer, error) { if cfg.PeerID == "" { return nil, debugerror.New("Identity was not set in config (was ipfs init run?)") } if len(cfg.PeerID) == 0 { return nil, debugerror.New("No peer ID in config! (was ipfs init run?)") } // get peer from peerstore (so it is constructed there) id := peer.ID(b58.Decode(cfg.PeerID)) self, err := peers.Get(id) if err != nil { return nil, err } self.SetType(peer.Local) self, err = peers.Add(self) if err != nil { return nil, err } self.SetVersions(handshake.ClientVersion, handshake.IpfsVersion.String()) // when not online, don't need to parse private keys (yet) if online { skb, err := base64.StdEncoding.DecodeString(cfg.PrivKey) if err != nil { return nil, err } if err := self.LoadAndVerifyKeyPair(skb); err != nil { return nil, err } } return self, nil }