MCPcopy Create free account
hub / github.com/NoMercy-ac/NoMercy / RecvRSAKeyInfo

Method RecvRSAKeyInfo

Source/Client/NM_Engine/ClientSocketWorker.cpp:576–615  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

574}
575
576std::size_t CNetworkClient::RecvRSAKeyInfo(const void* data, std::size_t maxlength)
577{
578 if (maxlength < TPacketRsaKeyInfo::size())
579 return 0;
580
581 NETWORK_LOG(LL_SYS, "Got rsa info packet!");
582
583 // Read
584 auto packet = reinterpret_cast<const TPacketRsaKeyInfo*>(data);
585 auto pPublicRSAKey = DataBuffer(packet->cryptkey, packet->cryptkeysize);
586
587 m_pRSAClient.set_crypt_key(pPublicRSAKey);
588 DataBuffer pRsaData(m_pRSAClient.get_crypt_key().get_data(), m_pRSAClient.get_crypt_key().get_size());
589 memcpy(&m_pRSAKey, pRsaData.get_data(), NET_CRYPT_KEY_LENGTH);
590
591 // Answer
592 auto finalizePacket = std::make_shared<TPacketRsaKeyFinalize>();
593
594 // First arg | Dummy
595 auto ulRandomDataSize = g_nmApp->FunctionsInstance()->GetRandomInt(8, 16);
596 auto pFirstDummyData = g_nmApp->FunctionsInstance()->GetRandomData(ulRandomDataSize);
597 memcpy(finalizePacket->dummyDataFirst, pFirstDummyData, ulRandomDataSize);
598
599 // Second Arg | RSA key
600 auto szKeyHash = g_nmApp->DirFunctionsInstance()->GetSHA256(pRsaData.get_data(), pRsaData.get_size());
601 strcpy(finalizePacket->rsaKeyHash, szKeyHash.c_str());
602
603 // Third arg | Dummy
604 auto ulRandomDataSize2 = g_nmApp->FunctionsInstance()->GetRandomInt(12, 24);
605 auto pLastDummyData = g_nmApp->FunctionsInstance()->GetRandomData(ulRandomDataSize2);
606 memcpy(finalizePacket->dummyDataLast, pLastDummyData, ulRandomDataSize2);
607
608 // Magic
609 memcpy(finalizePacket->pMagic, gs_pNetworkMagicValue, sizeof(finalizePacket->pMagic));
610
611 // Send
612 SendCrypted(HEADER_CS_RSA_KEY_FINALIZE, finalizePacket.get(), finalizePacket->size());
613
614 return TPacketRsaKeyInfo::size();
615}
616
617std::size_t CNetworkClient::RecvEncryptionReadyNotification(const void* data, std::size_t maxlength)
618{

Callers

nothing calls this directly

Calls 13

sizeClass · 0.85
set_crypt_keyMethod · 0.80
GetRandomIntMethod · 0.80
FunctionsInstanceMethod · 0.80
GetRandomDataMethod · 0.80
GetSHA256Method · 0.80
DirFunctionsInstanceMethod · 0.80
DataBufferClass · 0.50
get_dataMethod · 0.45
get_crypt_keyMethod · 0.45
get_sizeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected