MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / clientHandshake

Method clientHandshake

naconn/conn.go:119–153  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

117}
118
119func (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.
156func Accept(conn net.Conn) (*NAConn, error) {

Callers 1

HandshakeMethod · 0.95

Calls 6

BytesMethod · 0.95
GetLocalNodeIDBytesFunction · 0.92
GetLocalNonceFunction · 0.92
AsBytesMethod · 0.80
ErrorfMethod · 0.80
WriteMethod · 0.65

Tested by

no test coverage detected