From cb46d63058a3127d34a5457b4cdd4ce48d8fa75f Mon Sep 17 00:00:00 2001 From: orignal Date: Thu, 18 Sep 2014 14:16:16 -0400 Subject: [PATCH] read Identity from SessionConfirmed message --- SSU.cpp | 16 +++++++++++++++- SSU.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/SSU.cpp b/SSU.cpp index 1949db42..d5fbdca6 100644 --- a/SSU.cpp +++ b/SSU.cpp @@ -226,7 +226,21 @@ namespace ssu void SSUSession::ProcessSessionConfirmed (uint8_t * buf, size_t len) { - LogPrint ("Session confirmed received"); + LogPrint ("Session confirmed received"); + uint8_t * payload = buf + sizeof (SSUHeader); + payload++; // identity fragment info + uint16_t identitySize = be16toh (*(uint16_t *)payload); + payload += 2; // size of identity fragment + if (identitySize == i2p::data::DEFAULT_IDENTITY_SIZE) + { + i2p::data::Identity ident; + ident.FromBuffer (payload, identitySize); + m_RemoteIdent = ident.Hash (); + } + else + LogPrint ("SSU unexpected identity size ", identitySize); + payload += identitySize; // identity + // TODO: verify signature SendI2NPMessage (CreateDeliveryStatusMsg (0)); Established (); } diff --git a/SSU.h b/SSU.h index bcf1aecf..f69f8c4e 100644 --- a/SSU.h +++ b/SSU.h @@ -129,6 +129,7 @@ namespace ssu SSUServer& m_Server; boost::asio::ip::udp::endpoint m_RemoteEndpoint; const i2p::data::RouterInfo * m_RemoteRouter; + i2p::data::IdentHash m_RemoteIdent; // if m_RemoteRouter is null boost::asio::deadline_timer m_Timer; i2p::data::DHKeysPair * m_DHKeysPair; // X - for client and Y - for server bool m_PeerTest;