Paylaşımınız İçin Teşekkürler Ben Böyle Bir Yöntem Denedim Sizce Faydalımıdır Bilginiz Almak İsterim.
[CODE lang="cpp" title="Ciper.cpp"]size_t Cipher:
repare(void* buffer, size_t* length)
{
if (key_agreement_ != NULL)
{
sys_err("Cipher:
repare() called more than once — ignored");
return 0;
}
key_agreement_ = new DH2KeyAgreement();
if (key_agreement_ == NULL)
{
sys_err("Cipher:
repare() failed — alloc error");
return 0;
}
size_t agreed_length = key_agreement_->Prepare(buffer, length);
if (agreed_length == 0)
{
delete key_agreement_;
key_agreement_ = NULL;
}
return agreed_length;
}[/CODE]
[CODE lang="cpp" title="input.cpp"]void CInputProcessor::Handshake(LPDESC d, const char * c_pData)
{
TPacketCGHandshake * p = (TPacketCGHandshake *) c_pData;
if (d->GetHandshake() != p->dwHandshake)
{
sys_err("Invalid Handshake on %d", d->GetSocket());
d->SetPhase(PHASE_CLOSE);
return;
}
if (!d->IsPhase(PHASE_HANDSHAKE))
{
sys_err("Handshake outside handshake phase on %d", d->GetSocket());
d->SetPhase(PHASE_CLOSE);
return;
}
if (!d->HandshakeProcess(p->dwTime, p->lDelta, false))
return;
#ifdef ENABLE_IMPR#ifdefACKET_ENCRYPTION
if (d->IsCipherPrepared())
{
sys_err("Duplicate handshake attempt on %d - cipher already prepared", d->GetSocket());
d->SetPhase(PHASE_CLOSE);
return;
}
d->SendKeyAgreement();
#else
if (g_bA#elserver)
d->SetPhase(PHASE_AUTH);
else
d->SetPhase(PHASE_LOGIN);
#endif
}[/CODE]#endif