コード例 #1
0
ファイル: proto.go プロジェクト: unixdj/benchnet
func authClient(c *conn.Conn, d *connData) (step, error) {
	var buf [16]byte
	_, err := io.ReadFull(c, buf[:])
	if err != nil {
		return nil, err
	}
	//clientId := binary.BigEndian.Uint64(buf[:8])
	id := binary.BigEndian.Uint64(buf[8:])
	d.n = getNode(id)
	if d.n == nil {
		return nil, nodeNotFoundError(id)
	}
	c.SetKey(d.n.key)
	c.WriteToHash(buf[:])
	if err = c.CheckSig(); err != nil {
		return nil, err
	}
	log.Info(fmt.Sprintf("client %s: authenticated node %d",
		c.RemoteAddr(), id))
	return recvLogs, c.ReceiveChallenge()
}