CADET_TUNNEL_KEY_UNINITIALIZED,
/**
- * Ephemeral key sent, waiting for peer's key.
+ * KX message sent, waiting for other peer's KX_AUTH.
*/
- CADET_TUNNEL_KEY_SENT,
+ CADET_TUNNEL_KEY_AX_SENT,
/**
- * Key received and we sent ours back, but we got no traffic yet.
+ * KX message received, trying to send back KX_AUTH.
+ */
+ CADET_TUNNEL_KEY_AX_RECV,
+
+ /**
+ * KX message sent and received, trying to send back KX_AUTH.
+ */
+ CADET_TUNNEL_KEY_AX_SENT_AND_RECV,
+
+ /**
+ * KX received and we sent KX_AUTH back, but we got no traffic yet,
+ * so we're waiting for either KX_AUTH or ENCRYPED traffic from
+ * the other peer.
+ *
* We will not yet send traffic, as this might have been a replay.
* The other (initiating) peer should send a CHANNEL_OPEN next
- * anyway.
+ * anyway, and then we are in business!
*/
- CADET_TUNNEL_KEY_PING,
+ CADET_TUNNEL_KEY_AX_AUTH_SENT,
/**
* Handshake completed: session key available.
*/
- CADET_TUNNEL_KEY_OK,
+ CADET_TUNNEL_KEY_OK
- /**
- * New ephemeral key and ping sent, waiting for pong. Unlike KEY_PING,
- * we still have a valid session key and therefore we *can* still send
- * traffic on the tunnel.
- */
- CADET_TUNNEL_KEY_REKEY
};
* @return number of connections available for the tunnel
*/
unsigned int
-GCT_count_any_connections (struct CadetTunnel *t);
+GCT_count_any_connections (const struct CadetTunnel *t);
/**
* Iterator over connections.
*
* @param cls closure
- * @param c one of the connections
+ * @param ct one of the connections
*/
typedef void
(*GCT_ConnectionIterator) (void *cls,
- struct CadetConnection *c);
+ struct CadetTConnection *ct);
/**
const struct GNUNET_CADET_TunnelKeyExchangeMessage *msg);
+/**
+ * Handle KX_AUTH message.
+ *
+ * @param ct connection/tunnel combo that received encrypted message
+ * @param msg the key exchange message
+ */
+void
+GCT_handle_kx_auth (struct CadetTConnection *ct,
+ const struct GNUNET_CADET_TunnelKeyExchangeAuthMessage *msg);
+
+
/**
* Handle encrypted message.
*