From a78c8461d62b37167738bb11fd05d8efec8c173f Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Mon, 9 Feb 2015 04:54:12 +0000 Subject: [PATCH] Remove client-side code for channel setup, headed toward a dumb client. --- auth-client.cc | 7 +------ crypto.cc | 31 ++++++++++--------------------- crypto.h | 6 ++---- 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/auth-client.cc b/auth-client.cc index 87ea0df..87737d2 100644 --- a/auth-client.cc +++ b/auth-client.cc @@ -10,7 +10,6 @@ static const struct option long_options[] = { {"server_public_key_filename", required_argument, NULL, 'r'}, {"server_address", required_argument, NULL, 'a'}, {"server_port", required_argument, NULL, 't'}, - {"channel_bitrate", required_argument, NULL, 'b'}, }; int main(int argc, char *argv[]) { @@ -19,7 +18,6 @@ int main(int argc, char *argv[]) { std::string server_public_key_filename; std::string server_address; std::string server_port; - std::list channel_bitrates; { int option, option_index; while ((option = getopt_long(argc, argv, "s:", long_options, &option_index)) != -1) { @@ -39,9 +37,6 @@ int main(int argc, char *argv[]) { case 't': server_port = optarg; break; - case 'b': - channel_bitrates.push_back(strtoul(optarg, NULL, 10)); - break; } } } @@ -54,7 +49,7 @@ int main(int argc, char *argv[]) { PublicKey server_public_key; server_public_key.ReadFromFile(server_public_key_filename); - auto client = CryptoPubClient::FromHostname(server_address, server_port, secret_key, server_public_key, channel_bitrates); + auto client = CryptoPubClient::FromHostname(server_address, server_port, secret_key, server_public_key); client->Loop(); std::cerr << "Shutting down" << std::endl; diff --git a/crypto.cc b/crypto.cc index 108ed57..c907793 100644 --- a/crypto.cc +++ b/crypto.cc @@ -24,13 +24,16 @@ #define TLV_TYPE_ENCRYPTED_BLOB 0x0000 #define TLV_TYPE_NONCE 0x0001 #define TLV_TYPE_PUBLIC_KEY 0x0002 -#define TLV_TYPE_DOWNSTREAM_BITRATE 0x0003 +#define TLV_TYPE_OPAQUE 0x0003 +#define TLV_TYPE_DOWNSTREAM_BITRATE 0x0004 #define TLV_TYPE_ENCRYPTED 0x8000 #define TLV_TYPE_HANDSHAKE 0x8001 #define TLV_TYPE_HANDSHAKE_SECURE 0x8002 -#define TLV_TYPE_TUNNEL_REQUEST 0x8003 -#define TLV_TYPE_CHANNEL 0x8004 +#define TLV_TYPE_PING 0x8003 +#define TLV_TYPE_PONG 0x8004 +#define TLV_TYPE_TUNNEL_REQUEST 0x8005 +#define TLV_TYPE_CHANNEL 0x8006 void CryptoUtil::GenKey(SharedKey* key) { @@ -465,10 +468,9 @@ void CryptoPubServerConnection::OnError(const short what) { } -CryptoPubClient::CryptoPubClient(struct sockaddr* addr, socklen_t addrlen, const SecretKey& secret_key, const PublicKey& server_public_key, const std::list& channel_bitrates) +CryptoPubClient::CryptoPubClient(struct sockaddr* addr, socklen_t addrlen, const SecretKey& secret_key, const PublicKey& server_public_key) : CryptoPubConnBase(secret_key), - event_base_(event_base_new()), - channel_bitrates_(channel_bitrates) { + event_base_(event_base_new()) { bev_ = bufferevent_socket_new(event_base_, -1, BEV_OPT_CLOSE_ON_FREE); peer_public_key_.FromString(server_public_key.AsString()); CryptoUtil::PrecalculateKey(secret_key_, peer_public_key_, &precalc_key_); @@ -483,14 +485,14 @@ CryptoPubClient::~CryptoPubClient() { event_base_free(event_base_); } -CryptoPubClient* CryptoPubClient::FromHostname(const std::string& server_address, const std::string& server_port, const SecretKey& secret_key, const PublicKey& server_public_key, const std::list& channel_bitrates) { +CryptoPubClient* CryptoPubClient::FromHostname(const std::string& server_address, const std::string& server_port, const SecretKey& secret_key, const PublicKey& server_public_key) { struct addrinfo* res; int gai_ret = getaddrinfo(server_address.c_str(), server_port.c_str(), NULL, &res); if (gai_ret) { std::cerr << "Failed to resolve server_address: " << gai_strerror(gai_ret) << std::endl; return nullptr; } - auto ret = new CryptoPubClient((struct sockaddr*)res->ai_addr, res->ai_addrlen, secret_key, server_public_key, channel_bitrates); + auto ret = new CryptoPubClient((struct sockaddr*)res->ai_addr, res->ai_addrlen, secret_key, server_public_key); freeaddrinfo(res); return ret; } @@ -502,8 +504,6 @@ void CryptoPubClient::OnHandshake(const TLVNode& decoded) { this->state_ = READY; Log() << "Handshake successful" << std::endl; - - SendTunnelRequest(); } bool CryptoPubClient::OnMessage(const TLVNode& message) { @@ -527,17 +527,6 @@ void CryptoPubClient::OnConnect() { SendHandshake(); } -void CryptoPubClient::SendTunnelRequest() { - TLVNode tunnel_request(TLV_TYPE_TUNNEL_REQUEST); - for (auto channel_bitrate : channel_bitrates_) { - auto channel = new TLVNode(TLV_TYPE_CHANNEL); - channel_bitrate = htonl(channel_bitrate); - channel->AppendChild(new TLVNode(TLV_TYPE_DOWNSTREAM_BITRATE, std::string((char*)&channel_bitrate, sizeof(channel_bitrate)))); - tunnel_request.AppendChild(channel); - } - EncryptSend(tunnel_request); -} - void CryptoPubClient::OnError() { Log() << "Connection error" << std::endl; } diff --git a/crypto.h b/crypto.h index a901931..7ee79cf 100644 --- a/crypto.h +++ b/crypto.h @@ -146,10 +146,10 @@ class CryptoPubServerConnection : public CryptoPubConnBase { class CryptoPubClient : public CryptoPubConnBase { public: - CryptoPubClient(struct sockaddr* addr, socklen_t addrlen, const SecretKey& secret_key, const PublicKey& server_public_key, const std::list& channel_bitrates); + CryptoPubClient(struct sockaddr* addr, socklen_t addrlen, const SecretKey& secret_key, const PublicKey& server_public_key); ~CryptoPubClient(); - static CryptoPubClient* FromHostname(const std::string& server_address, const std::string& server_port, const SecretKey& secret_key, const PublicKey& server_public_key, const std::list& channel_bitrates); + static CryptoPubClient* FromHostname(const std::string& server_address, const std::string& server_port, const SecretKey& secret_key, const PublicKey& server_public_key); void Loop(); @@ -164,6 +164,4 @@ class CryptoPubClient : public CryptoPubConnBase { void SendTunnelRequest(); struct event_base* event_base_; - - const std::list channel_bitrates_; };