//---------------------------------------------------------------------------------- void TNetControlTCP::Send(unsigned int ip, unsigned short port, TBreakPacket& bp) { // добавить заголовки в начало - 2 байт под заголовок + 4 байта - размер данных THeaderTCP header; header.size = bp.GetSize(); bp.PushFront((char*)&header, sizeof(header)); bp.Collect(); char* data = (char*)bp.GetCollectPtr(); int size = bp.GetSize(); RequestSend(data,size); }
bool TCryptMITM::Calc(void* rsa, int size_rsa, void* pLogin, int sizeLogin, void* pPassword, int sizePassword, TContainer& c_result) { TContainer cAES_RSA; // зашифровать публичный ключ RSA с помощью AES, используя в качестве ключа пароль TContainer cMD5_Password; TMD5 md5Password; md5Password.FastCalc(pPassword, sizePassword, cMD5_Password); TCryptoAES_Impl crypt_aes; crypt_aes.SetPublicKey(cMD5_Password.GetPtr(), cMD5_Password.GetSize()); if(crypt_aes.Encrypt(rsa, size_rsa, cAES_RSA)==false) return false; TBreakPacket bp; // зашифрованный RSA bp.PushFront(cAES_RSA.GetPtr(), cAES_RSA.GetSize()); // Login bp.PushFront((char*)pLogin, sizeLogin); // длина логина char lenLogin = sizeLogin; bp.PushFront(&lenLogin, sizeof(lenLogin)); // собрать bp.Collect(); // отдать собранный пакет c_result.Entrust((char*)bp.GetCollectPtr(), bp.GetSize()); // отцепиться bp.UnlinkCollect(); return true; }
//---------------------------------------------------------------------------------- void TNetControlTCP::Send( unsigned int ip, unsigned short port, TBreakPacket& bp ) { THistoryPacketTCP::PackForSend( bp ); bp.Collect(); char* data = (char*) bp.GetCollectPtr(); int size = bp.GetSize(); RequestSend( data, size ); }
//---------------------------------------------------------------------------------- void TNetControlUDP::Send( unsigned int ip, unsigned short port, TBreakPacket& bp ) { // формируем заголовок TIP_Port ip_port( ip, port ); unsigned short count_out = IncreaseCntOut( ip_port ); bp.PushFront( (char*) &count_out, sizeof( count_out ) ); bp.Collect(); char* data = (char*) bp.GetCollectPtr(); int size = bp.GetSize(); RequestSendTo( data, size, ip_port ); }
//---------------------------------------------------------------------------------- TContainer TBasePacket_PCS::Pack() { TBreakPacket bp; bp.PushBack( (char*)&mType, sizeof(mType)); TContainer fromInherit = PackInherit(); bp.PushBack( fromInherit.GetPtr(), fromInherit.GetSize() ); bp.Collect(); TContainer result; result.Entrust( (char*)bp.GetCollectPtr(), bp.GetSize() ); bp.UnlinkCollect(); return result; }