diff options
Diffstat (limited to 'src/gnunet/cmd/peer_mockup/main.go')
-rw-r--r-- | src/gnunet/cmd/peer_mockup/main.go | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/src/gnunet/cmd/peer_mockup/main.go b/src/gnunet/cmd/peer_mockup/main.go index 96f62da..4d29927 100644 --- a/src/gnunet/cmd/peer_mockup/main.go +++ b/src/gnunet/cmd/peer_mockup/main.go | |||
@@ -15,6 +15,7 @@ import ( | |||
15 | "gnunet/message" | 15 | "gnunet/message" |
16 | "gnunet/service" | 16 | "gnunet/service" |
17 | 17 | ||
18 | "github.com/bfix/gospel/crypto/ed25519" | ||
18 | "github.com/bfix/gospel/logger" | 19 | "github.com/bfix/gospel/logger" |
19 | ) | 20 | ) |
20 | 21 | ||
@@ -33,10 +34,9 @@ var ( | |||
33 | }, | 34 | }, |
34 | } | 35 | } |
35 | // configuration for remote node | 36 | // configuration for remote node |
36 | remoteCfg = "3GXXMNb5YpIUO7ejIR2Yy0Cf5texuLfDjHkXcqbPxkc=" | 37 | remoteCfg = "3GXXMNb5YpIUO7ejIR2Yy0Cf5texuLfDjHkXcqbPxkc=" |
37 | remoteAddr = "udp://172.17.0.5:2086" | ||
38 | 38 | ||
39 | // top-level variables used accross functions | 39 | // top-level variables used across functions |
40 | local *core.Peer // local peer (with private key) | 40 | local *core.Peer // local peer (with private key) |
41 | remote *core.Peer // remote peer | 41 | remote *core.Peer // remote peer |
42 | c *core.Core | 42 | c *core.Core |
@@ -79,7 +79,9 @@ func main() { | |||
79 | 79 | ||
80 | if !asServer { | 80 | if !asServer { |
81 | // we start the message exchange | 81 | // we start the message exchange |
82 | c.Send(ctx, remote.GetID(), message.NewTransportTCPWelcomeMsg(c.PeerID())) | 82 | if err := c.Send(ctx, remote.GetID(), message.NewTransportTCPWelcomeMsg(c.PeerID())); err != nil { |
83 | fmt.Printf("send message failed: %s", err.Error()) | ||
84 | } | ||
83 | } | 85 | } |
84 | 86 | ||
85 | // handle OS signals | 87 | // handle OS signals |
@@ -117,23 +119,27 @@ loop: | |||
117 | // process incoming messages and send responses; it is used for protocol exploration only. | 119 | // process incoming messages and send responses; it is used for protocol exploration only. |
118 | // it tries to mimick the message flow between "real" GNUnet peers. | 120 | // it tries to mimick the message flow between "real" GNUnet peers. |
119 | func process(ctx context.Context, ev *core.Event) { | 121 | func process(ctx context.Context, ev *core.Event) { |
120 | |||
121 | logger.Printf(logger.DBG, "<<< %s", ev.Msg.String()) | 122 | logger.Printf(logger.DBG, "<<< %s", ev.Msg.String()) |
122 | 123 | ||
123 | switch msg := ev.Msg.(type) { | 124 | switch msg := ev.Msg.(type) { |
124 | |||
125 | case *message.TransportTCPWelcomeMsg: | 125 | case *message.TransportTCPWelcomeMsg: |
126 | c.Send(ctx, ev.Peer, message.NewTransportPingMsg(ev.Peer, nil)) | 126 | if err := c.Send(ctx, ev.Peer, message.NewTransportPingMsg(ev.Peer, nil)); err != nil { |
127 | logger.Printf(logger.ERROR, "TransportTCPWelcomeMsg send failed: %s", err.Error()) | ||
128 | return | ||
129 | } | ||
127 | 130 | ||
128 | case *message.HelloMsg: | 131 | case *message.HelloMsg: |
129 | 132 | ||
130 | case *message.TransportPingMsg: | 133 | case *message.TransportPingMsg: |
131 | mOut := message.NewTransportPongMsg(msg.Challenge, nil) | 134 | mOut := message.NewTransportPongMsg(msg.Challenge, nil) |
132 | if err := mOut.Sign(local.PrvKey()); err != nil { | 135 | if err := mOut.Sign(local.PrvKey()); err != nil { |
133 | logger.Println(logger.ERROR, "PONG: signing failed") | 136 | logger.Printf(logger.ERROR, "PONG signing failed: %s", err.Error()) |
137 | return | ||
138 | } | ||
139 | if err := c.Send(ctx, ev.Peer, mOut); err != nil { | ||
140 | logger.Printf(logger.ERROR, "TransportPongMsg send failed: %s", err.Error()) | ||
134 | return | 141 | return |
135 | } | 142 | } |
136 | c.Send(ctx, ev.Peer, mOut) | ||
137 | logger.Printf(logger.DBG, ">>> %s", mOut) | 143 | logger.Printf(logger.DBG, ">>> %s", mOut) |
138 | 144 | ||
139 | case *message.TransportPongMsg: | 145 | case *message.TransportPongMsg: |
@@ -148,7 +154,9 @@ func process(ctx context.Context, ev *core.Event) { | |||
148 | case *message.SessionSynMsg: | 154 | case *message.SessionSynMsg: |
149 | mOut := message.NewSessionSynAckMsg() | 155 | mOut := message.NewSessionSynAckMsg() |
150 | mOut.Timestamp = msg.Timestamp | 156 | mOut.Timestamp = msg.Timestamp |
151 | c.Send(ctx, ev.Peer, mOut) | 157 | if err := c.Send(ctx, ev.Peer, mOut); err != nil { |
158 | logger.Printf(logger.ERROR, "SessionSynAckMsg send failed: %s", err.Error()) | ||
159 | } | ||
152 | logger.Printf(logger.DBG, ">>> %s", mOut) | 160 | logger.Printf(logger.DBG, ">>> %s", mOut) |
153 | 161 | ||
154 | case *message.SessionQuotaMsg: | 162 | case *message.SessionQuotaMsg: |
@@ -157,7 +165,9 @@ func process(ctx context.Context, ev *core.Event) { | |||
157 | 165 | ||
158 | case *message.SessionKeepAliveMsg: | 166 | case *message.SessionKeepAliveMsg: |
159 | mOut := message.NewSessionKeepAliveRespMsg(msg.Nonce) | 167 | mOut := message.NewSessionKeepAliveRespMsg(msg.Nonce) |
160 | c.Send(ctx, ev.Peer, mOut) | 168 | if err := c.Send(ctx, ev.Peer, mOut); err != nil { |
169 | logger.Printf(logger.ERROR, "SessionKeepAliveRespMsg send failed: %s", err.Error()) | ||
170 | } | ||
161 | logger.Printf(logger.DBG, ">>> %s", mOut) | 171 | logger.Printf(logger.DBG, ">>> %s", mOut) |
162 | 172 | ||
163 | case *message.EphemeralKeyMsg: | 173 | case *message.EphemeralKeyMsg: |
@@ -171,9 +181,13 @@ func process(ctx context.Context, ev *core.Event) { | |||
171 | } | 181 | } |
172 | remote.SetEphKeyMsg(msg) | 182 | remote.SetEphKeyMsg(msg) |
173 | mOut := local.EphKeyMsg() | 183 | mOut := local.EphKeyMsg() |
174 | c.Send(ctx, ev.Peer, mOut) | 184 | if err := c.Send(ctx, ev.Peer, mOut); err != nil { |
185 | logger.Printf(logger.ERROR, "EphKeyMsg send failed: %s", err.Error()) | ||
186 | } | ||
175 | logger.Printf(logger.DBG, ">>> %s", mOut) | 187 | logger.Printf(logger.DBG, ">>> %s", mOut) |
176 | secret = crypto.SharedSecret(local.EphPrvKey(), remote.EphKeyMsg().Public()) | 188 | pk := ed25519.NewPublicKeyFromBytes(remote.EphKeyMsg().Public().Data) |
189 | secret = crypto.SharedSecret(local.EphPrvKey(), pk) | ||
190 | fmt.Printf("Shared secret: %s\n", secret.String()) | ||
177 | 191 | ||
178 | default: | 192 | default: |
179 | fmt.Printf("!!! %v\n", msg) | 193 | fmt.Printf("!!! %v\n", msg) |