SetNode verifies nonce and sets {proto.Node.ID: proto.Node}.
(nodeInfo *proto.Node)
| 256 | |
| 257 | // SetNode verifies nonce and sets {proto.Node.ID: proto.Node}. |
| 258 | func SetNode(nodeInfo *proto.Node) (err error) { |
| 259 | if nodeInfo == nil { |
| 260 | return ErrNilNode |
| 261 | } |
| 262 | if !Unittest { |
| 263 | if !IsIDPubNonceValid(nodeInfo.ID.ToRawNodeID(), &nodeInfo.Nonce, nodeInfo.PublicKey) { |
| 264 | return ErrNodeIDKeyNonceNotMatch |
| 265 | } |
| 266 | } |
| 267 | |
| 268 | return setNode(nodeInfo) |
| 269 | } |
| 270 | |
| 271 | // IsIDPubNonceValid returns if `id == HashBlock(key, nonce)`. |
| 272 | func IsIDPubNonceValid(id *proto.RawNodeID, nonce *mine.Uint256, key *asymmetric.PublicKey) bool { |