public static function GenerateSecretKeyMessageEvent(User $user, PacketParser $packet, ClassContainer $util) { if ($util->Config->Get("crypto.enabled")) { $rsadata = $packet->readString(); $user->DH->GenerateSharedKey(String::Replace($util->RSA->Verify($rsadata), chr(0), "")); $response = new PacketConstructor(); $response->SetHeader($util->HeaderManager->Outgoing("SecretKeyMessageComposer")); $response->WriteString($util->RSA->Sign($user->DH->GetPublicKey())); $response->WriteBoolean(true); $user->Send($response->Finalize()); $user->rc4client = new RC4(); $user->rc4server = new RC4(); $user->rc4client->Init($user->DH->GetSharedKey(true)); $user->rc4server->Init($user->DH->GetSharedKey(true)); $user->rc4initialized = true; } else { $response = new PacketConstructor(); $response->SetHeader($util->HeaderManager->Outgoing("SecretKeyMessageComposer")); $response->WriteString("Crypto disabled"); $response->WriteBoolean(false); $user->Send($response->Finalize()); } }