mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
fix auto correction if privkey was saved wrong, working while passphrase is saved unencrpyted
This commit is contained in:
parent
dd5379fef6
commit
0e0d4bd336
@ -132,7 +132,10 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
|||||||
}
|
}
|
||||||
auto user = s->getUser();
|
auto user = s->getUser();
|
||||||
if (s->errorCount() || (!user.isNull() && user->errorCount())) {
|
if (s->errorCount() || (!user.isNull() && user->errorCount())) {
|
||||||
user->sendErrorsAsEmail();
|
if (!user.isNull() && user->errorCount()) {
|
||||||
|
s->getErrors(user);
|
||||||
|
}
|
||||||
|
s->sendErrorsAsEmail();
|
||||||
auto pageRequestHandler = new Error500Page(s);
|
auto pageRequestHandler = new Error500Page(s);
|
||||||
pageRequestHandler->setProfiler(timeUsed);
|
pageRequestHandler->setProfiler(timeUsed);
|
||||||
return pageRequestHandler;
|
return pageRequestHandler;
|
||||||
|
|||||||
@ -1010,6 +1010,10 @@ MemoryBin* User::encrypt(const MemoryBin* data)
|
|||||||
addError(new Error("User::encrypt", "hasn't crypto key"));
|
addError(new Error("User::encrypt", "hasn't crypto key"));
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
if (!data) {
|
||||||
|
addError(new Error("User::encrypt", "data is zero"));
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
size_t message_len = data->size();
|
size_t message_len = data->size();
|
||||||
size_t ciphertext_len = crypto_secretbox_MACBYTES + message_len;
|
size_t ciphertext_len = crypto_secretbox_MACBYTES + message_len;
|
||||||
|
|
||||||
@ -1089,7 +1093,8 @@ MemoryBin* User::sign(const unsigned char* message, size_t messageSize)
|
|||||||
auto privKey = getPrivKey();
|
auto privKey = getPrivKey();
|
||||||
|
|
||||||
if (!privKey) {
|
if (!privKey) {
|
||||||
addError(new Error("User::sign", "decrypt privkey failed"));
|
//addError(new Error("User::sign", "decrypt privkey failed"));
|
||||||
|
|
||||||
|
|
||||||
auto userBackups = controller::UserBackups::load(mDBId);
|
auto userBackups = controller::UserBackups::load(mDBId);
|
||||||
|
|
||||||
@ -1113,12 +1118,16 @@ MemoryBin* User::sign(const unsigned char* message, size_t messageSize)
|
|||||||
if (correctPassphraseFound) {
|
if (correctPassphraseFound) {
|
||||||
|
|
||||||
// save corrected key into db
|
// save corrected key into db
|
||||||
auto encyrptedPrivKey = encrypt(privKey);
|
auto encyrptedPrivKey = encrypt(keys.getPrivateKey());
|
||||||
auto newUser = controller::User::create();
|
auto newUser = controller::User::create();
|
||||||
if (1 == newUser->load(mDBId)) {
|
if (1 == newUser->load(mDBId)) {
|
||||||
auto userModel = newUser->getModel();
|
auto userModel = newUser->getModel();
|
||||||
|
if (encyrptedPrivKey) {
|
||||||
userModel->setPrivateKey(encyrptedPrivKey);
|
userModel->setPrivateKey(encyrptedPrivKey);
|
||||||
userModel->updatePrivkey();
|
userModel->updatePrivkey();
|
||||||
|
// remove unencrypt error from priv key to prevent error 404 forwarding
|
||||||
|
delete getLastError();
|
||||||
|
}
|
||||||
|
|
||||||
mm->releaseMemory(encyrptedPrivKey);
|
mm->releaseMemory(encyrptedPrivKey);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user