()
| 117 | } |
| 118 | |
| 119 | func (c *NAConn) clientHandshake() (err error) { |
| 120 | writeBuf := make([]byte, HeaderSize) |
| 121 | copy(writeBuf, etls.MagicBytes[:]) |
| 122 | if c.isAnonymous { |
| 123 | copy(writeBuf[etls.MagicSize:], kms.AnonymousRawNodeID.AsBytes()) |
| 124 | copy(writeBuf[etls.MagicSize+hash.HashSize:], (&cpuminer.Uint256{}).Bytes()) |
| 125 | } else { |
| 126 | // send NodeID + Uint256 Nonce |
| 127 | var nodeIDBytes []byte |
| 128 | var nonce *cpuminer.Uint256 |
| 129 | nodeIDBytes, err = kms.GetLocalNodeIDBytes() |
| 130 | if err != nil { |
| 131 | err = errors.Wrap(err, "get local node id failed") |
| 132 | return |
| 133 | } |
| 134 | nonce, err = kms.GetLocalNonce() |
| 135 | if err != nil { |
| 136 | err = errors.Wrap(err, "get local nonce failed") |
| 137 | return |
| 138 | } |
| 139 | copy(writeBuf[etls.MagicSize:], nodeIDBytes) |
| 140 | copy(writeBuf[etls.MagicSize+hash.HashSize:], nonce.Bytes()) |
| 141 | } |
| 142 | wrote, err := c.Conn.Write(writeBuf) |
| 143 | if err != nil { |
| 144 | err = errors.Wrap(err, "write node id and nonce failed") |
| 145 | return |
| 146 | } |
| 147 | |
| 148 | if wrote != HeaderSize { |
| 149 | err = errors.Errorf("write header size not match %d", wrote) |
| 150 | return |
| 151 | } |
| 152 | return |
| 153 | } |
| 154 | |
| 155 | // Accept takes the ownership of conn and accepts it as a NAConn. |
| 156 | func Accept(conn net.Conn) (*NAConn, error) { |
no test coverage detected