📄 tmsgauth1loginbase2.h
字号:
#ifndef _TMsgAuth1LoginBase2_H
#define _TMsgAuth1LoginBase2_H
// TMsgAuth1LoginBase2.h
#include "STRING"
#include "common/won.h"
#include "msg/TMessage.h"
// Forwards from WONSocket
namespace WONMsg {
// TMsgAuth1LoginBase2 - Auth Login base class
// Key Block ID (2 bytes) Must match key block Id in encrypted block
// Session Block Length(2 bytes)
// Session Key Block (variable) Session key Encrypted with AuthPublicKey
// Data Block (variable) encrypted with Session Key
class TMsgAuth1LoginBase2 : public TMessage
{
public:
// Default ctor
TMsgAuth1LoginBase2();
// TMessage ctor - will throw if TMessage type is not of this type
explicit TMsgAuth1LoginBase2(const TMessage& theMsgR);
// Copy ctor
TMsgAuth1LoginBase2(const TMsgAuth1LoginBase2& theMsgR);
// Destructor
~TMsgAuth1LoginBase2()=0;
// Assignment
TMsgAuth1LoginBase2& operator=(const TMsgAuth1LoginBase2& theMsgR);
// Pack and Unpack the message
// Unpack will throw a BadMsgException is message is not of this type
void* Pack();
void Unpack();
// KeyBlock ID access
unsigned short GetKeyBlockId() const;
void SetKeyBlockId(unsigned short theId);
void ForceRawBufOwn();
// Session Key Buffer access
const unsigned char* GetRawKeyBuf() const;
unsigned short GetRawKeyBufLen() const;
// Data Buffer access
const unsigned char* GetRawDataBuf() const;
unsigned short GetRawDataBufLen() const;
// Update buffer. Setting copyBuf to false will cause the specified
// theBlockP pointer to be stored without copying its contents. This will
// improve performance, but theBlockP MUST NOT BE DEALLOCATED while in use
// by this class.
void SetRawKeyBuf(const unsigned char* theRawP, unsigned short theLen,
bool copyBuf=false);
void SetRawDataBuf(const unsigned char* theRawP, unsigned short theLen,
bool copyBuf=false);
private:
unsigned short mKeyBlockId; // Id of AuthServ pub key block used to encrypt
WONCommon::RawBuffer mRawKey;
const unsigned char *mRawKeyP;
unsigned short mRawKeyLen;
WONCommon::RawBuffer mDataBlock;
const unsigned char *mRawP;
unsigned short mRawLen;
};
inline unsigned short
TMsgAuth1LoginBase2::GetKeyBlockId() const
{ return mKeyBlockId; }
inline void
TMsgAuth1LoginBase2::SetKeyBlockId( unsigned short theId )
{ mKeyBlockId = theId; }
inline const unsigned char*
TMsgAuth1LoginBase2::GetRawKeyBuf() const
{ return mRawKeyP; }
inline unsigned short
TMsgAuth1LoginBase2::GetRawKeyBufLen() const
{ return mRawKeyLen; }
inline const unsigned char*
TMsgAuth1LoginBase2::GetRawDataBuf() const
{ return mRawP; }
inline unsigned short
TMsgAuth1LoginBase2::GetRawDataBufLen() const
{ return mRawLen; }
inline void
TMsgAuth1LoginBase2::ForceRawBufOwn(void)
{
if ((mRawKeyP) && (mRawKeyP != mRawKey.data()))
{ mRawKey.assign(mRawKeyP, mRawKeyLen); mRawKeyP = mRawKey.data(); }
if ((mRawP) && (mRawP != mDataBlock.data()))
{ mDataBlock.assign(mRawP, mRawLen); mRawP = mDataBlock.data(); }
}
}; // Namespace WONMsg
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -