DragonNest/Server/ServerCommon/US/AuthCheck.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

527 lines
14 KiB
C

#pragma once
#ifndef EXTERN_C
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
#endif
#ifndef AUTHCHECK_EXPORTS
#define AUTHCHECK_API EXTERN_C __declspec(dllimport)
#else
#define AUTHCHECK_API EXTERN_C __declspec(dllexport)
#endif
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
enum AuthCheckError
{
AUTHCHECK_ERROR_OK = 0, // 0: OK
AUTHCHECK_ERROR_INVALID_ARGUMENT, // 1: Argument is not valid
AUTHCHECK_ERROR_INVALID_PASSPORT, // 2: NexonPassport is not valid
AUTHCHECK_ERROR_TIMEOUT, // 3: [obsolete] same as AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_EXPIRED = AUTHCHECK_ERROR_TIMEOUT, // 3: NexonPassport is valid, but arleady expired
AUTHCHECK_ERROR_AUTH_SERVER_SHUTDOWN, // 4: Authentication server is shutdown
AUTHCHECK_ERROR_UNSUPPORTED_LOCALE, // 5: Unsupported Locale ID
AUTHCHECK_ERROR_SET_LOCALE_NEEDED, // 6: call AuthCheck_SetLocale first
AUTHCHECK_ERROR_NO_SERVER_INFORMATION, // 7: no server information in config file
AUTHCHECK_ERROR_USER_IP_MISMATCHED, // 8: client ip address is mismatched with sso servers data
AUTHCHECK_ERROR_NO_DECRYPTION_KEY, // 9: There is no passport decryption key. Check AuthCheck_LoadKey function or key file.
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT, // 10: passport level is lower than minimum passport level
AUTHCHECK_ERROR_GAMECODE_MISMATCHED, // 11: Mismatch between the caller's gamecode and the passport's gamecode.
AUTHCHECK_ERROR_SESSION_NOT_EXIST, // 12: User session data not exists. ( Maybe timeout or something. )
AUTHCHECK_ERROR_DISCONNECTED, // 13: User IP or session key missmatched with current login session. Maybe logged out by another session.
AUTHCHECK_ERROR_SERVER_FAILED = 100, // 100: Internal error.
};
enum SsnCheckError
{
SSNCHECK_ERROR_MATCH = 0,
SSNCHECK_ERROR_MISMATCH,
SSNCHECK_ERROR_UNSUPPORTED_LOCALE,
SSNCHECK_ERROR_INVALID_PASSPORT,
SSNCHECK_ERROR_SERVICE_SHUTDOWN,
SSNCHECK_ERROR_INVALID_ARGUMENT,
SSNCHECK_ERROR_BLOCKED_IP,
SSNCHECK_ERROR_USER_NOT_EXIST,
SSNCHECK_ERROR_INTERNAL_FAILED,
};
#ifndef _NMLOCALEID_DEFINED_
#define _NMLOCALEID_DEFINED_
enum NMLOCALEID
{
kLocaleID_Null = 0x00000000,
kLocaleID_KR = 0x00000001, // Korea, Republic of
kLocaleID_KR_Test = 0x10000001, // Test
kLocaleID_JP = 0x00000100, // Japan
kLocaleID_JP_Test = 0x10000100,
kLocaleID_JP2 = 0x00000101, // Japan arad
kLocaleID_TW = 0x00000102, // Taiwan CSO
kLocaleID_JP3 = 0x00000103, // Japan TalesWeaver/CSO
kLocaleID_JP4 = 0x00000104, // Japan All(new IDC)
kLocaleID_SG = 0x00000105, // Singapore CSO
kLocaleID_CN_CNC = 0x00000111, // China / CNC
kLocaleID_CN_CT = 0x00000112, // China / CT
kLocaleID_US = 0x00000200, // United States
kLocaleID_US_Test = 0x10000200,
kLocaleID_EU = 0x00000300, // Europe
kLocaleID_BR = 0x00000400, // Brazil CombatArms
};
#endif
#ifndef _NMPASSPORTTYPE_DEFINED_
#define _NMPASSPORTTYPE_DEFINED_
enum PassportType
{
kPassportType_Undefined,
kPassportType_Nexon,
kPassportType_Guest,
};
#endif
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_UNSUPPORTED_LOCALE
*/
AUTHCHECK_API
AuthCheckError AuthCheck_SetLocale
(
IN NMLOCALEID uLocale
);
AUTHCHECK_API
void AuthCheck_SetTimeout
(
IN UINT32 uMilliseconds
);
AUTHCHECK_API
void AuthCheck_SetIntranetMode
(
IN BOOL bSet
);
AUTHCHECK_API
void AuthCheck_SetPassportLevel
(
IN UINT32 uPassportLevel
);
AUTHCHECK_API
void AuthCheck_SetSoapHostA
(
IN const char * szHost // 32
);
AUTHCHECK_API
void AuthCheck_SetSoapHostW
(
IN const WCHAR * szHost // 32
);
AUTHCHECK_API
PassportType AuthCheck_GetPassportTypeA
(
IN const char * szPassport // 1024
);
AUTHCHECK_API
PassportType AuthCheck_GetPassportTypeW
(
IN const WCHAR * szPassport // 1024
);
AUTHCHECK_API
void AuthCheck_LoadKeyA
(
IN const char * pszKeyConfigFileName
);
AUTHCHECK_API
void AuthCheck_LoadKeyW
(
IN const WCHAR * pszKeyConfigFileName
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_LocalCheckPassportA
(
IN const char* szPassport, // 1024
OUT char* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT char* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT UINT32* pnServerHash = NULL,
OUT char* pszServerName = NULL, // 32
OUT char* pszNationCode = NULL // 3
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_LocalCheckPassportW
(
IN const WCHAR* szPassport, // 1024
OUT WCHAR* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT WCHAR* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT UINT32* pnServerHash = NULL,
OUT WCHAR* pszServerName = NULL, // 32
OUT WCHAR* pszNationCode = NULL // 3
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_LocalCheckPassport2A
(
IN const char* szPassport, // 1024
OUT char* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT char* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT UINT32* pnServerHash = NULL,
OUT char* pszServerName = NULL, // 32
OUT char* pszMeta = NULL // 1024
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_LocalCheckPassport2W
(
IN const WCHAR* szPassport, // 1024
OUT WCHAR* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT WCHAR* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT UINT32* pnServerHash = NULL,
OUT WCHAR* pszServerName = NULL, // 32
OUT WCHAR* pszMeta = NULL // 1024
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_AUTH_SERVER_SHUTDOWN
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckPassportA
(
IN const char* szPassport, // 1024
IN const char* szUserIp, // 32
IN BOOL bRemoteOnly = TRUE,
OUT char* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT char* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT char* pszMeta = NULL, // 1024
OUT char* pszNationCode = NULL // 3
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_AUTH_SERVER_SHUTDOWN
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckPassportW
(
IN const WCHAR* szPassport, // 1024
IN const WCHAR* szUserIp, // 32
IN BOOL bRemoteOnly = TRUE,
OUT WCHAR* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT WCHAR* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT WCHAR* pszMeta = NULL, // 1024
OUT WCHAR* pszNationCode = NULL // 3
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_AUTH_SERVER_SHUTDOWN
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
AUTHCHECK_ERROR_GAMECODE_MISMATCHED
AUTHCHECK_ERROR_SESSION_NOT_EXIST
AUTHCHECK_ERROR_DISCONNECTED
AUTHCHECK_ERROR_SERVER_FAILED
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckSessionA
(
IN BOOL bRemoteCheck,
IN const char* szPassport, // 1024
IN const char* szUserIp, // 32
IN const char* szHWID, // 64
IN UINT32 uGameCode,
OUT char* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT char* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT char* pszNationCode = NULL, // 3
OUT char* pszMeta = NULL, // 1024
OUT UINT8* puSecureCode = NULL,
OUT UINT8* puRegisteredPC = NULL
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
AUTHCHECK_ERROR_EXPIRED
AUTHCHECK_ERROR_AUTH_SERVER_SHUTDOWN
AUTHCHECK_ERROR_SET_LOCALE_NEEDED
AUTHCHECK_ERROR_USER_IP_MISMATCHED
AUTHCHECK_ERROR_LOW_LEVEL_PASSPORT
AUTHCHECK_ERROR_GAMECODE_MISMATCHED
AUTHCHECK_ERROR_SESSION_NOT_EXIST
AUTHCHECK_ERROR_DISCONNECTED
AUTHCHECK_ERROR_SERVER_FAILED
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckSessionW
(
IN BOOL bRemoteCheck,
IN const WCHAR* szPassport, // 1024
IN const WCHAR* szUserIp, // 32
IN const WCHAR* szHWID, // 64
IN UINT32 uGameCode,
OUT WCHAR* pszId = NULL, // 32
OUT UINT32* pnNexonSN = NULL,
OUT WCHAR* pszLoginIp = NULL, // 32
OUT UINT32* puSex = NULL,
OUT UINT32* puAge = NULL,
OUT UINT32* puPwdHash = NULL,
OUT UINT32* puSsnHash = NULL,
OUT UINT32* puFlag0 = NULL,
OUT UINT32* puFlag1 = NULL,
OUT WCHAR* pszNationCode = NULL, // 3
OUT WCHAR* pszMeta = NULL, // 1024
OUT UINT8* puSecureCode = NULL,
OUT UINT8* puRegisteredPC = NULL
);
AUTHCHECK_API
UINT32 AuthCheck_GetHashValueA
(
const char* szString
);
AUTHCHECK_API
UINT32 AuthCheck_GetHashValueW
(
const WCHAR* wszString
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckGuestPassportA
(
IN const char * szPassport, // 1024
OUT INT32 * pnGameCode = NULL,
OUT INT64 * pnGuestSN = NULL,
OUT char * pszGuestId = NULL, // 32
OUT char * pszLoginIp = NULL, // 32
OUT SYSTEMTIME * pTimeCreated = NULL,
OUT SYSTEMTIME * pTimeToExpire = NULL
);
/*
returns : AUTHCHECK_ERROR_OK
AUTHCHECK_ERROR_INVALID_ARGUMENT
AUTHCHECK_ERROR_INVALID_PASSPORT
*/
AUTHCHECK_API
AuthCheckError AuthCheck_CheckGuestPassportW
(
IN const WCHAR * szPassport, // 1024
OUT INT32 * pnGameCode = NULL,
OUT INT64 * pnGuestSN = NULL,
OUT WCHAR * pszGuestId = NULL, // 32
OUT WCHAR * pszLoginIp = NULL, // 32
OUT SYSTEMTIME * pTimeCreated = NULL,
OUT SYSTEMTIME * pTimeToExpire = NULL
);
AUTHCHECK_API
UINT32 AuthCheck_LoginA
(
IN const char* szID, // 32
IN const char* szPwd, // 32
IN const char* szIP, // 32
IN UINT32 gameCode,
IN UINT32 locale,
OUT char* pszPassport = NULL, // 1024
OUT UINT32* pnUnreadNoteCount = NULL,
OUT UINT32* pnStatusFlag = NULL,
OUT UINT32* pnUpdateInterval = NULL
);
AUTHCHECK_API
UINT32 AuthCheck_LoginW
(
IN const WCHAR* szID, // 32
IN const WCHAR* szPwd, // 32
IN const WCHAR* szIP, // 32
IN UINT32 gameCode,
IN UINT32 locale,
OUT WCHAR* pszPassport = NULL, // 1024
OUT UINT32* pnUnreadNoteCount = NULL,
OUT UINT32* pnStatusFlag = NULL,
OUT UINT32* pnUpdateInterval = NULL
);
AUTHCHECK_API
UINT32 AuthCheck_LogoutA
(
IN const char* szPassport, // 1024
IN const char* szIP // 32
);
AUTHCHECK_API
UINT32 AuthCheck_LogoutW
(
IN const WCHAR* szPassport, // 1024
IN const WCHAR* szIP // 32
);
AUTHCHECK_API
SsnCheckError AuthCheck_CheckSsnFullA
(
IN const char* szPassport, // 1024
IN const char* szSsnFull // 14
);
AUTHCHECK_API
SsnCheckError AuthCheck_CheckSsnFullW
(
IN const WCHAR* szPassport, // 1024
IN const WCHAR* szSsnFull // 14
);
AUTHCHECK_API
SsnCheckError AuthCheck_CheckSsnSubA
(
IN const char* szPassport, // 1024
IN const char* szSsnSub // 8
);
AUTHCHECK_API
SsnCheckError AuthCheck_CheckSsnSubW
(
IN const WCHAR* szPassport, // 1024
IN const WCHAR* szSsnSub // 8
);
#if defined( UNICODE ) || defined( _UNICODE )
#define AuthCheck_SetSoapHost AuthCheck_SetSoapHostW
#define AuthCheck_GetPassportType AuthCheck_GetPassportTypeW
#define AuthCheck_LoadKey AuthCheck_LoadKeyW
#define AuthCheck_LocalCheckPassport AuthCheck_LocalCheckPassportW
#define AuthCheck_LocalCheckPassport2 AuthCheck_LocalCheckPassport2W
#define AuthCheck_CheckPassport AuthCheck_CheckPassportW
#define AuthCheck_GetHashValue AuthCheck_GetHashValueW
#define AuthCheck_CheckGuestPassport AuthCheck_CheckGuestPassportW
#define AuthCheck_Login AuthCheck_LoginW
#define AuthCheck_Logout AuthCheck_LogoutW
#define AuthCheck_CheckSsnFull AuthCheck_CheckSsnFullW
#define AuthCheck_CheckSsnSub AuthCheck_CheckSsnSubW
#define AuthCheck_CheckSession AuthCheck_CheckSessionW
#else
#define AuthCheck_SetSoapHost AuthCheck_SetSoapHostA
#define AuthCheck_GetPassportType AuthCheck_GetPassportTypeA
#define AuthCheck_LoadKey AuthCheck_LoadKeyA
#define AuthCheck_LocalCheckPassport AuthCheck_LocalCheckPassportA
#define AuthCheck_LocalCheckPassport2 AuthCheck_LocalCheckPassport2A
#define AuthCheck_CheckPassport AuthCheck_CheckPassportA
#define AuthCheck_GetHashValue AuthCheck_GetHashValueA
#define AuthCheck_CheckGuestPassport AuthCheck_CheckGuestPassportA
#define AuthCheck_Login AuthCheck_LoginA
#define AuthCheck_Logout AuthCheck_LogoutA
#define AuthCheck_CheckSsnFull AuthCheck_CheckSsnFullA
#define AuthCheck_CheckSsnSub AuthCheck_CheckSsnSubA
#define AuthCheck_CheckSession AuthCheck_CheckSessionA
#endif