diff --git a/src/crypto.cpp b/src/crypto.cpp index 7f0cc49..6e8634b 100755 --- a/src/crypto.cpp +++ b/src/crypto.cpp @@ -114,6 +114,14 @@ void Crypto::Crypt(const std::wstring & in, std::wstring & out) } +void Crypto::Crypt(const std::string & in, std::string & out) +{ + aes.Encode((const unsigned char*)&in[0], in.size(), aes_name, uint8_tab); + base64.Encode((const char*)&uint8_tab[0], uint8_tab.size(), out); + Clear(); +} + + void Crypto::Crypt(const std::vector & in, std::string & out) { aes.Encode((const unsigned char*)&in[0], in.size(), aes_name, uint8_tab); @@ -152,6 +160,36 @@ return false; } +bool Crypto::Decrypt(const std::string & in, std::string & out) +{ + out.clear(); + + if( in.empty() ) + return true; + + base64.Decode(in, aes_str); + + if( aes.Decode((const unsigned char *)aes_str.c_str(), aes_str.size(), aes_tmp_name, uint8_tab) ) + { + out.resize(uint8_tab.size()); + + for(size_t i=0 ; i & out) { out.clear(); diff --git a/src/crypto.h b/src/crypto.h index 08a0562..cadfb7d 100755 --- a/src/crypto.h +++ b/src/crypto.h @@ -63,8 +63,9 @@ public: crypting AES256 and base64 then so the 'out' string is ready to save as a normal text */ - void Crypt(const std::wstring & in, std::wstring & out); - void Crypt(const std::vector & in, std::string & out); + void Crypt(const std::wstring & in, std::wstring & out); + void Crypt(const std::string & in, std::string & out); + void Crypt(const std::vector & in, std::string & out); /* @@ -73,8 +74,9 @@ public: in such a case out is empty if 'in' is empty the 'out' will be empty too */ - bool Decrypt(const std::wstring & in, std::wstring & out); - bool Decrypt(const std::string & in, std::vector & out); + bool Decrypt(const std::wstring & in, std::wstring & out); + bool Decrypt(const std::string & in, std::string & out); + bool Decrypt(const std::string & in, std::vector & out); /* @@ -108,9 +110,9 @@ private: // temporarily fix for Visual Studio - // crypto.obj : error LNK2001: unresolved external symbol "void __cdecl Tito::AssignString(char const *,unsigned int,class std::basic_string,class std::allocator > &,bool)" (?AssignString@Tito@@YAXPBDIAAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@_N@Z) - void AssignString(const char * src, size_t len, std::wstring & dst, bool clear = true); - void AssignString(const wchar_t * src, size_t len, std::string & dst, bool clear = true); + // crypto.obj : error LNK2001: unresolved external symbol "void __cdecl Tito::AssignString(char const *,unsigned int,class std::basic_string,class std::allocator > &,bool)" (?AssignString@Tito@@YAXPBDIAAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@_N@Z) + void AssignString(const char * src, size_t len, std::wstring & dst, bool clear = true); + void AssignString(const wchar_t * src, size_t len, std::string & dst, bool clear = true); void AssignString(const std::string & src, std::wstring & dst, bool clear = true); void AssignString(const std::wstring & src, std::string & dst, bool clear = true);