// wrapConnAsProto establishes the moose protocol on the raw ipfs connection func wrapConnAsProto(conn net.Conn, node *ipfsutil.Node, peerHash string) (*protocol.Protocol, error) { pub, err := node.PublicKeyFor(peerHash) if err != nil { return nil, err } priv, err := node.PrivateKey() if err != nil { return nil, err } authrw := security.NewAuthReadWriter(conn, priv, pub) if err := authrw.Trigger(); err != nil { return nil, err } return protocol.NewProtocol(authrw, true), nil }