Commit efdab230 authored by Aviv Eyal's avatar Aviv Eyal Committed by Steven Allen
Browse files

Use pointers for methods to avoid copying

parent 8d6313d1
Showing with 15 additions and 15 deletions
+15 -15
......@@ -33,7 +33,7 @@ func NewEchoProtocol(node *Node, done chan bool) *EchoProtocol {
}
// remote peer requests handler
func (e EchoProtocol) onEchoRequest(s inet.Stream) {
func (e *EchoProtocol) onEchoRequest(s inet.Stream) {
// get request data
data := &p2p.EchoRequest{}
decoder := protobufCodec.Multicodec(nil).Decoder(bufio.NewReader(s))
......@@ -86,7 +86,7 @@ func (e EchoProtocol) onEchoRequest(s inet.Stream) {
}
// remote echo response handler
func (e EchoProtocol) onEchoResponse(s inet.Stream) {
func (e *EchoProtocol) onEchoResponse(s inet.Stream) {
data := &p2p.EchoResponse{}
decoder := protobufCodec.Multicodec(nil).Decoder(bufio.NewReader(s))
err := decoder.Decode(data)
......@@ -120,7 +120,7 @@ func (e EchoProtocol) onEchoResponse(s inet.Stream) {
e.done <- true
}
func (e EchoProtocol) Echo(host host.Host) bool {
func (e *EchoProtocol) Echo(host host.Host) bool {
log.Printf("%s: Sending echo to: %s....", e.node.ID(), host.ID())
// create message data
......
......@@ -24,7 +24,7 @@ func NewNode(host host.Host, done chan bool) *Node {
return node
}
func (n Node) authenticateMessage(message proto.Message, data *p2p.MessageData) bool {
func (n *Node) authenticateMessage(message proto.Message, data *p2p.MessageData) bool {
// store a temp ref to sig and remove it from data
sign := data.Sign
......@@ -49,7 +49,7 @@ func (n Node) authenticateMessage(message proto.Message, data *p2p.MessageData)
return n.verifyData(bin, []byte(sign), peerId, []byte(data.NodePubKey))
}
func (n Node) signProtoMessage(message proto.Message) ([]byte, error) {
func (n *Node) signProtoMessage(message proto.Message) ([]byte, error) {
data, err := proto.Marshal(message)
if err != nil {
return nil, err
......@@ -57,16 +57,16 @@ func (n Node) signProtoMessage(message proto.Message) ([]byte, error) {
return n.signData(data)
}
func (n Node) signData(data []byte) ([]byte, error) {
func (n *Node) signData(data []byte) ([]byte, error) {
key := n.Peerstore().PrivKey(n.ID())
res, err := key.Sign(data)
return res, err
}
// precondition: we have info about the signer peer in the local peer store
func (n Node) verifyData(data []byte, signature []byte, peerId peer.ID, pubKeyData []byte) bool {
func (n *Node) verifyData(data []byte, signature []byte, peerId peer.ID, pubKeyData []byte) bool {
// todo: restore pub key from message and use it
// todo: restore pub key from message and not from the local peer store and use it
key := n.Peerstore().PubKey(peerId)
//todo: fix this
......@@ -79,7 +79,7 @@ func (n Node) verifyData(data []byte, signature []byte, peerId peer.ID, pubKeyDa
res, err := key.Verify(data, signature)
if err != nil {
log.Println("Error authenticating data")
log.Println ("Error authenticating data")
return false
}
......
......@@ -10,8 +10,8 @@ message MessageData {
string id = 3; // allows requesters to use request data when processing a response
bool gossip = 4; // true to have receiver peer gossip the message to neighbors
string nodeId = 5; // id of node that created the message (not the peer that may have sent it). =base58(mh(sha256(nodePubKey)))
bytes nodePubKey = 6; // node's Secp256k1 public key bytes (32bytes)
string sign = 7; // signature of message data + method specific data by message authoring node
bytes nodePubKey = 6; // Authoring node Secp256k1 public key (32bytes)
string sign = 7; // signature of message data + method specific data by message authoring node
}
//// ping protocol
......
......@@ -33,7 +33,7 @@ func NewPingProtocol(node *Node, done chan bool) *PingProtocol {
}
// remote peer requests handler
func (p PingProtocol) onPingRequest(s inet.Stream) {
func (p *PingProtocol) onPingRequest(s inet.Stream) {
// get request data
data := &p2p.PingRequest{}
......@@ -86,7 +86,7 @@ func (p PingProtocol) onPingRequest(s inet.Stream) {
}
// remote ping response handler
func (p PingProtocol) onPingResponse(s inet.Stream) {
func (p *PingProtocol) onPingResponse(s inet.Stream) {
data := &p2p.PingResponse{}
decoder := protobufCodec.Multicodec(nil).Decoder(bufio.NewReader(s))
err := decoder.Decode(data)
......@@ -117,7 +117,7 @@ func (p PingProtocol) onPingResponse(s inet.Stream) {
p.done <- true
}
func (p PingProtocol) Ping(host host.Host) bool {
func (p *PingProtocol) Ping(host host.Host) bool {
log.Printf("%s: Sending ping to: %s....", p.node.ID(), host.ID())
// create message data
......
......@@ -37,7 +37,7 @@ func NewMessageData(node *Node, messageId string, gossip bool) *p2p.MessageData
nodePubKey, err := node.Peerstore().PubKey(node.ID()).Bytes()
if err != nil {
panic("Failed to get public key for sender node from peer store.")
panic("Failed to get public key for sender from local peer store.")
}
return &p2p.MessageData{ClientVersion: clientVersion,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment