1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-06 10:47:45 +00:00
sapphire/src/lobby/LobbyPacketContainer.cpp

56 lines
1.6 KiB
C++
Raw Normal View History

2017-08-08 13:53:47 +02:00
#include "LobbyPacketContainer.h"
#include <Network/CommonNetwork.h>
2019-03-08 15:34:38 +01:00
#include <Network/GamePacket.h>
2018-03-06 22:22:19 +01:00
#include <Crypt/blowfish.h>
#include <Common.h>
2017-08-08 13:53:47 +02:00
using namespace Sapphire::Common;
using namespace Sapphire::Network::Packets;
Sapphire::Network::Packets::LobbyPacketContainer::LobbyPacketContainer( uint8_t* encKey )
{
memset( &m_header, 0, sizeof( Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER ) );
m_header.size = sizeof( Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER );
m_encKey = encKey;
memset( m_dataBuf, 0, 0x1570 );
}
Sapphire::Network::Packets::LobbyPacketContainer::~LobbyPacketContainer()
{
m_entryList.clear();
}
void Sapphire::Network::Packets::LobbyPacketContainer::addPacket( FFXIVPacketBasePtr pEntry )
{
memcpy( m_dataBuf + m_header.size, &pEntry->getData()[ 0 ], pEntry->getSize() );
// encryption key is set, we want to encrypt this packet
if( m_encKey != nullptr )
{
BlowFish blowfish;
blowfish.initialize( m_encKey, 0x10 );
blowfish.Encode( m_dataBuf + m_header.size + 0x10, m_dataBuf + m_header.size + 0x10, pEntry->getSize() - 0x10 );
}
m_header.size += pEntry->getSize();
m_header.count++;
}
uint16_t Sapphire::Network::Packets::LobbyPacketContainer::getSize() const
{
return m_header.size;
}
uint8_t* Sapphire::Network::Packets::LobbyPacketContainer::getRawData( bool addstuff )
{
if( addstuff )
{
m_header.unknown_0 = 0xff41a05252;
m_header.timestamp = Sapphire::Util::getTimeMs();
}
memcpy( m_dataBuf, &m_header, sizeof( Sapphire::Network::Packets::FFXIVARR_PACKET_HEADER ) );
return m_dataBuf;
2017-08-08 13:53:47 +02:00
}