react on missing public key by login, if private key exist

This commit is contained in:
Dario 2020-07-14 19:14:21 +02:00
parent 8d6c2ada49
commit ddaad461d1
4 changed files with 23 additions and 16 deletions

View File

@ -41,6 +41,8 @@ public:
return 0 == sodium_memcmp(mSodiumPublic, b.mSodiumPublic, crypto_sign_PUBLICKEYBYTES);
}
inline bool isTheSame(const unsigned char* pubkey) const {
if (!pubkey)
return false;
return 0 == sodium_memcmp(mSodiumPublic, pubkey, crypto_sign_PUBLICKEYBYTES);
}
//! \return 0 if the same

View File

@ -35,6 +35,7 @@
{
switch(type) {
case ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER: return "de";
case ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER_FIXED_CASES: return "de";
case ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER: return "en";
}
return "unknown";
@ -58,7 +59,7 @@ void DebugMnemonicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poc
if (_compressResponse) response.set("Content-Encoding", "gzip");
Poco::Net::HTMLForm form(request, request.stream());
#line 41 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 42 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
const char* pageName = "Debug Mnemonic";
WordChecked checkedWord;
@ -189,7 +190,7 @@ void DebugMnemonicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poc
responseStream << "<div class=\"grd_container\">\n";
responseStream << "\t<h1>Debug Mnemonic</h1>\n";
responseStream << "\t";
#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
responseStream << ( getErrorsHtml() );
responseStream << "\n";
responseStream << "\t<form method=\"POST\">\n";
@ -198,20 +199,20 @@ void DebugMnemonicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poc
responseStream << "\t\t\t<p class=\"grd_small\">\n";
responseStream << "\t\t\t\t<label for=\"word\">Word</label>\n";
responseStream << "\t\t\t\t<input id=\"word\" type=\"text\" name=\"word\" value=\"";
#line 109 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 110 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
responseStream << ( form.get("word", "") );
responseStream << "\"/>\n";
responseStream << "\t\t\t</p>\n";
responseStream << "\t\t\t<input type=\"submit\" name=\"check_word\" value=\"Wort &uuml;berpr&uuml;fen\"/>\n";
responseStream << "\t\t\t";
#line 112 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
if(checkedWord.bSet) { responseStream << "\n";
responseStream << "\t\t\t\t<p>";
#line 113 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
responseStream << ( checkedWord.print() );
responseStream << "</p>\n";
responseStream << "\t\t\t";
#line 114 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 115 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
} responseStream << "\n";
responseStream << "\t\t</fieldset>\n";
responseStream << "\t\t<fieldset class=\"grd_container_small\">\n";
@ -219,30 +220,30 @@ void DebugMnemonicPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poc
responseStream << "\t\t\t<p class=\"grd_small\">\n";
responseStream << "\t\t\t\t<label for=\"index\">Index</label>\n";
responseStream << "\t\t\t\t<input id=\"index\" type=\"text\" name=\"index\" value=\"";
#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
responseStream << ( form.get("index", "") );
responseStream << "\"/>\n";
responseStream << "\t\t\t</p>\n";
responseStream << "\t\t\t<input type=\"submit\" name=\"check_index\" value=\"Index &uuml;berpr&uuml;fen\"/>\n";
responseStream << "\t\t\t";
#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
if(checkedIndex[0].bSet) { responseStream << "\n";
responseStream << "\t\t\t\t<ul class=\"grd-no-style\">\n";
responseStream << "\t\t\t\t";
#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
for (int i = ServerConfig::MNEMONIC_GRADIDO_BOOK_GERMAN_RANDOM_ORDER; i < ServerConfig::Mnemonic_Types::MNEMONIC_MAX; i++) { responseStream << "\n";
responseStream << "\t\t\t\t\t<li>\n";
responseStream << "\t\t\t\t\t";
#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
responseStream << ( checkedIndex[i].print() );
responseStream << "\n";
responseStream << "\t\t\t\t\t</li>\n";
responseStream << "\t\t\t\t";
#line 129 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
} responseStream << "\n";
responseStream << "\t\t\t\t</ul>\n";
responseStream << "\t\t\t";
#line 131 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
#line 132 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\debugMnemonic.cpsp"
} responseStream << "\n";
responseStream << "\t\t</fieldset>\n";
responseStream << "\t</form>\n";

View File

@ -91,7 +91,7 @@ void ResetPassword::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::N
sendUserEmail = true;
}
}
printf("userExist: %d, sendUserEmail: %d\n", user_exist, sendUserEmail);
if(!errorCount())
{
// send reset password email
@ -99,7 +99,7 @@ void ResetPassword::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::N
if(user_exist) {
result = session->sendResetPasswordEmail(user, sendUserEmail);
}
printf("result: %d\n", result);
if(2 == result) {
state = PAGE_EMAIL_ALREADY_SEND;
} else if(sendUserEmail) {

View File

@ -159,7 +159,7 @@ namespace controller {
mPassword = authenticated_encryption;
// additional check if saved private key found, decrypt and derive public key and compare with saved public key
if (!model->hasPrivateKeyEncrypted()) {
if (!model->hasPrivateKeyEncrypted()) {
return 1;
}
else
@ -176,7 +176,11 @@ namespace controller {
}
}
mGradidoKeyPair = new KeyPairEd25519(clear_private_key);
if (!mGradidoKeyPair->isTheSame(model->getPublicKey())) {
if (!model->getPublicKey()) {
model->setPublicKey(mGradidoKeyPair->getPublicKey());
model->updatePublickey();
}
else if (!mGradidoKeyPair->isTheSame(model->getPublicKey())) {
delete mGradidoKeyPair;
mGradidoKeyPair = nullptr;
//printf("pubkeys don't match\n");