Initial MSVC 2008 projects workspace
This commit is contained in:
76
l2packets/login/L2LoginPacket.h
Normal file
76
l2packets/login/L2LoginPacket.h
Normal file
@@ -0,0 +1,76 @@
|
||||
#ifndef H_L2LOGINPACKET
|
||||
#define H_L2LOGINPACKET
|
||||
|
||||
#include "../base/L2BasePacket.h"
|
||||
|
||||
/** \class L2LoginPacket
|
||||
* A base class for all login server communication packets.
|
||||
* Includes functions to handle Blowfish encryption/decryption and checksum calculations. */
|
||||
|
||||
class L2LoginPacket: public L2BasePacket
|
||||
{
|
||||
public:
|
||||
/** Default constructor */
|
||||
L2LoginPacket();
|
||||
/** Constructs object and calls setBytes() with parameters bytes, length
|
||||
* \param bytes data to set
|
||||
* \param length data size */
|
||||
L2LoginPacket( const unsigned char *bytes, unsigned int length );
|
||||
virtual ~L2LoginPacket();
|
||||
public:
|
||||
/** Does Blowfish decryption of packet data.
|
||||
* \param bUseStaticBFKey set to true to use static BF key, or false to dynamic.
|
||||
Dynamic BF key must be set before by setDynamicBFKey()
|
||||
* \return success status */
|
||||
virtual bool decodeBlowfish( bool bUseStaticBFKey );
|
||||
|
||||
/** Does Blowfish decryption of packet data.
|
||||
* \param blowfishKey - 16 bytes array, blowfish key to use to decrypt packet data
|
||||
* \return success status */
|
||||
virtual bool decodeBlowfish( unsigned char *blowfishKey );
|
||||
public:
|
||||
/** Appends checksum to packet
|
||||
* \param append4bytes in Hellbound, set to true to keep packet data length 8-byte aligned */
|
||||
virtual bool appendChecksum( bool append4bytes = true );
|
||||
/** Verifies data checksum, XORing count bytes starting from offset.\n
|
||||
* Checksum must be written at last 4 bytes of data, so data size must be >= 8 at least.
|
||||
* \param bytes data array
|
||||
* \param offset starting position
|
||||
* \param size data size in bytes (should be a multiple of 4)
|
||||
* \return true, if checksum is ok */
|
||||
static bool verifyBytesChecksum( const unsigned char *bytes, unsigned int offset, unsigned int size );
|
||||
/** Verifies this packet checksum. */
|
||||
virtual bool verifyChecksum() const;
|
||||
/** Does padding of packet data by zeroes to 8-byte border (before BF encryption) */
|
||||
virtual bool padPacketTo8ByteLen();
|
||||
/** In Hellbound, packets are padded by more 8 zero bytes after adding checksum & 4 bytes */
|
||||
virtual bool appendMore8Bytes();
|
||||
/** Sets dynamic Blowfish key (which is taken from Init packet)
|
||||
* \param newKey must point at 16 bytes buffer
|
||||
* \param newKeyLen currently must be = 16 */
|
||||
virtual bool setDynamicBFKey( unsigned char *newKey, unsigned int newKeyLen );
|
||||
/** Does Blowfish encryption.
|
||||
* \param bUseStaticBFKey set to true to use static BF key, or false to dynamic.
|
||||
Dynamic BF key must be set before by setDynamicBFKey()
|
||||
* \return success status */
|
||||
virtual bool encodeBlowfish( bool bUseStaticBFKey );
|
||||
|
||||
public:
|
||||
/** Encrypts packet with Blowfish, does all padding, appends checksum - after that packet may be sent
|
||||
* \param blowfishKey - Blowfish key to use for encryption (16 bytes)
|
||||
* \param bfKeyLen - length of Blowfish key (default is 16)
|
||||
* \return success status */
|
||||
virtual bool encodeAndPrepareToSend( unsigned char *blowfishKey, unsigned int bfKeyLen = 16 );
|
||||
|
||||
protected:
|
||||
/** Also initializes STATIC_BF_KEY, which is constant. */
|
||||
virtual void _initNull();
|
||||
protected:
|
||||
unsigned char STATIC_BLOWFISH_KEY[32]; ///< Static Blowfish key (First packet from login server is encrypted by this)
|
||||
unsigned int STATIC_BLOWFISH_KEY_LEN; ///< length of static BF key
|
||||
unsigned char NEW_BLOWFISH_KEY[64]; ///< Buffer to hold dynamic blowfish key
|
||||
unsigned int NEW_BLOWFISH_KEY_LEN; ///< Dynamic BF key size
|
||||
unsigned int xor_key; ///< current XOR key (for Init packet)
|
||||
};
|
||||
|
||||
#endif /* H_L2LOGINPACKET */
|
Reference in New Issue
Block a user