Skip to content

Commit

Permalink
Remove 2 bytes header from hanshake messages
Browse files Browse the repository at this point in the history
  • Loading branch information
UnidenifiedUser committed Dec 14, 2023
1 parent dcb8c7a commit 84a23d3
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 43 deletions.
34 changes: 7 additions & 27 deletions src/node/sv2_template_provider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -242,11 +242,9 @@ void Sv2TemplateProvider::ThreadSv2Handler()
try
{
if (!client->m_noise->HandshakeComplete()) {
auto headers_recv = ReadSv2NoiseHeaders(Span(bytes_received_buf), num_bytes_received);
for (auto& header : headers_recv)
{
ProcessSv2Noise(*client.get(), header.m_payload);
}
auto msg_ = Span(bytes_received_buf, num_bytes_received);
std::span<std::byte> msg(reinterpret_cast<std::byte*>(msg_.data()), msg_.size());
ProcessSv2Noise(*client.get(), msg);
} else {
auto sv2_msgs = ReadAndDecryptSv2NetMsgs(*client.get(), Span(bytes_received_buf), num_bytes_received);

Expand Down Expand Up @@ -274,12 +272,11 @@ void Sv2TemplateProvider::ProcessSv2Noise(Sv2Client& client, Span<std::byte> buf
client.m_noise->ReadMsg(buffer);

// Send the Msg ES.
Sv2NoiseHeader msg_es;
auto num_bytes = client.m_noise->SendMsg(msg_es.m_payload);
msg_es.m_header = num_bytes;
msg_es.m_payload.resize(num_bytes);
std::byte msg_es[170];
std::span<std::byte> msg_es_span(msg_es, 170);
auto _num_bytes = client.m_noise->SendMsg(msg_es);

if (!Send(client, msg_es)) {
if (!SendBuf(client, msg_es_span)) {
throw std::runtime_error("Sv2TemplateProvider::ProcessSv2Message(): Failed to send Msg ES to client\n");
}
break;
Expand Down Expand Up @@ -635,23 +632,6 @@ std::vector<std::byte> Sv2TemplateProvider::BuildEncryptedHeader(const node::Sv2
return msg_buf;
};

std::vector<Sv2NoiseHeader> Sv2TemplateProvider::ReadSv2NoiseHeaders(Span<uint8_t> buffer, ssize_t num_bytes)
{
auto bytes_read = 0;
DataStream ss (buffer);
std::vector<Sv2NoiseHeader> headers;
while (bytes_read < num_bytes)
{
Sv2NoiseHeader header;
ss >> header;

bytes_read += header.m_header + 2;
headers.push_back(std::move(header));
}

return headers;
}

std::vector<node::Sv2NetMsg> Sv2TemplateProvider::ReadAndDecryptSv2NetMsgs(Sv2Client& client, Span<uint8_t> buffer, ssize_t num_bytes)
{
auto bytes_read = 0;
Expand Down
16 changes: 0 additions & 16 deletions src/node/sv2_template_provider.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,22 +266,6 @@ class Sv2TemplateProvider
*/
std::vector<node::Sv2NetMsg> ReadAndDecryptSv2NetMsgs(Sv2Client& client, Span<uint8_t> buffer, ssize_t num_bytes);

/**
* A helper method that will serialize and send a message to an Sv2Client.
*/
template <typename T>
[[nodiscard]] bool Send(const Sv2Client& client, const T& sv2_msg) {
DataStream ss{};

try {
ss << sv2_msg;
} catch (const std::exception& e) {
LogPrintf("Error serializing Sv2NetMsg: %s\n", e.what());
return false;
}

return SendBuf(client, ss);
}

/**
* A helper method that will send a buffer of bytes to an Sv2Client.
Expand Down

0 comments on commit 84a23d3

Please sign in to comment.