X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcadet%2Fgnunet-service-cadet_channel.h;h=16517c457b62d0041345b388cf1d0dd8ebc844d9;hb=990c536e0f1c4adce5ba49897e2084d6296fdafc;hp=a3ef9a06d7c85981b8e1986e4853c793f48aa51e;hpb=aa98f144e6db0da5a0a4cad83fe64a80bbab6692;p=oweals%2Fgnunet.git diff --git a/src/cadet/gnunet-service-cadet_channel.h b/src/cadet/gnunet-service-cadet_channel.h index a3ef9a06d..16517c457 100644 --- a/src/cadet/gnunet-service-cadet_channel.h +++ b/src/cadet/gnunet-service-cadet_channel.h @@ -1,4 +1,3 @@ - /* This file is part of GNUnet. Copyright (C) 2001-2017 GNUnet e.V. @@ -44,6 +43,21 @@ struct CadetChannel; +/** + * Hash the @a port and @a initiator and @a listener to + * calculate the "challenge" @a h_port we send to the other + * peer on #GNUNET_MESSAGE_TYPE_CADET_CHANNEL_OPEN. + * + * @param[out] h_port set to the hash of @a port, @a initiator and @a listener + * @param port cadet port, as seen by CADET clients + * @param listener peer that is listining on @a port + */ +void +GCCH_hash_port (struct GNUNET_HashCode *h_port, + const struct GNUNET_HashCode *port, + const struct GNUNET_PeerIdentity *listener); + + /** * Get the static string for identification of the channel. * @@ -101,11 +115,13 @@ GCCH_channel_local_new (struct CadetClient *owner, * request and establish the link with the client. * * @param ch open incoming channel - * @param c client listening on the respective port + * @param c client listening on the respective @a port + * @param port port number @a c is listening on */ void GCCH_bind (struct CadetChannel *ch, - struct CadetClient *c); + struct CadetClient *c, + const struct GNUNET_HashCode *port); /** @@ -142,14 +158,14 @@ GCCH_tunnel_up (struct CadetChannel *ch); * @param t tunnel to the remote peer * @param chid identifier of this channel in the tunnel * @param origin peer to who initiated the channel - * @param port desired local port + * @param h_port hash of desired local port * @param options options for the channel * @return handle to the new channel */ struct CadetChannel * GCCH_channel_incoming_new (struct CadetTunnel *t, struct GNUNET_CADET_ChannelTunnelNumber chid, - const struct GNUNET_HashCode *port, + const struct GNUNET_HashCode *h_port, uint32_t options); @@ -201,10 +217,12 @@ GCCH_handle_channel_plaintext_data_ack (struct CadetChannel *ch, * @param ch channel to destroy * @param cti identifier of the connection that delivered the message, * NULL if the ACK was inferred because we got payload or are on loopback + * @param port port number (needed to verify receiver knows the port) */ void GCCH_handle_channel_open_ack (struct CadetChannel *ch, - const struct GNUNET_CADET_ConnectionTunnelIdentifier *cti); + const struct GNUNET_CADET_ConnectionTunnelIdentifier *cti, + const struct GNUNET_HashCode *port); /**