#pragma once #include "SpBase.h" #include #include #include extern void* logProducer; extern std::map g_logProducerArr; extern bool g_useMagic; extern bool g_logToFile; extern bool g_withMedia; extern bool g_withConsole; extern bool g_withLinkLog; extern bool g_hasInitCfg; extern bool g_unsafeAd; #define DEFAULT_KEY_LEN 256 #define DEFAULT_KEY_LEN 256 std::vector find_files(const std::string srcPath, const std::string fileName, bool isDir = false); std::string generateTimeStr(bool isSimple = false); DWORD SaveCefclientLog(std::string magicStr); bool SYSTEM_ON(std::string cmdLine, bool isWait = true); bool InitFileLogger(std::string dbgPath); void DbgToFileLogger(std::string msg); bool deleteDir_byFileSystem(const std::string srcPath); void InitTranslateFile(std::string srcFile); std::pair splitStrToUserCodeAndErrMsg(std::string srcMsg); void InitUserCodeToMsgTip(CAutoArray& strErrorCodeArr, CAutoArray& strDescriptionArr, CAutoArray& strRemarkArr); struct ErrMsgStruct { std::string VTMCode; std::string errMsg; // 带参数的构造函数,参数有默认值 ErrMsgStruct(const std::string& tmp_VTMCode = "", const std::string& tmp_errMsg = "") : VTMCode(tmp_VTMCode), errMsg(tmp_errMsg) {} }; std::pair getErrMsgByRemark(std::string srcMsg); std::string UtfToGbk(const char* utf8); std::string ConvertGBKToUtf8(std::string& strGBK); void hexdump(const char* buf, const int num); std::string hexdumpToString(const char* buf, const int num); bool modifyBySpecialStr(std::wstring& src); void receivehexdump(const char* buf, const int num); void doWithDebugModeData(const char* strMethod, const char* buf); #ifdef RVC_OS_LINUX std::vector getUosBrowserPIDs(int UseUOSBrowser); #endif class json_deal { public: static std::pair getStringFromCjsonObj(void* object, const char* name); static std::pair getIntergerFromCjsonObj(void* object, const char* name); static std::pair getDoubleFromCjsonObj(void* object, const char* name); }; #if (defined _WIN32 || defined _WIN64) long WINAPI printSEG(struct _EXCEPTION_POINTERS* ExceptionInfo); #else long printSEG(); void set_traceback_path(std::string path); void seg_signal_handler(int signum); void normal_signal_handle(int signum); #endif typedef enum{ WAIT_KEY_EXCHANGE, DATA_EXCHANGE }SM2ProtocolState; class SM2_Encrypt_Manager { public: SM2_Encrypt_Manager(); ~SM2_Encrypt_Manager(); bool GenerateSM2_key(std::string& pub, std::string& pri); std::string binToHex(const unsigned char* data, int len); void hexToBin(const std::string& hexStr, unsigned char* binData, int& binLen); void setOpposite(const std::string pub); std::pair checkSM2Enable(); std::pair EncryptMsg(std::string msg);//return signature, encryptMsg std::pair DecryptMsg(std::string sign, std::string msg); std::pair GenerateEncPubKey(); bool verifySM2Manager(); SM2ProtocolState getState() { return m_state; }; void setState(SM2ProtocolState tmpState) { m_state = tmpState; }; private: unsigned char m_public_key_buf[DEFAULT_KEY_LEN], m_private_key_buf[DEFAULT_KEY_LEN], m_opposite_public_key_buf[DEFAULT_KEY_LEN]; int m_public_key_buf_len, m_private_key_buf_len, m_opposite_public_key_buf_len; std::string m_public_key, m_private_key, m_opposite_public_key; SM2ProtocolState m_state; };