本文整理汇总了C++中NetworkMessage::XTEADecrypt方法的典型用法代码示例。如果您正苦于以下问题:C++ NetworkMessage::XTEADecrypt方法的具体用法?C++ NetworkMessage::XTEADecrypt怎么用?C++ NetworkMessage::XTEADecrypt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetworkMessage
的用法示例。
在下文中一共展示了NetworkMessage::XTEADecrypt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ONThreadSafe
bool Protocol79::CharlistLogin(const char *username, const char *password) {
NetworkMessage nm;
ONThreadSafe(threadsafe);
connectiontype = CHARLIST;
nm.AddU8(0x01); // protocol id
nm.AddU16(0x02); // client OS
nm.AddU16(protocolversion);
nm.AddU32(fingerprints[FINGERPRINT_TIBIADAT]); // tibia.dat
nm.AddU32(fingerprints[FINGERPRINT_TIBIASPR]); // tibia.spr
nm.AddU32(fingerprints[FINGERPRINT_TIBIAPIC]); // tibia.pic
nm.RSABegin();
// encryption keys
for (int i = 0 ; i < 4 ; i++) {
nm.AddU32(key[i]);
}
// account number and password
nm.AddU32(atol((this->username = username).c_str()));
nm.AddString(this->password = password);
nm.RSAEncrypt();
if (!nm.Dump(s)) {
this->errormsg = "Could not write to socket.\nPossible it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
ONThreadUnsafe(threadsafe);
return false;
}
nm.Clean();
if (!nm.FillFromSocket(s)) {
this->errormsg = "Could not read from socket.\nPossibly it's a premature disconnect.\n\nCheck you typed in the correct protocol!";
ONThreadUnsafe(threadsafe);
return false;
}
printf("Okies, lets decrypt\n");
// this->Close();
nm.XTEADecrypt(key);
printf("Ok, decoded\n");
logonsuccessful = true;
while ((signed int)(nm.GetSize())>0 && ParsePacket(&nm));
if ((signed int)(nm.GetSize())>0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
ONThreadUnsafe(threadsafe);
return logonsuccessful;
}
示例2: while
bool Protocol77::GameworldLogin () {
// this is valid for 7.7!
// 7.72 has a bit different order of stuff! check out old outcast's sources
NetworkMessage nm;
connectiontype = GAMEWORLD;
nm.AddU8(0x0A); // protocol id
nm.RSABegin();
// encryption keys
for (int i = 0 ; i < 4 ; i++) {
nm.AddU32(key[i]);
}
// in 7.72 onwards move this BEFORE the keys and BEFORE the encryption
nm.AddU16(0x02); // client OS
nm.AddU16(protocolversion);
// are we a gamemaster
nm.AddChar(0);
// account number and password
nm.AddU32(atol(this->username.c_str())); // this does NOT exist before 7.4
nm.AddString(this->charlist[this->charlistselected]->charactername);
nm.AddString(this->password);
nm.RSAEncrypt();
// FIXME inside dump, we should check whether or not socket is still open
// or after dump, at least
nm.Dump(s);
nm.Clean();
nm.FillFromSocket(s );
nm.XTEADecrypt(key);
logonsuccessful = true;
while ((signed int)(nm.GetSize())>0 && ParsePacket(&nm));
if ((signed int)(nm.GetSize())!=0) printf("++++++++++++++++++++DIDNT EMPTY UP THE NETWORKMESSAGE!++++++++++++++++++\n");
if (logonsuccessful) active = true;
return logonsuccessful;
}