added: to crypto:

bool Crypt(const std::string & in, std::string & out)
       bool Decrypt(const std::string & in, std::string & out)


git-svn-id: svn://ttmath.org/publicrep/tito/trunk@396 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
Tomasz Sowa 2012-03-08 13:54:21 +00:00
parent ddd6ebd637
commit a5a0201ec1
2 changed files with 47 additions and 7 deletions

View File

@ -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<char> & 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<uint8_tab.size() ; ++i)
out[i] = uint8_tab[i];
Clear();
return true;
}
else
{
//log << "problem with AES decoding (skipping)" << logend;
}
Clear();
return false;
}
bool Crypto::Decrypt(const std::string & in, std::vector<char> & out)
{
out.clear();

View File

@ -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<char> & 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<char> & 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<char> & 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<char> & 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<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,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<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,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);