diff --git a/src/credentials.cpp b/src/credentials.cpp index ddc6db7becb9..09cf33d62dc9 100644 --- a/src/credentials.cpp +++ b/src/credentials.cpp @@ -138,7 +138,7 @@ namespace preferences if(cred == credentials.end()) { return ""; } - return decrypt(unescape(cred->key), build_key(server, login)); + return decrypt(cred->key, build_key(server, login)); } void set_password(const std::string& server, const std::string& login, const std::string& key) @@ -155,7 +155,7 @@ namespace preferences // This is equivalent to emplace_back, but also returns the iterator to the new element cred = credentials.emplace(credentials.end(), login, server, ""); } - cred->key = escape(encrypt(key, build_key(server, login))); + cred->key = encrypt(key, build_key(server, login)); } void load_credentials() @@ -181,7 +181,7 @@ namespace preferences size_t at = elem.find_last_of('@'); size_t eq = elem.find_first_of('=', at + 1); if(at != std::string::npos && eq != std::string::npos) { - credentials.emplace_back(elem.substr(0, at), elem.substr(at + 1, eq - at - 1), elem.substr(eq + 1)); + credentials.emplace_back(elem.substr(0, at), elem.substr(at + 1, eq - at - 1), unescape(elem.substr(eq + 1))); } } std::fill(data.begin(), data.end(), '\0'); @@ -200,7 +200,8 @@ namespace preferences credentials_data.put('@'); std::copy(cred.server.begin(), cred.server.end(), std::ostreambuf_iterator(credentials_data)); credentials_data.put('='); - std::copy(cred.key.begin(), cred.key.end(), std::ostreambuf_iterator(credentials_data)); + std::string key_escaped = escape(cred.key); + std::copy(key_escaped.begin(), key_escaped.end(), std::ostreambuf_iterator(credentials_data)); } credentials_data.put(CREDENTIAL_SEPARATOR); try {