func MakeHelloMsg(n *xn.Node) (m *XLatticeMsg, err error) { var ck, sk, salt, sig []byte cmd := XLatticeMsg_Hello id := n.GetNodeID().Value() ck, err = xc.RSAPubKeyToWire(n.GetCommsPublicKey()) if err == nil { sk, err = xc.RSAPubKeyToWire(n.GetSigPublicKey()) } if err == nil { sysRNG := xr.MakeSystemRNG() salt = make([]byte, 8) sysRNG.NextBytes(salt) chunks := [][]byte{id, ck, sk, salt} sig, err = n.Sign(chunks) } if err == nil { m = &XLatticeMsg{ Op: &cmd, MsgN: &ONE, ID: id, CommsKey: ck, SigKey: sk, Salt: salt, Sig: sig, } } return }