diff --git a/src/cpp/Crypto/KeyPair.cpp b/src/cpp/Crypto/KeyPair.cpp index 842d3902c..c921d84f9 100644 --- a/src/cpp/Crypto/KeyPair.cpp +++ b/src/cpp/Crypto/KeyPair.cpp @@ -150,8 +150,8 @@ MemoryBin* KeyPair::createWordIndices(const std::string& passphrase, const Mnemo auto mm = MemoryManager::getInstance(); auto word_indices = mm->getFreeMemory(sizeof(Poco::UInt32) * PHRASE_WORD_COUNT); - Poco::UInt32* word_indices_p = (Poco::UInt32*)(word_indices->data()); - unsigned long word_indices_old[PHRASE_WORD_COUNT] = { 0 }; + Poco::UInt64* word_indices_p = (Poco::UInt64*)(word_indices->data()); + //unsigned long word_indices_old[PHRASE_WORD_COUNT] = { 0 }; //memset(word_indices_old, 0, PHRASE_WORD_COUNT);// *sizeof(unsigned long)); memset(*word_indices, 0, word_indices->size()); @@ -168,7 +168,7 @@ MemoryBin* KeyPair::createWordIndices(const std::string& passphrase, const Mnemo if (buffer_cursor < 3) continue; if (word_source->isWordExist(acBuffer)) { word_indices_p[word_cursor] = word_source->getWordIndex(acBuffer); - word_indices_old[word_cursor] = word_source->getWordIndex(acBuffer); + // word_indices_old[word_cursor] = word_source->getWordIndex(acBuffer); } else { er->addError(new ParamError("KeyPair::generateFromPassphrase", "word didn't exist", acBuffer)); @@ -185,11 +185,11 @@ MemoryBin* KeyPair::createWordIndices(const std::string& passphrase, const Mnemo acBuffer[buffer_cursor++] = *it; } } - if (memcmp(word_indices_p, word_indices_old, word_indices->size()) != 0) { + /*if (memcmp(word_indices_p, word_indices_old, word_indices->size()) != 0) { printf("not identical\n"); memcpy(word_indices_p, word_indices_old, word_indices->size()); - } + }*/ return word_indices; } diff --git a/src/cpp/HTTPInterface/TranslatePassphrase.cpp b/src/cpp/HTTPInterface/TranslatePassphrase.cpp new file mode 100644 index 000000000..34c37b02c --- /dev/null +++ b/src/cpp/HTTPInterface/TranslatePassphrase.cpp @@ -0,0 +1,314 @@ +#include "TranslatePassphrase.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTMLForm.h" +#include "Poco/DeflatingStream.h" + + +#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + +#include "../Crypto/KeyPair.h" +#include "../ServerConfig.h" +#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + +#include "../ServerConfig.h" + + +TranslatePassphrase::TranslatePassphrase(Session* arg): + SessionHTTPRequestHandler(arg) +{ +} + + +void TranslatePassphrase::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response) +{ + response.setChunkedTransferEncoding(true); + response.setContentType("text/html"); + bool _compressResponse(request.hasToken("Accept-Encoding", "gzip")); + if (_compressResponse) response.set("Content-Encoding", "gzip"); + + Poco::Net::HTMLForm form(request, request.stream()); +#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + + chooseLanguage(request); + // variable needed for flags + auto lang = mSession->getLanguage(); + auto uri_start = ServerConfig::g_serverPath; + const char* pageName = gettext("Passphrase Transformieren"); + std::string passphrase; + auto role = mSession->getNewUser()->getModel()->getRole(); + std::string inputPassphrase; + + Mnemonic* wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; + Mnemonic* targetSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; + if(lang == LANG_DE) { + wordSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; + targetSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; + } + + if(!form.empty()) + { + + inputPassphrase = form.get("inputPassphrase", ""); + auto localPassphrase = KeyPair::filterPassphrase(inputPassphrase); + if(localPassphrase != "" && !User::validatePassphrase(localPassphrase, &wordSource)) { + addError(new Error( + gettext("Fehler"), + gettext("Diese Passphrase ist ungültig, bitte überprüfen oder neu generieren (lassen).") + )); + } else { + if(wordSource == &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]) { + targetSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER]; + } else { + targetSource = &ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]; + } + passphrase = KeyPair::passphraseTransform(localPassphrase, wordSource, targetSource); + } + + auto btnGenerate = form.get("btnGenerate", ""); + if("" != btnGenerate) { + passphrase = mSession->generatePassphrase(); + } + } +#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + + bool withMaterialIcons = false; + std::ostream& _responseStream = response.send(); + Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1); + std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream; + responseStream << "\n"; + // begin include login_header.cpsp + // begin include header.cpsp + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "Gradido Login Server: "; +#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + responseStream << ( pageName ); + responseStream << "\n"; + responseStream << "\n"; +#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + if(withMaterialIcons) { responseStream << "\n"; + responseStream << "\n"; +#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + } responseStream << "\n"; + responseStream << "\n"; + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "\t

Login Server in Entwicklung

\n"; + responseStream << "\t

Alpha "; +#line 20 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" + responseStream << ( ServerConfig::g_versionString ); + responseStream << "

\n"; + responseStream << "
\n"; + responseStream << ""; + // end include header.cpsp + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " "; +#line 18 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login_header.cpsp" + responseStream << ( getErrorsHtml() ); + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "
"; + // end include login_header.cpsp + // begin include flags.cpsp + responseStream << "
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "
"; + // end include flags.cpsp + responseStream << "\n"; + responseStream << "
\n"; + responseStream << "\t

"; +#line 54 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + responseStream << ( gettext("Passphrase umwandeln") ); + responseStream << "

\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t
"; +#line 62 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + responseStream << ( gettext("Was zu tun ist:") ); + responseStream << "
\n"; + responseStream << "\t\t

"; +#line 63 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + responseStream << ( gettext("Kopiere/schreibe deine Passphrase in die Textbox und du bekommst sie in die jeweils andere Sprache umgewandelt.") ); + responseStream << "

\n"; + responseStream << "\t\t

"; +#line 64 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + responseStream << ( gettext("Du kannst mit beiden Varianten dein Konto wiederherstellen oder dein Passwort ändern.") ); + responseStream << "

\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t \n"; + responseStream << "\t\t "; +#line 73 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + if(controller::USER_ROLE_ADMIN == role) { responseStream << "\n"; + responseStream << "\t\t\t\n"; + responseStream << "\t\t "; +#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + } responseStream << "\n"; + responseStream << "\t\t
\n"; + responseStream << "\t
\n"; + responseStream << "\t "; +#line 78 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + if(passphrase != "") { responseStream << "\n"; + responseStream << "\t\t
\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t\t\t
Umgewandelte Passphrase:
\n"; + responseStream << "\t\t\t\t

"; +#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + responseStream << ( passphrase ); + responseStream << "

\n"; + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << "\t "; +#line 85 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\translatePassphrase.cpsp" + } responseStream << "\n"; + responseStream << "\t
\n"; + responseStream << "\t
\n"; + responseStream << "
\n"; + // begin include footer_ripple.cpsp + responseStream << "\t\t\t
\n"; + responseStream << "\t\t
\n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " Copyright © 2020 Gradido\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " "; +#line 23 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer_ripple.cpsp" + responseStream << ( mTimeProfiler.string() ); + responseStream << "\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << "\n"; + responseStream << " "; + // end include footer_ripple.cpsp + if (_compressResponse) _gzipStream.close(); +} diff --git a/src/cpp/HTTPInterface/TranslatePassphrase.h b/src/cpp/HTTPInterface/TranslatePassphrase.h new file mode 100644 index 000000000..d5edb1327 --- /dev/null +++ b/src/cpp/HTTPInterface/TranslatePassphrase.h @@ -0,0 +1,20 @@ +#ifndef TranslatePassphrase_INCLUDED +#define TranslatePassphrase_INCLUDED + + +#include "Poco/Net/HTTPRequestHandler.h" + + +#include "SessionHTTPRequestHandler.h" + + +class TranslatePassphrase: public SessionHTTPRequestHandler +{ +public: + TranslatePassphrase(Session*); + + void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response); +}; + + +#endif // TranslatePassphrase_INCLUDED