mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 08:00:38 +03:00
encrypt Data header
This commit is contained in:
parent
7e7aee27b6
commit
371a339b18
@ -380,6 +380,8 @@ namespace transport
|
|||||||
HandlePayload (decryptedPayload.data () + riSize + 3, decryptedPayload.size () - riSize - 3);
|
HandlePayload (decryptedPayload.data () + riSize + 3, decryptedPayload.size () - riSize - 3);
|
||||||
KDFDataPhase (m_KeyDataReceive, m_KeyDataSend);
|
KDFDataPhase (m_KeyDataReceive, m_KeyDataSend);
|
||||||
Established ();
|
Established ();
|
||||||
|
|
||||||
|
SendQuickAck ();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -523,6 +525,11 @@ namespace transport
|
|||||||
|
|
||||||
void SSU2Session::SendData (const uint8_t * buf, size_t len)
|
void SSU2Session::SendData (const uint8_t * buf, size_t len)
|
||||||
{
|
{
|
||||||
|
if (len < 8)
|
||||||
|
{
|
||||||
|
LogPrint (eLogWarning, "SSU2: Data message payload is too short ", (int)len);
|
||||||
|
return;
|
||||||
|
}
|
||||||
Header header;
|
Header header;
|
||||||
header.h.connID = m_DestConnID;
|
header.h.connID = m_DestConnID;
|
||||||
header.h.packetNum = htobe32 (m_SendPacketNum);
|
header.h.packetNum = htobe32 (m_SendPacketNum);
|
||||||
@ -532,6 +539,8 @@ namespace transport
|
|||||||
uint8_t nonce[12];
|
uint8_t nonce[12];
|
||||||
CreateNonce (m_SendPacketNum, nonce);
|
CreateNonce (m_SendPacketNum, nonce);
|
||||||
i2p::crypto::AEADChaCha20Poly1305 (buf, len, header.buf, 16, m_KeyDataSend, nonce, payload, SSU2_MTU, true);
|
i2p::crypto::AEADChaCha20Poly1305 (buf, len, header.buf, 16, m_KeyDataSend, nonce, payload, SSU2_MTU, true);
|
||||||
|
header.ll[0] ^= CreateHeaderMask (m_Address->i, payload + (len - 8));
|
||||||
|
header.ll[1] ^= CreateHeaderMask (m_KeyDataSend + 32, payload + (len + 4));
|
||||||
m_Server.Send (header.buf, 16, payload, len + 16, m_RemoteEndpoint);
|
m_Server.Send (header.buf, 16, payload, len + 16, m_RemoteEndpoint);
|
||||||
m_SendPacketNum++;
|
m_SendPacketNum++;
|
||||||
m_LastActivityTimestamp = i2p::util::GetSecondsSinceEpoch ();
|
m_LastActivityTimestamp = i2p::util::GetSecondsSinceEpoch ();
|
||||||
|
Loading…
Reference in New Issue
Block a user