//============================================================================================================================= /// CryptManagerS2S class /** @author Lee Eun-pa @since 2006. 10. 12 @remark - ¼­¹ö¿Í ¼­¹ö »çÀÌ¿¡ »ç¿ëµÇ°Ô µÇ´Â ÆÐŶ ¾Ïȣȭ ó¸® °ü¸®ÀÚ @note @history - */ //============================================================================================================================= #ifndef _CRYPTBASE_S2S_H #define _CRYPTBASE_S2S_H #include "RandomSNKeyS2S.h" typedef struct sCRYPT_KEY_STREAM { BYTE STREAM[200]; }* CRYPT_KEY_STREAM; class CryptManagerS2S { public: // ¼­¹ö°£¿¡ ¼­¹ö ¿ªÇÒÀ» Çϴ°¡, Ŭ¶óÀÌ¾ðÆ® ¿ªÇÒÀ» ÇÏ´Â °¡¸¦ ÁöÁ¤, // ¼­¹ö°£¿¡ ¹Ýµå½Ã ¼­·Î ´Ù¸¥ ¿ªÇÒÀ» ¸Ã¾Æ¾ß ÇÑ´Ù. enum eROLE_SIDE { ROLE_NOALIGN, ROLE_SERVER, ROLE_CLIENT }; public: CryptManagerS2S(); ~CryptManagerS2S(); VOID Initialize( eROLE_SIDE role /*Ãß°¡»çÇ× ÀÖ´ÂÁö È®ÀÎÇÒ °Í*/ ); VOID Release(); BOOL Encrypt( BYTE* IN OUT stream, int size, BYTE& OUT crc ); BOOL Decrypt( BYTE* IN OUT stream, int size, BYTE IN crc ); BOOL StartLogic( BOOL bset ); // 200 Byte Å©±âÀÇ ºí·ÏÀ» ÇÒ´çÇØ Áà¾ß ÇÑ´Ù. static VOID MakeGarbageBlock( CRYPT_KEY_STREAM IN OUT pCryptKeyStream, DWORD dwGabageKey ); // ¾Ïȣȭ Á¤º¸, ۱³È¯À» À§ÇÑ ½ºÆ®¸² »ý¼º, // cryptInfo´Â MSG_CRYPTOGRAPHY_CMD::m_byCryptBuffer·Î ±× Å©±â´Â 200ÀÌ´Ù. // bySymmetrySNKey´Â º¸³»°íÀÚ ÇÏ´Â SNKey°ú ½ÖÀ» ÀÌ·ç´Â ۸¦ ÀÔ·ÂÇÑ´Ù. // // byPairSNKey%(MAX_KEY_SIZE) BYTE CreateCryptKeyStream( BYTE byPairSNKey, CRYPT_KEY_STREAM IN OUT pCryptKeyStream, DWORD dwKey ); VOID AllocateCryptKey( PVOID encKey, PVOID decKey ); // // ´ÙÀ½Àº Ŭ¶óÀÌ¾ðÆ® ¿ªÇÒÀ» ¼öÇàÇÏ´Â ÂÊ¿¡¼­ »ç¿ëÇÏ´Â °Íµé... static DWORD ExtractUserKeyFromCryptKeyStream( CRYPT_KEY_STREAM IN OUT cryptInfo ); static CryptManagerS2S* CreateCryptManagerFromCryptKeyStream( BYTE byLocalSNKey, CRYPT_KEY_STREAM IN pCryptKeyStream, BYTE encodedIdx ); private: // BOOL m_Inited; eROLE_SIDE m_RoleSide; PVOID m_pCryptAlgorithm; }; #endif //_CRYPTBASE_S2S_H