generate msgid from instead RAND_bytes

This commit is contained in:
orignal
2026-08-08 14:38:11 -04:00
parent 60678683ab
commit 6b100353ba
6 changed files with 9 additions and 18 deletions
+1 -1
View File
@@ -474,7 +474,7 @@ namespace datagram
htobe16buf (buf + 6, toPort); // destination port
buf[9] = protocolType; // raw or datagram protocol
msg->len += size + 4;
msg->FillI2NPMessageHeader (eI2NPData, 0, checksum);
msg->FillI2NPMessageHeader (eI2NPData, m_Owner->GetRng ()(), checksum);
}
else
msg = nullptr;
+1 -1
View File
@@ -1123,7 +1123,7 @@ namespace garlic
htobe32buf (m->GetPayload (), len);
m->len += len + 4;
m->FillI2NPMessageHeader (eI2NPGarlic);
m->FillI2NPMessageHeader (eI2NPGarlic, GetOwner ()->GetRng ()());
return m;
}
+3 -11
View File
@@ -49,24 +49,16 @@ namespace i2p
return NewI2NPMessage ();
}
void I2NPMessage::FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t replyMsgID, bool checksum)
void I2NPMessage::FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t msgID, bool checksum)
{
SetTypeID (msgType);
if (!replyMsgID) RAND_bytes ((uint8_t *)&replyMsgID, 4);
SetMsgID (replyMsgID);
if (!msgID) RAND_bytes ((uint8_t *)&msgID, 4);
SetMsgID (msgID);
SetExpiration (i2p::util::GetMillisecondsSinceEpoch () + I2NP_MESSAGE_EXPIRATION_TIMEOUT);
UpdateSize ();
if (checksum) UpdateChks ();
}
void I2NPMessage::RenewI2NPMessageHeader ()
{
uint32_t msgID;
RAND_bytes ((uint8_t *)&msgID, 4);
SetMsgID (msgID);
SetExpiration (i2p::util::GetMillisecondsSinceEpoch () + I2NP_MESSAGE_EXPIRATION_TIMEOUT);
}
bool I2NPMessage::IsExpired (uint64_t ts) const
{
auto exp = GetExpiration ();
+1 -2
View File
@@ -246,8 +246,7 @@ namespace tunnel
memcpy (ntcp2 + I2NP_HEADER_TYPEID_OFFSET, GetHeader () + I2NP_HEADER_TYPEID_OFFSET, 5); // typeid + msgid
}
void FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t replyMsgID = 0, bool checksum = true);
void RenewI2NPMessageHeader ();
void FillI2NPMessageHeader (I2NPMessageType msgType, uint32_t msgID = 0, bool checksum = true);
bool IsExpired () const;
bool IsExpired (uint64_t ts) const; // in milliseconds
+1 -1
View File
@@ -2513,7 +2513,7 @@ namespace stream
htobe16buf (buf + 6, toPort); // destination port
buf[9] = i2p::client::PROTOCOL_TYPE_STREAMING; // streaming protocol
msg->len += size;
msg->FillI2NPMessageHeader (eI2NPData, 0, checksum);
msg->FillI2NPMessageHeader (eI2NPData, m_Owner->GetRng ()(), checksum);
}
else
msg = nullptr;
+2 -2
View File
@@ -252,7 +252,7 @@ namespace client
htobe32buf (buf, len);
memcpy (buf + 4, payload, len);
msg->len += len + 4;
msg->FillI2NPMessageHeader (eI2NPData);
msg->FillI2NPMessageHeader (eI2NPData, GetRng ()());
auto remote = FindLeaseSet (ident);
if (remote)
{
@@ -393,7 +393,7 @@ namespace client
htobe32buf (buf, len);
memcpy (buf + 4, payload, len);
msg->len += len + 4;
msg->FillI2NPMessageHeader (eI2NPData);
msg->FillI2NPMessageHeader (eI2NPData, GetRng ()());
// wrap in gralic
auto garlic = remoteSession->WrapSingleMessage (msg);
// send