diff options
author | Gianluca Recchia <gianluca.recchia97@gmail.com> | 2018-11-01 06:27:38 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2018-11-29 02:29:15 +0300 |
commit | fc930bae69be516cb2ad72e83dad1cf6d8631956 (patch) | |
tree | 3deee79bad7608204299f3f6cc6dce51865c49fd /src | |
parent | f9625189cb7ddf9d1353a6dab079830778623d48 (diff) |
Restore correct formatting
Many lines were not conformant with the project's formatting rules.
This patch should fix all formatting and whitespace issues in the code
base.
A clang-format directive was put around the connect() calls containing
SIGNALs and SLOTs whose signatures would be denormalized because of the
formatting rules.
Diffstat (limited to 'src')
166 files changed, 1985 insertions, 1731 deletions
diff --git a/src/autotype/AutoType.cpp b/src/autotype/AutoType.cpp index c2ddc9752..012dee62c 100644 --- a/src/autotype/AutoType.cpp +++ b/src/autotype/AutoType.cpp @@ -672,7 +672,7 @@ bool AutoType::checkSyntax(const QString& string) QString shortcutKeys = "[\\^\\%~\\+@]"; // a normal string not in parentheses QString fixedStrings = "[^\\^\\%~\\+@\\{\\}]*"; - + // clang-format off QRegularExpression autoTypeSyntax( "^(?:" + shortcutKeys + "|" + fixedStrings + "|\\{(?:" + normalCommands + "|" + specialLiterals + "|" + functionKeys @@ -688,6 +688,7 @@ bool AutoType::checkSyntax(const QString& string) + customAttributes + "\\})*$", QRegularExpression::CaseInsensitiveOption); + // clang-format on QRegularExpressionMatch match = autoTypeSyntax.match(string); return match.hasMatch(); } @@ -755,9 +756,10 @@ bool AutoType::verifyAutoTypeSyntax(const QString& sequence) } } else if (AutoType::checkHighRepetition(sequence)) { QMessageBox::StandardButton reply; - reply = - QMessageBox::question(nullptr, tr("Auto-Type"), tr("This Auto-Type command contains arguments which are " - "repeated very often. Do you really want to proceed?")); + reply = QMessageBox::question(nullptr, + tr("Auto-Type"), + tr("This Auto-Type command contains arguments which are " + "repeated very often. Do you really want to proceed?")); if (reply == QMessageBox::No) { return false; diff --git a/src/autotype/AutoTypeSelectDialog.cpp b/src/autotype/AutoTypeSelectDialog.cpp index fe0ba811e..1449f9e02 100644 --- a/src/autotype/AutoTypeSelectDialog.cpp +++ b/src/autotype/AutoTypeSelectDialog.cpp @@ -67,10 +67,13 @@ AutoTypeSelectDialog::AutoTypeSelectDialog(QWidget* parent) QLabel* descriptionLabel = new QLabel(tr("Select entry to Auto-Type:"), this); layout->addWidget(descriptionLabel); + // clang-format off connect(m_view, SIGNAL(activated(QModelIndex)), SLOT(emitMatchActivated(QModelIndex))); connect(m_view, SIGNAL(clicked(QModelIndex)), SLOT(emitMatchActivated(QModelIndex))); connect(m_view->model(), SIGNAL(rowsRemoved(QModelIndex,int,int)), SLOT(matchRemoved())); connect(m_view, SIGNAL(rejected()), SLOT(reject())); + // clang-format on + layout->addWidget(m_view); QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Cancel, Qt::Horizontal, this); diff --git a/src/autotype/WildcardMatcher.cpp b/src/autotype/WildcardMatcher.cpp index 6afd10cee..b69425ee1 100644 --- a/src/autotype/WildcardMatcher.cpp +++ b/src/autotype/WildcardMatcher.cpp @@ -23,7 +23,7 @@ const QChar WildcardMatcher::Wildcard = '*'; const Qt::CaseSensitivity WildcardMatcher::Sensitivity = Qt::CaseInsensitive; -WildcardMatcher::WildcardMatcher(QString text) +WildcardMatcher::WildcardMatcher(QString text) : m_text(std::move(text)) { } diff --git a/src/autotype/WildcardMatcher.h b/src/autotype/WildcardMatcher.h index 5be6f5e40..d8ee1dc79 100644 --- a/src/autotype/WildcardMatcher.h +++ b/src/autotype/WildcardMatcher.h @@ -23,7 +23,7 @@ class WildcardMatcher { public: - explicit WildcardMatcher(QString text); + explicit WildcardMatcher(QString text); bool match(const QString& pattern); static const QChar Wildcard; diff --git a/src/autotype/xcb/AutoTypeXCB.cpp b/src/autotype/xcb/AutoTypeXCB.cpp index 5198468cf..94a132d40 100644 --- a/src/autotype/xcb/AutoTypeXCB.cpp +++ b/src/autotype/xcb/AutoTypeXCB.cpp @@ -211,8 +211,7 @@ int AutoTypePlatformX11::platformEventFilter(void* event) xcb_key_press_event_t* keyPressEvent = static_cast<xcb_key_press_event_t*>(event); if (keyPressEvent->detail == m_currentGlobalKeycode && (keyPressEvent->state & m_modifierMask) == m_currentGlobalNativeModifiers - && (!QApplication::activeWindow() || QApplication::activeWindow()->isMinimized()) - && m_loaded) { + && (!QApplication::activeWindow() || QApplication::activeWindow()->isMinimized()) && m_loaded) { if (type == XCB_KEY_PRESS) { emit globalShortcutTriggered(); } diff --git a/src/browser/BrowserAccessControlDialog.cpp b/src/browser/BrowserAccessControlDialog.cpp index e4205f811..9a10e555f 100644 --- a/src/browser/BrowserAccessControlDialog.cpp +++ b/src/browser/BrowserAccessControlDialog.cpp @@ -1,25 +1,26 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserAccessControlDialog.h" -#include "core/Entry.h" #include "ui_BrowserAccessControlDialog.h" +#include "core/Entry.h" + BrowserAccessControlDialog::BrowserAccessControlDialog(QWidget* parent) : QDialog(parent) , m_ui(new Ui::BrowserAccessControlDialog()) @@ -38,8 +39,8 @@ BrowserAccessControlDialog::~BrowserAccessControlDialog() void BrowserAccessControlDialog::setUrl(const QString& url) { m_ui->label->setText(QString(tr("%1 has requested access to passwords for the following item(s).\n" - "Please select whether you want to allow access.")) - .arg(QUrl(url).host())); + "Please select whether you want to allow access.")) + .arg(QUrl(url).host())); } void BrowserAccessControlDialog::setItems(const QList<Entry*>& items) diff --git a/src/browser/BrowserAccessControlDialog.h b/src/browser/BrowserAccessControlDialog.h index 65cfe5e97..4c93a54fc 100644 --- a/src/browser/BrowserAccessControlDialog.h +++ b/src/browser/BrowserAccessControlDialog.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERACCESSCONTROLDIALOG_H #define BROWSERACCESSCONTROLDIALOG_H diff --git a/src/browser/BrowserAction.cpp b/src/browser/BrowserAction.cpp index ccd17c5fd..97ead6a34 100644 --- a/src/browser/BrowserAction.cpp +++ b/src/browser/BrowserAction.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserAction.h" #include "BrowserSettings.h" @@ -167,9 +167,10 @@ QJsonObject BrowserAction::handleAssociate(const QJsonObject& json, const QStrin QMutexLocker locker(&m_mutex); if (key.compare(m_clientPublicKey, Qt::CaseSensitive) == 0) { - // Check for identification key. If it's not found, ensure backwards compatibility and use the current public key + // Check for identification key. If it's not found, ensure backwards compatibility and use the current public + // key const QString idKey = decrypted.value("idKey").toString(); - const QString id = m_browserService.storeKey((idKey.isEmpty() ? key: idKey)); + const QString id = m_browserService.storeKey((idKey.isEmpty() ? key : idKey)); if (id.isEmpty()) { return getErrorReply(action, ERROR_KEEPASS_ACTION_CANCELLED_OR_DENIED); } diff --git a/src/browser/BrowserAction.h b/src/browser/BrowserAction.h index b7a60938f..c82af2c17 100644 --- a/src/browser/BrowserAction.h +++ b/src/browser/BrowserAction.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERACTION_H #define BROWSERACTION_H diff --git a/src/browser/BrowserClients.cpp b/src/browser/BrowserClients.cpp index c994ef1d0..083df3945 100644 --- a/src/browser/BrowserClients.cpp +++ b/src/browser/BrowserClients.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserClients.h" #include <QJsonParseError> diff --git a/src/browser/BrowserClients.h b/src/browser/BrowserClients.h index b725154a5..1fa3dfe17 100644 --- a/src/browser/BrowserClients.h +++ b/src/browser/BrowserClients.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERCLIENTS_H #define BROWSERCLIENTS_H diff --git a/src/browser/BrowserEntryConfig.cpp b/src/browser/BrowserEntryConfig.cpp index 47e8762a8..a058b6a05 100644 --- a/src/browser/BrowserEntryConfig.cpp +++ b/src/browser/BrowserEntryConfig.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserEntryConfig.h" #include "core/Entry.h" diff --git a/src/browser/BrowserEntryConfig.h b/src/browser/BrowserEntryConfig.h index f1363f421..183c492aa 100644 --- a/src/browser/BrowserEntryConfig.h +++ b/src/browser/BrowserEntryConfig.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERENTRYCONFIG_H #define BROWSERENTRYCONFIG_H diff --git a/src/browser/BrowserEntrySaveDialog.cpp b/src/browser/BrowserEntrySaveDialog.cpp index 305c46c6d..43d6c0c62 100644 --- a/src/browser/BrowserEntrySaveDialog.cpp +++ b/src/browser/BrowserEntrySaveDialog.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserEntrySaveDialog.h" #include "ui_BrowserEntrySaveDialog.h" @@ -34,7 +34,7 @@ BrowserEntrySaveDialog::BrowserEntrySaveDialog(QWidget* parent) m_ui->itemsList->setSelectionMode(QAbstractItemView::SingleSelection); m_ui->label->setText(QString(tr("You have multiple databases open.\n" - "Please select the correct database for saving credentials."))); + "Please select the correct database for saving credentials."))); } BrowserEntrySaveDialog::~BrowserEntrySaveDialog() @@ -58,7 +58,7 @@ int BrowserEntrySaveDialog::setItems(QList<DatabaseWidget*>& databaseWidgets, Da } else { item->setText(QString("%1 (%2)").arg(databaseName, databaseFileName)); } - + if (currentWidget == dbWidget) { activeIndex = counter; } @@ -76,7 +76,7 @@ int BrowserEntrySaveDialog::setItems(QList<DatabaseWidget*>& databaseWidgets, Da return databaseWidgets.length(); } - QList<QListWidgetItem*> BrowserEntrySaveDialog::getSelected() const - { +QList<QListWidgetItem*> BrowserEntrySaveDialog::getSelected() const +{ return m_ui->itemsList->selectedItems(); - } +} diff --git a/src/browser/BrowserEntrySaveDialog.h b/src/browser/BrowserEntrySaveDialog.h index 0b1db7271..2e2378635 100644 --- a/src/browser/BrowserEntrySaveDialog.h +++ b/src/browser/BrowserEntrySaveDialog.h @@ -1,28 +1,29 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERENTRYSAVEDIALOG_H #define BROWSERENTRYSAVEDIALOG_H +#include "gui/DatabaseTabWidget.h" + #include <QDialog> -#include <QScopedPointer> #include <QListWidgetItem> -#include "gui/DatabaseTabWidget.h" +#include <QScopedPointer> class Entry; @@ -40,7 +41,7 @@ public: ~BrowserEntrySaveDialog() override; int setItems(QList<DatabaseWidget*>& databaseWidgets, DatabaseWidget* currentWidget) const; - QList<QListWidgetItem *> getSelected() const; + QList<QListWidgetItem*> getSelected() const; private: QScopedPointer<Ui::BrowserEntrySaveDialog> m_ui; diff --git a/src/browser/BrowserOptionDialog.cpp b/src/browser/BrowserOptionDialog.cpp index 6dcbd3263..27dce7994 100644 --- a/src/browser/BrowserOptionDialog.cpp +++ b/src/browser/BrowserOptionDialog.cpp @@ -1,27 +1,28 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserOptionDialog.h" +#include "ui_BrowserOptionDialog.h" + #include "BrowserSettings.h" #include "config-keepassx.h" #include "core/FilePath.h" -#include "ui_BrowserOptionDialog.h" #include <QFileDialog> @@ -32,18 +33,24 @@ BrowserOptionDialog::BrowserOptionDialog(QWidget* parent) m_ui->setupUi(this); m_ui->extensionLabel->setOpenExternalLinks(true); - m_ui->extensionLabel->setText(tr("KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2.").arg( - "<a href=\"https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/\">Firefox</a>", - "<a href=\"https://chrome.google.com/webstore/detail/keepassxc-browser/oboonakemofpalcgghocfoadofidjkkk\">Google Chrome / Chromium / Vivaldi</a>")); + m_ui->extensionLabel->setText( + tr("KeePassXC-Browser is needed for the browser integration to work. <br />Download it for %1 and %2.") + .arg("<a href=\"https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/\">Firefox</a>", + "<a " + "href=\"https://chrome.google.com/webstore/detail/keepassxc-browser/" + "oboonakemofpalcgghocfoadofidjkkk\">Google Chrome / Chromium / Vivaldi</a>")); m_ui->scriptWarningWidget->setVisible(false); m_ui->scriptWarningWidget->setAutoHideTimeout(-1); - m_ui->scriptWarningWidget->showMessage(tr("<b>Warning</b>, the keepassxc-proxy application was not found!" - "<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options." - "<br />Browser integration WILL NOT WORK without the proxy application." - "<br />Expected Path: "), MessageWidget::Warning); + m_ui->scriptWarningWidget->showMessage( + tr("<b>Warning</b>, the keepassxc-proxy application was not found!" + "<br />Please check the KeePassXC installation directory or confirm the custom path in advanced options." + "<br />Browser integration WILL NOT WORK without the proxy application." + "<br />Expected Path: "), + MessageWidget::Warning); - m_ui->warningWidget->showMessage(tr("<b>Warning:</b> The following options can be dangerous!"), MessageWidget::Warning); + m_ui->warningWidget->showMessage(tr("<b>Warning:</b> The following options can be dangerous!"), + MessageWidget::Warning); m_ui->warningWidget->setCloseButtonVisible(false); m_ui->warningWidget->setAutoHideTimeout(-1); diff --git a/src/browser/BrowserOptionDialog.h b/src/browser/BrowserOptionDialog.h index 5423f010f..5efb808e5 100644 --- a/src/browser/BrowserOptionDialog.h +++ b/src/browser/BrowserOptionDialog.h @@ -1,27 +1,27 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSEROPTIONDIALOG_H #define BROWSEROPTIONDIALOG_H -#include <QScopedPointer> #include <QPointer> +#include <QScopedPointer> #include <QWidget> namespace Ui diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index 1f616bd85..945f1303a 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -1,32 +1,32 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ -#include <QJsonArray> #include <QInputDialog> -#include <QProgressDialog> +#include <QJsonArray> #include <QMessageBox> +#include <QProgressDialog> #include <QUuid> -#include "BrowserService.h" #include "BrowserAccessControlDialog.h" #include "BrowserEntryConfig.h" #include "BrowserEntrySaveDialog.h" +#include "BrowserService.h" #include "BrowserSettings.h" #include "core/Database.h" #include "core/EntrySearcher.h" @@ -54,7 +54,8 @@ BrowserService::BrowserService(DatabaseTabWidget* parent) // Don't connect the signals when used from DatabaseSettingsWidgetBrowser (parent is nullptr) if (m_dbTabWidget) { connect(m_dbTabWidget, SIGNAL(databaseLocked(DatabaseWidget*)), this, SLOT(databaseLocked(DatabaseWidget*))); - connect(m_dbTabWidget, SIGNAL(databaseUnlocked(DatabaseWidget*)), this, SLOT(databaseUnlocked(DatabaseWidget*))); + connect( + m_dbTabWidget, SIGNAL(databaseUnlocked(DatabaseWidget*)), this, SLOT(databaseUnlocked(DatabaseWidget*))); connect(m_dbTabWidget, SIGNAL(activateDatabaseChanged(DatabaseWidget*)), this, @@ -355,7 +356,8 @@ void BrowserService::updateEntry(const QString& id, return; } - if (username.compare(login, Qt::CaseSensitive) != 0 || entry->password().compare(password, Qt::CaseSensitive) != 0) { + if (username.compare(login, Qt::CaseSensitive) != 0 + || entry->password().compare(password, Qt::CaseSensitive) != 0) { int dialogResult = QMessageBox::No; if (!browserSettings()->alwaysAllowUpdate()) { QMessageBox msgBox; @@ -393,16 +395,17 @@ QList<Entry*> BrowserService::searchEntries(QSharedPointer<Database> db, const Q QString entryScheme = entryQUrl.scheme(); QUrl qUrl(url); - // Ignore entry if port or scheme defined in the URL doesn't match - if ((entryQUrl.port() > 0 && entryQUrl.port() != qUrl.port()) || - (browserSettings()->matchUrlScheme() && !entryScheme.isEmpty() && entryScheme.compare(qUrl.scheme()) != 0)) { + // Ignore entry if port or scheme defined in the URL doesn't match + if ((entryQUrl.port() > 0 && entryQUrl.port() != qUrl.port()) + || (browserSettings()->matchUrlScheme() && !entryScheme.isEmpty() + && entryScheme.compare(qUrl.scheme()) != 0)) { continue; } // Filter to match hostname in URL field - if ((!entryUrl.isEmpty() && hostname.contains(entryUrl)) + if ((!entryUrl.isEmpty() && hostname.contains(entryUrl)) || (matchUrlScheme(entryUrl) && hostname.endsWith(entryQUrl.host()))) { - entries.append(entry); + entries.append(entry); } } @@ -420,7 +423,8 @@ QList<Entry*> BrowserService::searchEntries(const QString& url, const StringPair if (const auto& db = dbWidget->database()) { // Check if database is connected with KeePassXC-Browser for (const StringPair& keyPair : keyList) { - QString key = db->metadata()->customData()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + keyPair.first); + QString key = + db->metadata()->customData()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + keyPair.first); if (!key.isEmpty() && keyPair.second == key) { databases << db; } @@ -484,16 +488,22 @@ void BrowserService::convertAttributesToCustomData(QSharedPointer<Database> curr progress.reset(); if (counter > 0) { - QMessageBox::information(nullptr, tr("KeePassXC: Converted KeePassHTTP attributes"), + QMessageBox::information(nullptr, + tr("KeePassXC: Converted KeePassHTTP attributes"), tr("Successfully converted attributes from %1 entry(s).\n" - "Moved %2 keys to custom data.", "").arg(counter).arg(keyCounter), + "Moved %2 keys to custom data.", + "") + .arg(counter) + .arg(keyCounter), QMessageBox::Ok); } else if (counter == 0 && keyCounter > 0) { - QMessageBox::information(nullptr, tr("KeePassXC: Converted KeePassHTTP attributes"), + QMessageBox::information(nullptr, + tr("KeePassXC: Converted KeePassHTTP attributes"), tr("Successfully moved %n keys to custom data.", "", keyCounter), QMessageBox::Ok); } else { - QMessageBox::information(nullptr, tr("KeePassXC: No entry with KeePassHTTP attributes found!"), + QMessageBox::information(nullptr, + tr("KeePassXC: No entry with KeePassHTTP attributes found!"), tr("The active database does not contain an entry with KeePassHTTP attributes."), QMessageBox::Ok); } @@ -539,9 +549,14 @@ QList<Entry*> BrowserService::sortEntries(QList<Entry*>& pwEntries, const QStrin // Sort same priority entries by Title or UserName auto entries = priorities.values(i); std::sort(entries.begin(), entries.end(), [&field](Entry* left, Entry* right) { - return (QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) < 0) || - ((QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) == 0) && - (QString::localeAwareCompare(left->attributes()->value("UserName"), right->attributes()->value("UserName")) < 0)); + return (QString::localeAwareCompare(left->attributes()->value(field), right->attributes()->value(field)) + < 0) + || ((QString::localeAwareCompare(left->attributes()->value(field), + right->attributes()->value(field)) + == 0) + && (QString::localeAwareCompare(left->attributes()->value("UserName"), + right->attributes()->value("UserName")) + < 0)); }); results << entries; if (browserSettings()->bestMatchOnly() && !pwEntries.isEmpty()) { @@ -843,7 +858,8 @@ int BrowserService::moveKeysToCustomData(Entry* entry, QSharedPointer<Database> // Add key to database custom data if (db && !db->metadata()->customData()->contains(QLatin1String(ASSOCIATE_KEY_PREFIX) + publicKey)) { - db->metadata()->customData()->set(QLatin1String(ASSOCIATE_KEY_PREFIX) + publicKey, entry->attributes()->value(key)); + db->metadata()->customData()->set(QLatin1String(ASSOCIATE_KEY_PREFIX) + publicKey, + entry->attributes()->value(key)); ++keyCounter; } } @@ -879,7 +895,6 @@ bool BrowserService::checkLegacySettings() "Do you want to upgrade the settings to the latest standard?\n" "This is necessary to maintain compatibility with the browser plugin."), QMessageBox::Yes | QMessageBox::No); - return dialogResult == QMessageBox::Yes; } diff --git a/src/browser/BrowserService.h b/src/browser/BrowserService.h index 612b55eec..6c84696f9 100644 --- a/src/browser/BrowserService.h +++ b/src/browser/BrowserService.h @@ -1,21 +1,21 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERSERVICE_H #define BROWSERSERVICE_H diff --git a/src/browser/BrowserSettings.cpp b/src/browser/BrowserSettings.cpp index 646c6c4d3..f1f9667f8 100644 --- a/src/browser/BrowserSettings.cpp +++ b/src/browser/BrowserSettings.cpp @@ -1,21 +1,21 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "BrowserSettings.h" #include "core/Config.h" @@ -192,7 +192,7 @@ bool BrowserSettings::chromeSupport() void BrowserSettings::setChromeSupport(bool enabled) { m_hostInstaller.installBrowser( - HostInstaller::SupportedBrowsers::CHROME, enabled, supportBrowserProxy(), customProxyLocation()); + HostInstaller::SupportedBrowsers::CHROME, enabled, supportBrowserProxy(), customProxyLocation()); } bool BrowserSettings::chromiumSupport() @@ -203,7 +203,7 @@ bool BrowserSettings::chromiumSupport() void BrowserSettings::setChromiumSupport(bool enabled) { m_hostInstaller.installBrowser( - HostInstaller::SupportedBrowsers::CHROMIUM, enabled, supportBrowserProxy(), customProxyLocation()); + HostInstaller::SupportedBrowsers::CHROMIUM, enabled, supportBrowserProxy(), customProxyLocation()); } bool BrowserSettings::firefoxSupport() @@ -214,7 +214,7 @@ bool BrowserSettings::firefoxSupport() void BrowserSettings::setFirefoxSupport(bool enabled) { m_hostInstaller.installBrowser( - HostInstaller::SupportedBrowsers::FIREFOX, enabled, supportBrowserProxy(), customProxyLocation()); + HostInstaller::SupportedBrowsers::FIREFOX, enabled, supportBrowserProxy(), customProxyLocation()); } bool BrowserSettings::vivaldiSupport() @@ -225,7 +225,7 @@ bool BrowserSettings::vivaldiSupport() void BrowserSettings::setVivaldiSupport(bool enabled) { m_hostInstaller.installBrowser( - HostInstaller::SupportedBrowsers::VIVALDI, enabled, supportBrowserProxy(), customProxyLocation()); + HostInstaller::SupportedBrowsers::VIVALDI, enabled, supportBrowserProxy(), customProxyLocation()); } bool BrowserSettings::torBrowserSupport() diff --git a/src/browser/BrowserSettings.h b/src/browser/BrowserSettings.h index 92cdcd16d..0a9dc8261 100644 --- a/src/browser/BrowserSettings.h +++ b/src/browser/BrowserSettings.h @@ -1,21 +1,21 @@ /* -* Copyright (C) 2013 Francois Ferrand -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2013 Francois Ferrand + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef BROWSERSETTINGS_H #define BROWSERSETTINGS_H @@ -72,7 +72,7 @@ public: void setVivaldiSupport(bool enabled); bool torBrowserSupport(); void setTorBrowserSupport(bool enabled); - + bool passwordUseNumbers(); void setPasswordUseNumbers(bool useNumbers); bool passwordUseLowercase(); diff --git a/src/browser/HostInstaller.cpp b/src/browser/HostInstaller.cpp index f4585febe..08782fa16 100644 --- a/src/browser/HostInstaller.cpp +++ b/src/browser/HostInstaller.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "HostInstaller.h" #include "config-keepassx.h" @@ -46,8 +46,10 @@ HostInstaller::HostInstaller() , TARGET_DIR_VIVALDI("/.config/vivaldi/NativeMessagingHosts") , TARGET_DIR_TOR_BROWSER("/.tor-browser/app/Browser/TorBrowser/Data/Browser/.mozilla/native-messaging-hosts") #elif defined(Q_OS_WIN) + // clang-format off , TARGET_DIR_CHROME("HKEY_CURRENT_USER\\Software\\Google\\Chrome\\NativeMessagingHosts\\org.keepassxc.keepassxc_browser") , TARGET_DIR_CHROMIUM("HKEY_CURRENT_USER\\Software\\Chromium\\NativeMessagingHosts\\org.keepassxc.keepassxc_browser") + // clang-format on , TARGET_DIR_FIREFOX("HKEY_CURRENT_USER\\Software\\Mozilla\\NativeMessagingHosts\\org.keepassxc.keepassxc_browser") , TARGET_DIR_VIVALDI(TARGET_DIR_CHROME) , TARGET_DIR_TOR_BROWSER(TARGET_DIR_FIREFOX) @@ -163,14 +165,14 @@ QString HostInstaller::getTargetPath(SupportedBrowsers browser) const case SupportedBrowsers::VIVALDI: return TARGET_DIR_VIVALDI; case SupportedBrowsers::TOR_BROWSER: - return TARGET_DIR_TOR_BROWSER; + return TARGET_DIR_TOR_BROWSER; default: return QString(); } } /** - * Returns the browser name + * Returns the browser name * Needed for Windows to separate Chromium- or Firefox-based scripts * * @param browser Selected browser @@ -188,7 +190,7 @@ QString HostInstaller::getBrowserName(SupportedBrowsers browser) const case SupportedBrowsers::VIVALDI: return "vivaldi"; case SupportedBrowsers::TOR_BROWSER: - return "tor-browser"; + return "tor-browser"; default: return QString(); } diff --git a/src/browser/HostInstaller.h b/src/browser/HostInstaller.h index 77d1ffca5..ea0c4bd2f 100644 --- a/src/browser/HostInstaller.h +++ b/src/browser/HostInstaller.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef HOSTINSTALLER_H #define HOSTINSTALLER_H diff --git a/src/browser/NativeMessagingBase.cpp b/src/browser/NativeMessagingBase.cpp index 87c44b42c..fa88c015f 100644 --- a/src/browser/NativeMessagingBase.cpp +++ b/src/browser/NativeMessagingBase.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "NativeMessagingBase.h" #include <QStandardPaths> @@ -138,7 +138,8 @@ QString NativeMessagingBase::getLocalServerPath() const #if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) // Use XDG_RUNTIME_DIR instead of /tmp if it's available QString path = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation); - return path.isEmpty() ? QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath : path + serverPath; + return path.isEmpty() ? QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath + : path + serverPath; #else // Q_OS_MACOS, Q_OS_WIN and others return QStandardPaths::writableLocation(QStandardPaths::TempLocation) + serverPath; #endif diff --git a/src/browser/NativeMessagingBase.h b/src/browser/NativeMessagingBase.h index f27edbfc1..12e551665 100644 --- a/src/browser/NativeMessagingBase.h +++ b/src/browser/NativeMessagingBase.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef NATIVEMESSAGINGBASE_H #define NATIVEMESSAGINGBASE_H @@ -33,11 +33,11 @@ #include <unistd.h> #ifndef Q_OS_WIN +#include <sys/socket.h> #include <sys/types.h> -#include <sys/socket.h> #endif -static const int NATIVE_MSG_MAX_LENGTH = 1024*1024; +static const int NATIVE_MSG_MAX_LENGTH = 1024 * 1024; class NativeMessagingBase : public QObject { diff --git a/src/browser/NativeMessagingHost.cpp b/src/browser/NativeMessagingHost.cpp index 03f742020..5d2383b2b 100644 --- a/src/browser/NativeMessagingHost.cpp +++ b/src/browser/NativeMessagingHost.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "NativeMessagingHost.h" #include "BrowserSettings.h" @@ -65,8 +65,8 @@ void NativeMessagingHost::run() // Update KeePassXC/keepassxc-proxy binary paths to Native Messaging scripts if (browserSettings()->updateBinaryPath()) { - browserSettings()->updateBinaryPaths(browserSettings()->useCustomProxy() ? browserSettings()->customProxyLocation() - : ""); + browserSettings()->updateBinaryPaths( + browserSettings()->useCustomProxy() ? browserSettings()->customProxyLocation() : ""); } m_running.store(true); diff --git a/src/browser/NativeMessagingHost.h b/src/browser/NativeMessagingHost.h index 774306d30..30a67378a 100644 --- a/src/browser/NativeMessagingHost.h +++ b/src/browser/NativeMessagingHost.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef NATIVEMESSAGINGHOST_H #define NATIVEMESSAGINGHOST_H diff --git a/src/browser/Variant.cpp b/src/browser/Variant.cpp index 2d42ac4ec..64231736f 100644 --- a/src/browser/Variant.cpp +++ b/src/browser/Variant.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "Variant.h" diff --git a/src/browser/Variant.h b/src/browser/Variant.h index 8acdbaa56..76211cdc9 100644 --- a/src/browser/Variant.h +++ b/src/browser/Variant.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef VARIANT_H #define VARIANT_H diff --git a/src/cli/Add.cpp b/src/cli/Add.cpp index e51803614..9c78db2fb 100644 --- a/src/cli/Add.cpp +++ b/src/cli/Add.cpp @@ -51,7 +51,8 @@ int Add::execute(const QStringList& arguments) parser.addOption(Command::QuietOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption username(QStringList() << "u" << "username", + QCommandLineOption username(QStringList() << "u" + << "username", QObject::tr("Username for the entry."), QObject::tr("username")); parser.addOption(username); @@ -59,15 +60,18 @@ int Add::execute(const QStringList& arguments) QCommandLineOption url(QStringList() << "url", QObject::tr("URL for the entry."), QObject::tr("URL")); parser.addOption(url); - QCommandLineOption prompt(QStringList() << "p" << "password-prompt", + QCommandLineOption prompt(QStringList() << "p" + << "password-prompt", QObject::tr("Prompt for the entry's password.")); parser.addOption(prompt); - QCommandLineOption generate(QStringList() << "g" << "generate", + QCommandLineOption generate(QStringList() << "g" + << "generate", QObject::tr("Generate a password for the entry.")); parser.addOption(generate); - QCommandLineOption length(QStringList() << "l" << "password-length", + QCommandLineOption length(QStringList() << "l" + << "password-length", QObject::tr("Length for the generated password."), QObject::tr("length")); parser.addOption(length); diff --git a/src/cli/Clip.cpp b/src/cli/Clip.cpp index 6417c8c4b..7e81bcf70 100644 --- a/src/cli/Clip.cpp +++ b/src/cli/Clip.cpp @@ -50,12 +50,13 @@ int Clip::execute(const QStringList& arguments) parser.addOption(Command::QuietOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption totp(QStringList() << "t" << "totp", + QCommandLineOption totp(QStringList() << "t" + << "totp", QObject::tr("Copy the current TOTP to the clipboard.")); parser.addOption(totp); parser.addPositionalArgument("entry", QObject::tr("Path of the entry to clip.", "clip = copy to clipboard")); - parser.addPositionalArgument("timeout", - QObject::tr("Timeout in seconds before clearing the clipboard."), "[timeout]"); + parser.addPositionalArgument( + "timeout", QObject::tr("Timeout in seconds before clearing the clipboard."), "[timeout]"); parser.addHelpOption(); parser.process(arguments); diff --git a/src/cli/Diceware.cpp b/src/cli/Diceware.cpp index bb7931352..be1ac084f 100644 --- a/src/cli/Diceware.cpp +++ b/src/cli/Diceware.cpp @@ -43,11 +43,13 @@ int Diceware::execute(const QStringList& arguments) QCommandLineParser parser; parser.setApplicationDescription(description); - QCommandLineOption words(QStringList() << "W" << "words", + QCommandLineOption words(QStringList() << "W" + << "words", QObject::tr("Word count for the diceware passphrase."), QObject::tr("count", "CLI parameter")); parser.addOption(words); - QCommandLineOption wordlistFile(QStringList() << "w" << "word-list", + QCommandLineOption wordlistFile(QStringList() << "w" + << "word-list", QObject::tr("Wordlist for the diceware generator.\n[Default: EFF English]"), QObject::tr("path")); parser.addOption(wordlistFile); diff --git a/src/cli/Edit.cpp b/src/cli/Edit.cpp index d8d89833a..81c1e3223 100644 --- a/src/cli/Edit.cpp +++ b/src/cli/Edit.cpp @@ -51,7 +51,8 @@ int Edit::execute(const QStringList& arguments) parser.addOption(Command::QuietOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption username(QStringList() << "u" << "username", + QCommandLineOption username(QStringList() << "u" + << "username", QObject::tr("Username for the entry."), QObject::tr("username")); parser.addOption(username); @@ -59,20 +60,24 @@ int Edit::execute(const QStringList& arguments) QCommandLineOption url(QStringList() << "url", QObject::tr("URL for the entry."), QObject::tr("URL")); parser.addOption(url); - QCommandLineOption title(QStringList() << "t" << "title", + QCommandLineOption title(QStringList() << "t" + << "title", QObject::tr("Title for the entry."), QObject::tr("title")); parser.addOption(title); - QCommandLineOption prompt(QStringList() << "p" << "password-prompt", + QCommandLineOption prompt(QStringList() << "p" + << "password-prompt", QObject::tr("Prompt for the entry's password.")); parser.addOption(prompt); - QCommandLineOption generate(QStringList() << "g" << "generate", + QCommandLineOption generate(QStringList() << "g" + << "generate", QObject::tr("Generate a password for the entry.")); parser.addOption(generate); - QCommandLineOption length(QStringList() << "l" << "password-length", + QCommandLineOption length(QStringList() << "l" + << "password-length", QObject::tr("Length for the generated password."), QObject::tr("length")); parser.addOption(length); @@ -111,8 +116,7 @@ int Edit::execute(const QStringList& arguments) } if (parser.value("username").isEmpty() && parser.value("url").isEmpty() && parser.value("title").isEmpty() - && !parser.isSet(prompt) - && !parser.isSet(generate)) { + && !parser.isSet(prompt) && !parser.isSet(generate)) { err << QObject::tr("Not changing any field for entry %1.").arg(entryPath) << endl; return EXIT_FAILURE; } diff --git a/src/cli/Estimate.cpp b/src/cli/Estimate.cpp index db32f8dc7..556ff4435 100644 --- a/src/cli/Estimate.cpp +++ b/src/cli/Estimate.cpp @@ -51,9 +51,11 @@ static void estimate(const char* pwd, bool advanced) int len = static_cast<int>(strlen(pwd)); if (!advanced) { e = ZxcvbnMatch(pwd, nullptr, nullptr); + // clang-format off out << QObject::tr("Length %1").arg(len, 0) << '\t' << QObject::tr("Entropy %1").arg(e, 0, 'f', 3) << '\t' << QObject::tr("Log10 %1").arg(e * 0.301029996, 0, 'f', 3) << endl; + // clang-format on } else { int ChkLen = 0; ZxcMatch_t *info, *p; @@ -63,10 +65,12 @@ static void estimate(const char* pwd, bool advanced) m += p->Entrpy; } m = e - m; + // clang-format off out << QObject::tr("Length %1").arg(len) << '\t' << QObject::tr("Entropy %1").arg(e, 0, 'f', 3) << '\t' << QObject::tr("Log10 %1").arg(e * 0.301029996, 0, 'f', 3) << "\n " << QObject::tr("Multi-word extra bits %1").arg(m, 0, 'f', 1) << endl; + // clang-format on p = info; ChkLen = 0; while (p) { @@ -132,9 +136,10 @@ static void estimate(const char* pwd, bool advanced) break; } ChkLen += p->Length; - + // clang-format off out << QObject::tr("Length %1").arg(p->Length) << '\t' << QObject::tr("Entropy %1 (%2)").arg(p->Entrpy, 6, 'f', 3).arg(p->Entrpy * 0.301029996, 0, 'f', 2) << '\t'; + // clang-format on for (n = 0; n < p->Length; ++n, ++pwd) { out << *pwd; } @@ -143,7 +148,8 @@ static void estimate(const char* pwd, bool advanced) } ZxcvbnFreeInfo(info); if (ChkLen != len) { - out << QObject::tr("*** Password length (%1) != sum of length of parts (%2) ***").arg(len).arg(ChkLen) << endl; + out << QObject::tr("*** Password length (%1) != sum of length of parts (%2) ***").arg(len).arg(ChkLen) + << endl; } } } @@ -156,7 +162,8 @@ int Estimate::execute(const QStringList& arguments) QCommandLineParser parser; parser.setApplicationDescription(description); parser.addPositionalArgument("password", QObject::tr("Password for which to estimate the entropy."), "[password]"); - QCommandLineOption advancedOption(QStringList() << "a" << "advanced", + QCommandLineOption advancedOption(QStringList() << "a" + << "advanced", QObject::tr("Perform advanced analysis on the password.")); parser.addOption(advancedOption); parser.addHelpOption(); diff --git a/src/cli/Extract.cpp b/src/cli/Extract.cpp index 38ef09db9..0b20b9528 100644 --- a/src/cli/Extract.cpp +++ b/src/cli/Extract.cpp @@ -84,7 +84,8 @@ int Extract::execute(const QStringList& arguments) if (fileKey->type() != FileKey::Hashed) { err << QObject::tr("WARNING: You are using a legacy key file format which may become\n" "unsupported in the future.\n\n" - "Please consider generating a new key file.") << endl; + "Please consider generating a new key file.") + << endl; } // LCOV_EXCL_STOP diff --git a/src/cli/Generate.cpp b/src/cli/Generate.cpp index da2deb8d8..adbfc0cc0 100644 --- a/src/cli/Generate.cpp +++ b/src/cli/Generate.cpp @@ -43,26 +43,33 @@ int Generate::execute(const QStringList& arguments) QCommandLineParser parser; parser.setApplicationDescription(description); - QCommandLineOption len(QStringList() << "L" << "length", + QCommandLineOption len(QStringList() << "L" + << "length", QObject::tr("Length of the generated password"), QObject::tr("length")); parser.addOption(len); - QCommandLineOption lower(QStringList() << "l" << "lower", + QCommandLineOption lower(QStringList() << "l" + << "lower", QObject::tr("Use lowercase characters")); parser.addOption(lower); - QCommandLineOption upper(QStringList() << "u" << "upper", + QCommandLineOption upper(QStringList() << "u" + << "upper", QObject::tr("Use uppercase characters")); parser.addOption(upper); - QCommandLineOption numeric(QStringList() << "n" << "numeric", + QCommandLineOption numeric(QStringList() << "n" + << "numeric", QObject::tr("Use numbers.")); parser.addOption(numeric); - QCommandLineOption special(QStringList() << "s" << "special", + QCommandLineOption special(QStringList() << "s" + << "special", QObject::tr("Use special characters")); parser.addOption(special); - QCommandLineOption extended(QStringList() << "e" << "extended", + QCommandLineOption extended(QStringList() << "e" + << "extended", QObject::tr("Use extended ASCII")); parser.addOption(extended); - QCommandLineOption exclude(QStringList() << "x" << "exclude", + QCommandLineOption exclude(QStringList() << "x" + << "exclude", QObject::tr("Exclude character set"), QObject::tr("chars")); parser.addOption(exclude); diff --git a/src/cli/List.cpp b/src/cli/List.cpp index f7be0ac72..e4b06f2cc 100644 --- a/src/cli/List.cpp +++ b/src/cli/List.cpp @@ -49,7 +49,8 @@ int List::execute(const QStringList& arguments) parser.addOption(Command::QuietOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption recursiveOption(QStringList() << "R" << "recursive", + QCommandLineOption recursiveOption(QStringList() << "R" + << "recursive", QObject::tr("Recursively list the elements of the group.")); parser.addOption(recursiveOption); parser.addHelpOption(); diff --git a/src/cli/Merge.cpp b/src/cli/Merge.cpp index 17431d62e..58c7965dc 100644 --- a/src/cli/Merge.cpp +++ b/src/cli/Merge.cpp @@ -47,12 +47,14 @@ int Merge::execute(const QStringList& arguments) parser.addPositionalArgument("database2", QObject::tr("Path of the database to merge from.")); parser.addOption(Command::QuietOption); - QCommandLineOption samePasswordOption(QStringList() << "s" << "same-credentials", + QCommandLineOption samePasswordOption(QStringList() << "s" + << "same-credentials", QObject::tr("Use the same credentials for both database files.")); parser.addOption(samePasswordOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption keyFileFromOption(QStringList() << "f" << "key-file-from", + QCommandLineOption keyFileFromOption(QStringList() << "f" + << "key-file-from", QObject::tr("Key file of the database to merge from."), QObject::tr("path")); parser.addOption(keyFileFromOption); diff --git a/src/cli/Show.cpp b/src/cli/Show.cpp index 5efae70c5..e900a07b9 100644 --- a/src/cli/Show.cpp +++ b/src/cli/Show.cpp @@ -48,11 +48,13 @@ int Show::execute(const QStringList& arguments) parser.addPositionalArgument("database", QObject::tr("Path of the database.")); parser.addOption(Command::QuietOption); parser.addOption(Command::KeyFileOption); - QCommandLineOption totp(QStringList() << "t" << "totp", + QCommandLineOption totp(QStringList() << "t" + << "totp", QObject::tr("Show the entry's current TOTP.")); parser.addOption(totp); QCommandLineOption attributes( - QStringList() << "a" << "attributes", + QStringList() << "a" + << "attributes", QObject::tr( "Names of the attributes to show. " "This option can be specified more than once, with each attribute shown one-per-line in the given order. " diff --git a/src/cli/Utils.cpp b/src/cli/Utils.cpp index 7359f139c..d78c06074 100644 --- a/src/cli/Utils.cpp +++ b/src/cli/Utils.cpp @@ -28,20 +28,20 @@ namespace Utils { -/** - * STDOUT file handle for the CLI. - */ -FILE* STDOUT = stdout; + /** + * STDOUT file handle for the CLI. + */ + FILE* STDOUT = stdout; -/** - * STDERR file handle for the CLI. - */ -FILE* STDERR = stderr; + /** + * STDERR file handle for the CLI. + */ + FILE* STDERR = stderr; -/** - * STDIN file handle for the CLI. - */ -FILE* STDIN = stdin; + /** + * STDIN file handle for the CLI. + */ + FILE* STDIN = stdin; /** * DEVNULL file handle for the CLI. @@ -56,48 +56,47 @@ FILE* DEVNULL = fopen("/dev/null", "w"); void setStdinEcho(bool enable = true) { #ifdef Q_OS_WIN - HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); - DWORD mode; - GetConsoleMode(hIn, &mode); - - if (enable) { - mode |= ENABLE_ECHO_INPUT; - } else { - mode &= ~ENABLE_ECHO_INPUT; - } + HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); + DWORD mode; + GetConsoleMode(hIn, &mode); - SetConsoleMode(hIn, mode); + if (enable) { + mode |= ENABLE_ECHO_INPUT; + } else { + mode &= ~ENABLE_ECHO_INPUT; + } + SetConsoleMode(hIn, mode); #else - struct termios t; - tcgetattr(STDIN_FILENO, &t); + struct termios t; + tcgetattr(STDIN_FILENO, &t); - if (enable) { - t.c_lflag |= ECHO; - } else { - t.c_lflag &= ~ECHO; - } + if (enable) { + t.c_lflag |= ECHO; + } else { + t.c_lflag &= ~ECHO; + } - tcsetattr(STDIN_FILENO, TCSANOW, &t); + tcsetattr(STDIN_FILENO, TCSANOW, &t); #endif -} - -namespace Test -{ -QStringList nextPasswords = {}; + } -/** - * Set the next password returned by \link getPassword() instead of reading it from STDIN. - * Multiple calls to this method will fill a queue of passwords. - * This function is intended for testing purposes. - * - * @param password password to return next - */ -void setNextPassword(const QString& password) -{ - nextPasswords.append(password); -} -} // namespace Test + namespace Test + { + QStringList nextPasswords = {}; + + /** + * Set the next password returned by \link getPassword() instead of reading it from STDIN. + * Multiple calls to this method will fill a queue of passwords. + * This function is intended for testing purposes. + * + * @param password password to return next + */ + void setNextPassword(const QString& password) + { + nextPasswords.append(password); + } + } // namespace Test /** * Read a user password from STDIN or return a password previously @@ -109,74 +108,74 @@ QString getPassword(FILE* outputDescriptor) { TextStream out(outputDescriptor, QIODevice::WriteOnly); - // return preset password if one is set - if (!Test::nextPasswords.isEmpty()) { - auto password = Test::nextPasswords.takeFirst(); - // simulate user entering newline - out << endl; - return password; - } + // return preset password if one is set + if (!Test::nextPasswords.isEmpty()) { + auto password = Test::nextPasswords.takeFirst(); + // simulate user entering newline + out << endl; + return password; + } - TextStream in(STDIN, QIODevice::ReadOnly); + TextStream in(STDIN, QIODevice::ReadOnly); - setStdinEcho(false); - QString line = in.readLine(); - setStdinEcho(true); - out << endl; + setStdinEcho(false); + QString line = in.readLine(); + setStdinEcho(true); + out << endl; - return line; -} + return line; + } -/** - * A valid and running event loop is needed to use the global QClipboard, - * so we need to use this from the CLI. - */ -int clipText(const QString& text) -{ - TextStream err(Utils::STDERR); + /** + * A valid and running event loop is needed to use the global QClipboard, + * so we need to use this from the CLI. + */ + int clipText(const QString& text) + { + TextStream err(Utils::STDERR); - QString programName = ""; - QStringList arguments; + QString programName = ""; + QStringList arguments; #ifdef Q_OS_UNIX - programName = "xclip"; - arguments << "-i" - << "-selection" - << "clipboard"; + programName = "xclip"; + arguments << "-i" + << "-selection" + << "clipboard"; #endif #ifdef Q_OS_MACOS - programName = "pbcopy"; + programName = "pbcopy"; #endif #ifdef Q_OS_WIN - programName = "clip"; + programName = "clip"; #endif - if (programName.isEmpty()) { - err << QObject::tr("No program defined for clipboard manipulation"); - err.flush(); - return EXIT_FAILURE; - } - - auto* clipProcess = new QProcess(nullptr); - clipProcess->start(programName, arguments); - clipProcess->waitForStarted(); - - if (clipProcess->state() != QProcess::Running) { - err << QObject::tr("Unable to start program %1").arg(programName); - err.flush(); - return EXIT_FAILURE; + if (programName.isEmpty()) { + err << QObject::tr("No program defined for clipboard manipulation"); + err.flush(); + return EXIT_FAILURE; + } + + auto* clipProcess = new QProcess(nullptr); + clipProcess->start(programName, arguments); + clipProcess->waitForStarted(); + + if (clipProcess->state() != QProcess::Running) { + err << QObject::tr("Unable to start program %1").arg(programName); + err.flush(); + return EXIT_FAILURE; + } + + if (clipProcess->write(text.toLatin1()) == -1) { + qDebug("Unable to write to process : %s", qPrintable(clipProcess->errorString())); + } + clipProcess->waitForBytesWritten(); + clipProcess->closeWriteChannel(); + clipProcess->waitForFinished(); + + return clipProcess->exitCode(); } - if (clipProcess->write(text.toLatin1()) == -1) { - qDebug("Unable to write to process : %s", qPrintable(clipProcess->errorString())); - } - clipProcess->waitForBytesWritten(); - clipProcess->closeWriteChannel(); - clipProcess->waitForFinished(); - - return clipProcess->exitCode(); -} - -} // namespace Utils +} // namespace Utils diff --git a/src/cli/Utils.h b/src/cli/Utils.h index 8ea55da1e..28f260381 100644 --- a/src/cli/Utils.h +++ b/src/cli/Utils.h @@ -18,24 +18,24 @@ #ifndef KEEPASSXC_UTILS_H #define KEEPASSXC_UTILS_H -#include <QtCore/qglobal.h> #include "cli/TextStream.h" +#include <QtCore/qglobal.h> namespace Utils { -extern FILE* STDOUT; -extern FILE* STDERR; -extern FILE* STDIN; -extern FILE* DEVNULL; + extern FILE* STDOUT; + extern FILE* STDERR; + extern FILE* STDIN; + extern FILE* DEVNULL; -void setStdinEcho(bool enable); -QString getPassword(FILE* outputDescriptor = STDOUT); -int clipText(const QString& text); + void setStdinEcho(bool enable); + QString getPassword(FILE* outputDescriptor = STDOUT); + int clipText(const QString& text); -namespace Test -{ -void setNextPassword(const QString& password); -} -}; + namespace Test + { + void setNextPassword(const QString& password); + } +}; // namespace Utils #endif // KEEPASSXC_UTILS_H diff --git a/src/core/AsyncTask.h b/src/core/AsyncTask.h index 45bb191bc..f74d7c738 100644 --- a/src/core/AsyncTask.h +++ b/src/core/AsyncTask.h @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + */ #ifndef KEEPASSXC_ASYNCTASK_HPP #define KEEPASSXC_ASYNCTASK_HPP diff --git a/src/core/Bootstrap.cpp b/src/core/Bootstrap.cpp index 0610def8b..a62cc5a9b 100644 --- a/src/core/Bootstrap.cpp +++ b/src/core/Bootstrap.cpp @@ -26,201 +26,201 @@ namespace Bootstrap { -/** - * When QNetworkAccessManager is instantiated it regularly starts polling - * all network interfaces to see if anything changes and if so, what. This - * creates a latency spike every 10 seconds on Mac OS 10.12+ and Windows 7 >= - * when on a wifi connection. - * So here we disable it for lack of better measure. - * This will also cause this message: QObject::startTimer: Timers cannot - * have negative intervals - * For more info see: - * - https://bugreports.qt.io/browse/QTBUG-40332 - * - https://bugreports.qt.io/browse/QTBUG-46015 - */ -static inline void applyEarlyQNetworkAccessManagerWorkaround() -{ - qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1)); -} + /** + * When QNetworkAccessManager is instantiated it regularly starts polling + * all network interfaces to see if anything changes and if so, what. This + * creates a latency spike every 10 seconds on Mac OS 10.12+ and Windows 7 >= + * when on a wifi connection. + * So here we disable it for lack of better measure. + * This will also cause this message: QObject::startTimer: Timers cannot + * have negative intervals + * For more info see: + * - https://bugreports.qt.io/browse/QTBUG-40332 + * - https://bugreports.qt.io/browse/QTBUG-46015 + */ + static inline void applyEarlyQNetworkAccessManagerWorkaround() + { + qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1)); + } -/** - * Perform early application bootstrapping such as setting up search paths, - * configuration OS security properties, and loading translators. - * A QApplication object has to be instantiated before calling this function. - */ -void bootstrapApplication() -{ + /** + * Perform early application bootstrapping such as setting up search paths, + * configuration OS security properties, and loading translators. + * A QApplication object has to be instantiated before calling this function. + */ + void bootstrapApplication() + { #ifdef QT_NO_DEBUG - disableCoreDumps(); + disableCoreDumps(); #endif - setupSearchPaths(); - applyEarlyQNetworkAccessManagerWorkaround(); - Translator::installTranslators(); + setupSearchPaths(); + applyEarlyQNetworkAccessManagerWorkaround(); + Translator::installTranslators(); #ifdef Q_OS_MACOS - // Don't show menu icons on OSX - QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); + // Don't show menu icons on OSX + QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); #endif -} - -/** - * Restore the main window's state after launch - * - * @param mainWindow the main window whose state to restore - */ -void restoreMainWindowState(MainWindow& mainWindow) -{ - // start minimized if configured - if (config()->get("GUI/MinimizeOnStartup").toBool()) { - mainWindow.showMinimized(); - } else { - mainWindow.bringToFront(); } - if (config()->get("OpenPreviousDatabasesOnStartup").toBool()) { - const QStringList fileNames = config()->get("LastOpenedDatabases").toStringList(); - for (const QString& filename : fileNames) { - if (!filename.isEmpty() && QFile::exists(filename)) { - mainWindow.openDatabase(filename); + /** + * Restore the main window's state after launch + * + * @param mainWindow the main window whose state to restore + */ + void restoreMainWindowState(MainWindow& mainWindow) + { + // start minimized if configured + if (config()->get("GUI/MinimizeOnStartup").toBool()) { + mainWindow.showMinimized(); + } else { + mainWindow.bringToFront(); + } + + if (config()->get("OpenPreviousDatabasesOnStartup").toBool()) { + const QStringList fileNames = config()->get("LastOpenedDatabases").toStringList(); + for (const QString& filename : fileNames) { + if (!filename.isEmpty() && QFile::exists(filename)) { + mainWindow.openDatabase(filename); + } } } } -} -// LCOV_EXCL_START -void disableCoreDumps() -{ - // default to true - // there is no point in printing a warning if this is not implemented on the platform - bool success = true; + // LCOV_EXCL_START + void disableCoreDumps() + { + // default to true + // there is no point in printing a warning if this is not implemented on the platform + bool success = true; #if defined(HAVE_RLIMIT_CORE) - struct rlimit limit; - limit.rlim_cur = 0; - limit.rlim_max = 0; - success = success && (setrlimit(RLIMIT_CORE, &limit) == 0); + struct rlimit limit; + limit.rlim_cur = 0; + limit.rlim_max = 0; + success = success && (setrlimit(RLIMIT_CORE, &limit) == 0); #endif #if defined(HAVE_PR_SET_DUMPABLE) - success = success && (prctl(PR_SET_DUMPABLE, 0) == 0); + success = success && (prctl(PR_SET_DUMPABLE, 0) == 0); #endif // Mac OS X #ifdef HAVE_PT_DENY_ATTACH - success = success && (ptrace(PT_DENY_ATTACH, 0, 0, 0) == 0); + success = success && (ptrace(PT_DENY_ATTACH, 0, 0, 0) == 0); #endif #ifdef Q_OS_WIN - success = success && createWindowsDACL(); + success = success && createWindowsDACL(); #endif - if (!success) { - qWarning("Unable to disable core dumps."); + if (!success) { + qWarning("Unable to disable core dumps."); + } } -} - -// -// This function grants the user associated with the process token minimal access rights and -// denies everything else on Windows. This includes PROCESS_QUERY_INFORMATION and -// PROCESS_VM_READ access rights that are required for MiniDumpWriteDump() or ReadProcessMemory(). -// We do this using a discretionary access control list (DACL). Effectively this prevents -// crash dumps and disallows other processes from accessing our memory. This works as long -// as you do not have admin privileges, since then you are able to grant yourself the -// SeDebugPrivilege or SeTakeOwnershipPrivilege and circumvent the DACL. -// -bool createWindowsDACL() -{ - bool bSuccess = false; + + // + // This function grants the user associated with the process token minimal access rights and + // denies everything else on Windows. This includes PROCESS_QUERY_INFORMATION and + // PROCESS_VM_READ access rights that are required for MiniDumpWriteDump() or ReadProcessMemory(). + // We do this using a discretionary access control list (DACL). Effectively this prevents + // crash dumps and disallows other processes from accessing our memory. This works as long + // as you do not have admin privileges, since then you are able to grant yourself the + // SeDebugPrivilege or SeTakeOwnershipPrivilege and circumvent the DACL. + // + bool createWindowsDACL() + { + bool bSuccess = false; #ifdef Q_OS_WIN - // Process token and user - HANDLE hToken = nullptr; - PTOKEN_USER pTokenUser = nullptr; - DWORD cbBufferSize = 0; - - // Access control list - PACL pACL = nullptr; - DWORD cbACL = 0; - - // Open the access token associated with the calling process - if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) { - goto Cleanup; - } + // Process token and user + HANDLE hToken = nullptr; + PTOKEN_USER pTokenUser = nullptr; + DWORD cbBufferSize = 0; + + // Access control list + PACL pACL = nullptr; + DWORD cbACL = 0; + + // Open the access token associated with the calling process + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) { + goto Cleanup; + } - // Retrieve the token information in a TOKEN_USER structure - GetTokenInformation(hToken, TokenUser, nullptr, 0, &cbBufferSize); + // Retrieve the token information in a TOKEN_USER structure + GetTokenInformation(hToken, TokenUser, nullptr, 0, &cbBufferSize); - pTokenUser = static_cast<PTOKEN_USER>(HeapAlloc(GetProcessHeap(), 0, cbBufferSize)); - if (pTokenUser == nullptr) { - goto Cleanup; - } + pTokenUser = static_cast<PTOKEN_USER>(HeapAlloc(GetProcessHeap(), 0, cbBufferSize)); + if (pTokenUser == nullptr) { + goto Cleanup; + } - if (!GetTokenInformation(hToken, TokenUser, pTokenUser, cbBufferSize, &cbBufferSize)) { - goto Cleanup; - } + if (!GetTokenInformation(hToken, TokenUser, pTokenUser, cbBufferSize, &cbBufferSize)) { + goto Cleanup; + } - if (!IsValidSid(pTokenUser->User.Sid)) { - goto Cleanup; - } + if (!IsValidSid(pTokenUser->User.Sid)) { + goto Cleanup; + } - // Calculate the amount of memory that must be allocated for the DACL - cbACL = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pTokenUser->User.Sid); + // Calculate the amount of memory that must be allocated for the DACL + cbACL = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) + GetLengthSid(pTokenUser->User.Sid); - // Create and initialize an ACL - pACL = static_cast<PACL>(HeapAlloc(GetProcessHeap(), 0, cbACL)); - if (pACL == nullptr) { - goto Cleanup; - } + // Create and initialize an ACL + pACL = static_cast<PACL>(HeapAlloc(GetProcessHeap(), 0, cbACL)); + if (pACL == nullptr) { + goto Cleanup; + } - if (!InitializeAcl(pACL, cbACL, ACL_REVISION)) { - goto Cleanup; - } + if (!InitializeAcl(pACL, cbACL, ACL_REVISION)) { + goto Cleanup; + } - // Add allowed access control entries, everything else is denied - if (!AddAccessAllowedAce( - pACL, - ACL_REVISION, - SYNCHRONIZE | PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE, // same as protected process - pTokenUser->User.Sid // pointer to the trustee's SID - )) { - goto Cleanup; - } + // Add allowed access control entries, everything else is denied + if (!AddAccessAllowedAce( + pACL, + ACL_REVISION, + SYNCHRONIZE | PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE, // same as protected process + pTokenUser->User.Sid // pointer to the trustee's SID + )) { + goto Cleanup; + } - // Set discretionary access control list - bSuccess = ERROR_SUCCESS - == SetSecurityInfo(GetCurrentProcess(), // object handle - SE_KERNEL_OBJECT, // type of object - DACL_SECURITY_INFORMATION, // change only the objects DACL - nullptr, - nullptr, // do not change owner or group - pACL, // DACL specified - nullptr // do not change SACL - ); - -Cleanup: - - if (pACL != nullptr) { - HeapFree(GetProcessHeap(), 0, pACL); - } - if (pTokenUser != nullptr) { - HeapFree(GetProcessHeap(), 0, pTokenUser); - } - if (hToken != nullptr) { - CloseHandle(hToken); - } + // Set discretionary access control list + bSuccess = ERROR_SUCCESS + == SetSecurityInfo(GetCurrentProcess(), // object handle + SE_KERNEL_OBJECT, // type of object + DACL_SECURITY_INFORMATION, // change only the objects DACL + nullptr, + nullptr, // do not change owner or group + pACL, // DACL specified + nullptr // do not change SACL + ); + + Cleanup: + + if (pACL != nullptr) { + HeapFree(GetProcessHeap(), 0, pACL); + } + if (pTokenUser != nullptr) { + HeapFree(GetProcessHeap(), 0, pTokenUser); + } + if (hToken != nullptr) { + CloseHandle(hToken); + } #endif - return bSuccess; -} -// LCOV_EXCL_STOP + return bSuccess; + } + // LCOV_EXCL_STOP -void setupSearchPaths() -{ + void setupSearchPaths() + { #ifdef Q_OS_WIN - // Make sure Windows doesn't load DLLs from the current working directory - SetDllDirectoryA(""); - SetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE); + // Make sure Windows doesn't load DLLs from the current working directory + SetDllDirectoryA(""); + SetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE); #endif -} + } -} // namespace Bootstrap +} // namespace Bootstrap diff --git a/src/core/Bootstrap.h b/src/core/Bootstrap.h index 0e9db155a..95158fb8c 100644 --- a/src/core/Bootstrap.h +++ b/src/core/Bootstrap.h @@ -15,7 +15,6 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ - #ifndef KEEPASSXC_BOOTSTRAP_H #define KEEPASSXC_BOOTSTRAP_H @@ -23,12 +22,11 @@ namespace Bootstrap { -void bootstrapApplication(); -void restoreMainWindowState(MainWindow& mainWindow); -void disableCoreDumps(); -bool createWindowsDACL(); -void setupSearchPaths(); -}; - + void bootstrapApplication(); + void restoreMainWindowState(MainWindow& mainWindow); + void disableCoreDumps(); + bool createWindowsDACL(); + void setupSearchPaths(); +}; // namespace Bootstrap -#endif //KEEPASSXC_BOOTSTRAP_H +#endif // KEEPASSXC_BOOTSTRAP_H diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 01497caf9..66591a851 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -84,7 +84,7 @@ void Config::upgrade() { for (const auto& setting : deprecationMap.keys()) { if (m_settings->contains(setting)) { - if(!deprecationMap.value(setting).isEmpty()) { + if (!deprecationMap.value(setting).isEmpty()) { // Add entry with new name and old entry's value m_settings->setValue(deprecationMap.value(setting), m_settings->value(setting)); } diff --git a/src/core/Database.cpp b/src/core/Database.cpp index 6d475acf9..ff345c84e 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -720,14 +720,15 @@ QSharedPointer<Database> Database::unlockFromStdin(const QString& databaseFilena QString errorMessage; // LCOV_EXCL_START if (!fileKey->load(keyFilename, &errorMessage)) { - err << QObject::tr("Failed to load key file %1: %2").arg(keyFilename, errorMessage)<< endl; + err << QObject::tr("Failed to load key file %1: %2").arg(keyFilename, errorMessage) << endl; return {}; } if (fileKey->type() != FileKey::Hashed) { err << QObject::tr("WARNING: You are using a legacy key file format which may become\n" "unsupported in the future.\n\n" - "Please consider generating a new key file.") << endl; + "Please consider generating a new key file.") + << endl; } // LCOV_EXCL_STOP diff --git a/src/core/Entry.cpp b/src/core/Entry.cpp index 793a373bb..55f56f583 100644 --- a/src/core/Entry.cpp +++ b/src/core/Entry.cpp @@ -657,12 +657,14 @@ Entry* Entry::clone(CloneFlags flags) const if (flags & CloneUserAsRef) { // Build the username reference QString username = "{REF:U@I:" + uuidToHex() + "}"; - entry->m_attributes->set(EntryAttributes::UserNameKey, username.toUpper(), m_attributes->isProtected(EntryAttributes::UserNameKey)); + entry->m_attributes->set( + EntryAttributes::UserNameKey, username.toUpper(), m_attributes->isProtected(EntryAttributes::UserNameKey)); } if (flags & ClonePassAsRef) { QString password = "{REF:P@I:" + uuidToHex() + "}"; - entry->m_attributes->set(EntryAttributes::PasswordKey, password.toUpper(), m_attributes->isProtected(EntryAttributes::PasswordKey)); + entry->m_attributes->set( + EntryAttributes::PasswordKey, password.toUpper(), m_attributes->isProtected(EntryAttributes::PasswordKey)); } entry->m_autoTypeAssociations->copyDataFrom(m_autoTypeAssociations); @@ -1065,7 +1067,8 @@ QString Entry::resolveUrl(const QString& url) const // Validate the URL QUrl tempUrl = QUrl(newUrl); - if (tempUrl.isValid() && (tempUrl.scheme() == "http" || tempUrl.scheme() == "https" || tempUrl.scheme() == "file")) { + if (tempUrl.isValid() + && (tempUrl.scheme() == "http" || tempUrl.scheme() == "https" || tempUrl.scheme() == "file")) { return tempUrl.url(); } diff --git a/src/core/Entry.h b/src/core/Entry.h index f6518bdd3..655cc3621 100644 --- a/src/core/Entry.h +++ b/src/core/Entry.h @@ -36,7 +36,8 @@ class Database; class Group; -namespace Totp { +namespace Totp +{ struct Settings; } diff --git a/src/core/EntryAttributes.cpp b/src/core/EntryAttributes.cpp index b9fcd9ac2..fc0793ce8 100644 --- a/src/core/EntryAttributes.cpp +++ b/src/core/EntryAttributes.cpp @@ -23,8 +23,8 @@ const QString EntryAttributes::UserNameKey = "UserName"; const QString EntryAttributes::PasswordKey = "Password"; const QString EntryAttributes::URLKey = "URL"; const QString EntryAttributes::NotesKey = "Notes"; -const QStringList EntryAttributes::DefaultAttributes(QStringList() << TitleKey << UserNameKey << PasswordKey << URLKey - << NotesKey); +const QStringList EntryAttributes::DefaultAttributes(QStringList() + << TitleKey << UserNameKey << PasswordKey << URLKey << NotesKey); const QString EntryAttributes::WantedFieldGroupName = "WantedField"; const QString EntryAttributes::SearchInGroupName = "SearchIn"; diff --git a/src/core/Group.cpp b/src/core/Group.cpp index 2051fe437..ec7633b88 100644 --- a/src/core/Group.cpp +++ b/src/core/Group.cpp @@ -630,10 +630,12 @@ Entry* Group::findEntryByPathRecursive(const QString& entryPath, const QString& // Return the first entry that matches the full path OR if there is no leading // slash, return the first entry title that matches for (Entry* entry : entries()) { + // clang-format off if (entryPath == (basePath + entry->title()) || (!entryPath.startsWith("/") && entry->title() == entryPath)) { return entry; } + // clang-format on } for (Group* group : children()) { @@ -654,9 +656,11 @@ Group* Group::findGroupByPath(const QString& groupPath) if (groupPath.isEmpty()) { normalizedGroupPath = QString("/"); // root group } else { + // clang-format off normalizedGroupPath = (groupPath.startsWith("/") ? "" : "/") + groupPath + (groupPath.endsWith("/") ? "" : "/"); + // clang-format on } return findGroupByPathRecursive(normalizedGroupPath, "/"); } @@ -894,6 +898,7 @@ void Group::connectDatabaseSignalsRecursive(Database* db) } if (db) { + // clang-format off connect(this, SIGNAL(groupDataChanged(Group*)), db, SIGNAL(groupDataChanged(Group*))); connect(this, SIGNAL(groupAboutToRemove(Group*)), db, SIGNAL(groupAboutToRemove(Group*))); connect(this, SIGNAL(groupRemoved()), db, SIGNAL(groupRemoved())); @@ -902,6 +907,7 @@ void Group::connectDatabaseSignalsRecursive(Database* db) connect(this, SIGNAL(aboutToMove(Group*,Group*,int)), db, SIGNAL(groupAboutToMove(Group*,Group*,int))); connect(this, SIGNAL(groupMoved()), db, SIGNAL(groupMoved())); connect(this, SIGNAL(groupModified()), db, SLOT(markAsModified())); + // clang-format on } m_db = db; diff --git a/src/core/InactivityTimer.cpp b/src/core/InactivityTimer.cpp index 405970cc6..85c58d269 100644 --- a/src/core/InactivityTimer.cpp +++ b/src/core/InactivityTimer.cpp @@ -55,12 +55,13 @@ void InactivityTimer::deactivate() bool InactivityTimer::eventFilter(QObject* watched, QEvent* event) { const QEvent::Type type = event->type(); - + // clang-format off if ((type >= QEvent::MouseButtonPress && type <= QEvent::KeyRelease) || (type >= QEvent::HoverEnter && type <= QEvent::HoverMove) || (type == QEvent::Wheel)) { m_timer->start(); } + // clang-format on return QObject::eventFilter(watched, event); } diff --git a/src/core/Merger.cpp b/src/core/Merger.cpp index 0da7458ea..cc57ae3b2 100644 --- a/src/core/Merger.cpp +++ b/src/core/Merger.cpp @@ -93,7 +93,8 @@ Merger::ChangeList Merger::mergeGroup(const MergeContext& context) moveEntry(targetEntry, context.m_targetGroup); } else { // Entry is already present in the database. Update it. - const bool locationChanged = targetEntry->timeInfo().locationChanged() < sourceEntry->timeInfo().locationChanged(); + const bool locationChanged = + targetEntry->timeInfo().locationChanged() < sourceEntry->timeInfo().locationChanged(); if (locationChanged && targetEntry->group() != context.m_targetGroup) { changes << tr("Relocating %1 [%2]").arg(sourceEntry->title(), sourceEntry->uuidToHex()); moveEntry(targetEntry, context.m_targetGroup); @@ -136,7 +137,8 @@ Merger::ChangeList Merger::mergeGroup(const MergeContext& context) return changes; } -Merger::ChangeList Merger::resolveGroupConflict(const MergeContext& context, const Group* sourceChildGroup, Group* targetChildGroup) +Merger::ChangeList +Merger::resolveGroupConflict(const MergeContext& context, const Group* sourceChildGroup, Group* targetChildGroup) { Q_UNUSED(context); ChangeList changes; @@ -261,10 +263,13 @@ void Merger::eraseGroup(Group* group) database->setDeletedObjects(deletions); } -Merger::ChangeList Merger::resolveEntryConflict_Duplicate(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) +Merger::ChangeList +Merger::resolveEntryConflict_Duplicate(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) { ChangeList changes; - const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), sourceEntry->timeInfo().lastModificationTime(), CompareItemIgnoreMilliseconds); + const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), + sourceEntry->timeInfo().lastModificationTime(), + CompareItemIgnoreMilliseconds); // if one entry is newer, create a clone and add it to the group if (comparison < 0) { Entry* clonedEntry = sourceEntry->clone(Entry::CloneNewUuid | Entry::CloneIncludeHistory); @@ -280,11 +285,14 @@ Merger::ChangeList Merger::resolveEntryConflict_Duplicate(const MergeContext& co return changes; } -Merger::ChangeList Merger::resolveEntryConflict_KeepLocal(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) +Merger::ChangeList +Merger::resolveEntryConflict_KeepLocal(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) { Q_UNUSED(context); ChangeList changes; - const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), sourceEntry->timeInfo().lastModificationTime(), CompareItemIgnoreMilliseconds); + const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), + sourceEntry->timeInfo().lastModificationTime(), + CompareItemIgnoreMilliseconds); if (comparison < 0) { // we need to make our older entry "newer" than the new entry - therefore // we just create a new history entry without any changes - this preserves @@ -293,18 +301,21 @@ Merger::ChangeList Merger::resolveEntryConflict_KeepLocal(const MergeContext& co // this type of merge changes the database timestamp since reapplying the // old entry is an active change of the database! changes << tr("Reapplying older target entry on top of newer source %1 [%2]") - .arg(targetEntry->title(), targetEntry->uuidToHex()); + .arg(targetEntry->title(), targetEntry->uuidToHex()); Entry* agedTargetEntry = targetEntry->clone(Entry::CloneNoFlags); targetEntry->addHistoryItem(agedTargetEntry); } return changes; } -Merger::ChangeList Merger::resolveEntryConflict_KeepRemote(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) +Merger::ChangeList +Merger::resolveEntryConflict_KeepRemote(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) { Q_UNUSED(context); ChangeList changes; - const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), sourceEntry->timeInfo().lastModificationTime(), CompareItemIgnoreMilliseconds); + const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), + sourceEntry->timeInfo().lastModificationTime(), + CompareItemIgnoreMilliseconds); if (comparison > 0) { // we need to make our older entry "newer" than the new entry - therefore // we just create a new history entry without any changes - this preserves @@ -313,7 +324,7 @@ Merger::ChangeList Merger::resolveEntryConflict_KeepRemote(const MergeContext& c // this type of merge changes the database timestamp since reapplying the // old entry is an active change of the database! changes << tr("Reapplying older source entry on top of newer target %1 [%2]") - .arg(targetEntry->title(), targetEntry->uuidToHex()); + .arg(targetEntry->title(), targetEntry->uuidToHex()); targetEntry->beginUpdate(); targetEntry->copyDataFrom(sourceEntry); targetEntry->endUpdate(); @@ -322,13 +333,17 @@ Merger::ChangeList Merger::resolveEntryConflict_KeepRemote(const MergeContext& c return changes; } - -Merger::ChangeList Merger::resolveEntryConflict_MergeHistories(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry, Group::MergeMode mergeMethod) +Merger::ChangeList Merger::resolveEntryConflict_MergeHistories(const MergeContext& context, + const Entry* sourceEntry, + Entry* targetEntry, + Group::MergeMode mergeMethod) { Q_UNUSED(context); ChangeList changes; - const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), sourceEntry->timeInfo().lastModificationTime(), CompareItemIgnoreMilliseconds); + const int comparison = compare(targetEntry->timeInfo().lastModificationTime(), + sourceEntry->timeInfo().lastModificationTime(), + CompareItemIgnoreMilliseconds); if (comparison < 0) { Group* currentGroup = targetEntry->group(); Entry* clonedEntry = sourceEntry->clone(Entry::CloneIncludeHistory); @@ -347,14 +362,15 @@ Merger::ChangeList Merger::resolveEntryConflict_MergeHistories(const MergeContex qPrintable(targetEntry->group()->name())); const bool changed = mergeHistory(sourceEntry, targetEntry, mergeMethod); if (changed) { - changes << tr("Synchronizing from older source %1 [%2]").arg(targetEntry->title(), targetEntry->uuidToHex()); + changes + << tr("Synchronizing from older source %1 [%2]").arg(targetEntry->title(), targetEntry->uuidToHex()); } } return changes; } - -Merger::ChangeList Merger::resolveEntryConflict(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) +Merger::ChangeList +Merger::resolveEntryConflict(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry) { ChangeList changes; // We need to cut off the milliseconds since the persistent format only supports times down to seconds @@ -395,15 +411,19 @@ bool Merger::mergeHistory(const Entry* sourceEntry, Entry* targetEntry, Group::M Q_UNUSED(mergeMethod); const auto targetHistoryItems = targetEntry->historyItems(); const auto sourceHistoryItems = sourceEntry->historyItems(); - const int comparison = compare(sourceEntry->timeInfo().lastModificationTime(), targetEntry->timeInfo().lastModificationTime(), CompareItemIgnoreMilliseconds); + const int comparison = compare(sourceEntry->timeInfo().lastModificationTime(), + targetEntry->timeInfo().lastModificationTime(), + CompareItemIgnoreMilliseconds); const bool preferLocal = mergeMethod == Group::KeepLocal || comparison < 0; const bool preferRemote = mergeMethod == Group::KeepRemote || comparison > 0; QMap<QDateTime, Entry*> merged; for (Entry* historyItem : targetHistoryItems) { const QDateTime modificationTime = Clock::serialized(historyItem->timeInfo().lastModificationTime()); - if (merged.contains(modificationTime) && !merged[modificationTime]->equals(historyItem, CompareItemIgnoreMilliseconds)) { - ::qWarning("Inconsistent history entry of %s[%s] at %s contains conflicting changes - conflict resolution may lose data!", + if (merged.contains(modificationTime) + && !merged[modificationTime]->equals(historyItem, CompareItemIgnoreMilliseconds)) { + ::qWarning("Inconsistent history entry of %s[%s] at %s contains conflicting changes - conflict resolution " + "may lose data!", qPrintable(sourceEntry->title()), qPrintable(sourceEntry->uuidToHex()), qPrintable(modificationTime.toString("yyyy-MM-dd HH-mm-ss-zzz"))); @@ -413,8 +433,10 @@ bool Merger::mergeHistory(const Entry* sourceEntry, Entry* targetEntry, Group::M for (Entry* historyItem : sourceHistoryItems) { // Items with same modification-time changes will be regarded as same (like KeePass2) const QDateTime modificationTime = Clock::serialized(historyItem->timeInfo().lastModificationTime()); - if (merged.contains(modificationTime) && !merged[modificationTime]->equals(historyItem, CompareItemIgnoreMilliseconds)) { - ::qWarning("History entry of %s[%s] at %s contains conflicting changes - conflict resolution may lose data!", + if (merged.contains(modificationTime) + && !merged[modificationTime]->equals(historyItem, CompareItemIgnoreMilliseconds)) { + ::qWarning( + "History entry of %s[%s] at %s contains conflicting changes - conflict resolution may lose data!", qPrintable(sourceEntry->title()), qPrintable(sourceEntry->uuidToHex()), qPrintable(modificationTime.toString("yyyy-MM-dd HH-mm-ss-zzz"))); @@ -430,7 +452,9 @@ bool Merger::mergeHistory(const Entry* sourceEntry, Entry* targetEntry, Group::M const QDateTime targetModificationTime = Clock::serialized(targetEntry->timeInfo().lastModificationTime()); const QDateTime sourceModificationTime = Clock::serialized(sourceEntry->timeInfo().lastModificationTime()); - if (targetModificationTime == sourceModificationTime && !targetEntry->equals(sourceEntry, CompareItemIgnoreMilliseconds | CompareItemIgnoreHistory | CompareItemIgnoreLocation)) { + if (targetModificationTime == sourceModificationTime + && !targetEntry->equals(sourceEntry, + CompareItemIgnoreMilliseconds | CompareItemIgnoreHistory | CompareItemIgnoreLocation)) { ::qWarning("Entry of %s[%s] contains conflicting changes - conflict resolution may lose data!", qPrintable(sourceEntry->title()), qPrintable(sourceEntry->uuidToHex())); diff --git a/src/core/Merger.h b/src/core/Merger.h index 1f16fe026..03a47a27f 100644 --- a/src/core/Merger.h +++ b/src/core/Merger.h @@ -55,14 +55,22 @@ private: bool mergeHistory(const Entry* sourceEntry, Entry* targetEntry, Group::MergeMode mergeMethod); void moveEntry(Entry* entry, Group* targetGroup); void moveGroup(Group* group, Group* targetGroup); - void eraseEntry(Entry* entry); // remove an entry without a trace in the deletedObjects - needed for elemination cloned entries - void eraseGroup(Group* group); // remove an entry without a trace in the deletedObjects - needed for elemination cloned entries + // remove an entry without a trace in the deletedObjects - needed for elemination cloned entries + void eraseEntry(Entry* entry); + // remove an entry without a trace in the deletedObjects - needed for elemination cloned entries + void eraseGroup(Group* group); ChangeList resolveEntryConflict(const MergeContext& context, const Entry* existingEntry, Entry* otherEntry); ChangeList resolveGroupConflict(const MergeContext& context, const Group* existingGroup, Group* otherGroup); - Merger::ChangeList resolveEntryConflict_Duplicate(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); - Merger::ChangeList resolveEntryConflict_KeepLocal(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); - Merger::ChangeList resolveEntryConflict_KeepRemote(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); - Merger::ChangeList resolveEntryConflict_MergeHistories(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry, Group::MergeMode mergeMethod); + Merger::ChangeList + resolveEntryConflict_Duplicate(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); + Merger::ChangeList + resolveEntryConflict_KeepLocal(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); + Merger::ChangeList + resolveEntryConflict_KeepRemote(const MergeContext& context, const Entry* sourceEntry, Entry* targetEntry); + Merger::ChangeList resolveEntryConflict_MergeHistories(const MergeContext& context, + const Entry* sourceEntry, + Entry* targetEntry, + Group::MergeMode mergeMethod); private: MergeContext m_context; diff --git a/src/core/Metadata.cpp b/src/core/Metadata.cpp index 40bf52775..45010a4ff 100644 --- a/src/core/Metadata.cpp +++ b/src/core/Metadata.cpp @@ -429,7 +429,7 @@ void Metadata::removeCustomIcon(const QUuid& uuid) emit metadataModified(); } -QUuid Metadata::findCustomIcon(const QImage &candidate) +QUuid Metadata::findCustomIcon(const QImage& candidate) { QByteArray hash = hashImage(candidate); return m_customIconsHashes.value(hash, QUuid()); diff --git a/src/core/OSEventFilter.h b/src/core/OSEventFilter.h index 1dca5392e..a27ade713 100644 --- a/src/core/OSEventFilter.h +++ b/src/core/OSEventFilter.h @@ -9,6 +9,7 @@ class OSEventFilter : public QAbstractNativeEventFilter public: OSEventFilter(); bool nativeEventFilter(const QByteArray& eventType, void* message, long* result) override; + private: Q_DISABLE_COPY(OSEventFilter) }; diff --git a/src/core/PasswordGenerator.cpp b/src/core/PasswordGenerator.cpp index 69a0dfb3e..1132582d6 100644 --- a/src/core/PasswordGenerator.cpp +++ b/src/core/PasswordGenerator.cpp @@ -124,7 +124,6 @@ bool PasswordGenerator::isValid() const } return !passwordGroups().isEmpty(); - } QVector<PasswordGroup> PasswordGenerator::passwordGroups() const diff --git a/src/core/Tools.cpp b/src/core/Tools.cpp index 362cfa937..673e6a604 100644 --- a/src/core/Tools.cpp +++ b/src/core/Tools.cpp @@ -22,14 +22,12 @@ #include "core/Translator.h" #include <QCoreApplication> +#include <QElapsedTimer> #include <QIODevice> #include <QImageReader> #include <QLocale> -#include <QStringList> #include <QRegularExpression> - -#include <QElapsedTimer> - +#include <QStringList> #include <cctype> #ifdef Q_OS_WIN @@ -59,147 +57,145 @@ namespace Tools { -QString humanReadableFileSize(qint64 bytes, quint32 precision) -{ - constexpr auto kibibyte = 1024; - double size = bytes; - - QStringList units = QStringList() << "B" - << "KiB" - << "MiB" - << "GiB"; - int i = 0; - int maxI = units.size() - 1; - - while ((size >= kibibyte) && (i < maxI)) { - size /= kibibyte; - i++; - } - - return QString("%1 %2").arg(QLocale().toString(size, 'f', precision), units.at(i)); -} + QString humanReadableFileSize(qint64 bytes, quint32 precision) + { + constexpr auto kibibyte = 1024; + double size = bytes; + + QStringList units = QStringList() << "B" + << "KiB" + << "MiB" + << "GiB"; + int i = 0; + int maxI = units.size() - 1; + + while ((size >= kibibyte) && (i < maxI)) { + size /= kibibyte; + i++; + } -bool readFromDevice(QIODevice* device, QByteArray& data, int size) -{ - QByteArray buffer; - buffer.resize(size); - - qint64 readResult = device->read(buffer.data(), size); - if (readResult == -1) { - return false; - } else { - buffer.resize(readResult); - data = buffer; - return true; + return QString("%1 %2").arg(QLocale().toString(size, 'f', precision), units.at(i)); } -} -bool readAllFromDevice(QIODevice* device, QByteArray& data) -{ - QByteArray result; - qint64 readBytes = 0; - qint64 readResult; - do { - result.resize(result.size() + 16384); - readResult = device->read(result.data() + readBytes, result.size() - readBytes); - if (readResult > 0) { - readBytes += readResult; + bool readFromDevice(QIODevice* device, QByteArray& data, int size) + { + QByteArray buffer; + buffer.resize(size); + + qint64 readResult = device->read(buffer.data(), size); + if (readResult == -1) { + return false; + } else { + buffer.resize(readResult); + data = buffer; + return true; } } - while (readResult > 0); - if (readResult == -1) { - return false; - } else { - result.resize(static_cast<int>(readBytes)); - data = result; - return true; + bool readAllFromDevice(QIODevice* device, QByteArray& data) + { + QByteArray result; + qint64 readBytes = 0; + qint64 readResult; + do { + result.resize(result.size() + 16384); + readResult = device->read(result.data() + readBytes, result.size() - readBytes); + if (readResult > 0) { + readBytes += readResult; + } + } while (readResult > 0); + + if (readResult == -1) { + return false; + } else { + result.resize(static_cast<int>(readBytes)); + data = result; + return true; + } } -} -QString imageReaderFilter() -{ - const QList<QByteArray> formats = QImageReader::supportedImageFormats(); - QStringList formatsStringList; + QString imageReaderFilter() + { + const QList<QByteArray> formats = QImageReader::supportedImageFormats(); + QStringList formatsStringList; - for (const QByteArray& format : formats) { - for (char codePoint : format) { - if (!QChar(codePoint).isLetterOrNumber()) { - continue; + for (const QByteArray& format : formats) { + for (char codePoint : format) { + if (!QChar(codePoint).isLetterOrNumber()) { + continue; + } } + + formatsStringList.append("*." + QString::fromLatin1(format).toLower()); } - formatsStringList.append("*." + QString::fromLatin1(format).toLower()); + return formatsStringList.join(" "); } - return formatsStringList.join(" "); -} - -bool isHex(const QByteArray& ba) -{ - for (const unsigned char c : ba) { - if (!std::isxdigit(c)) { - return false; + bool isHex(const QByteArray& ba) + { + for (const unsigned char c : ba) { + if (!std::isxdigit(c)) { + return false; + } } + + return true; } - return true; -} + bool isBase64(const QByteArray& ba) + { + constexpr auto pattern = R"(^(?:[a-z0-9+]{4})*(?:[a-z0-9+]{3}=|[a-z0-9+]{2}==)?$)"; + QRegExp regexp(pattern, Qt::CaseInsensitive, QRegExp::RegExp2); -bool isBase64(const QByteArray& ba) -{ - constexpr auto pattern = R"(^(?:[a-z0-9+]{4})*(?:[a-z0-9+]{3}=|[a-z0-9+]{2}==)?$)"; - QRegExp regexp(pattern, Qt::CaseInsensitive, QRegExp::RegExp2); + QString base64 = QString::fromLatin1(ba.constData(), ba.size()); - QString base64 = QString::fromLatin1(ba.constData(), ba.size()); + return regexp.exactMatch(base64); + } - return regexp.exactMatch(base64); -} + void sleep(int ms) + { + Q_ASSERT(ms >= 0); -void sleep(int ms) -{ - Q_ASSERT(ms >= 0); - - if (ms == 0) { - return; - } + if (ms == 0) { + return; + } #ifdef Q_OS_WIN - Sleep(uint(ms)); + Sleep(uint(ms)); #else - timespec ts; - ts.tv_sec = ms/1000; - ts.tv_nsec = (ms%1000)*1000*1000; - nanosleep(&ts, nullptr); + timespec ts; + ts.tv_sec = ms / 1000; + ts.tv_nsec = (ms % 1000) * 1000 * 1000; + nanosleep(&ts, nullptr); #endif -} - -void wait(int ms) -{ - Q_ASSERT(ms >= 0); - - if (ms == 0) { - return; } - QElapsedTimer timer; - timer.start(); + void wait(int ms) + { + Q_ASSERT(ms >= 0); - if (ms <= 50) { - QCoreApplication::processEvents(QEventLoop::AllEvents, ms); - sleep(qMax(ms - static_cast<int>(timer.elapsed()), 0)); - } else { - int timeLeft; - do { - timeLeft = ms - timer.elapsed(); - if (timeLeft > 0) { - QCoreApplication::processEvents(QEventLoop::AllEvents, timeLeft); - sleep(10); - } + if (ms == 0) { + return; + } + + QElapsedTimer timer; + timer.start(); + + if (ms <= 50) { + QCoreApplication::processEvents(QEventLoop::AllEvents, ms); + sleep(qMax(ms - static_cast<int>(timer.elapsed()), 0)); + } else { + int timeLeft; + do { + timeLeft = ms - timer.elapsed(); + if (timeLeft > 0) { + QCoreApplication::processEvents(QEventLoop::AllEvents, timeLeft); + sleep(10); + } + } while (!timer.hasExpired(ms)); } - while (!timer.hasExpired(ms)); } -} // Escape common regex symbols except for *, ?, and | auto regexEscape = QRegularExpression(R"re(([-[\]{}()+.,\\\/^$#]))re"); diff --git a/src/core/Tools.h b/src/core/Tools.h index 37214f069..984bab491 100644 --- a/src/core/Tools.h +++ b/src/core/Tools.h @@ -31,28 +31,28 @@ class QRegularExpression; namespace Tools { -QString humanReadableFileSize(qint64 bytes, quint32 precision = 2); -bool readFromDevice(QIODevice* device, QByteArray& data, int size = 16384); -bool readAllFromDevice(QIODevice* device, QByteArray& data); -QString imageReaderFilter(); -bool isHex(const QByteArray& ba); -bool isBase64(const QByteArray& ba); -void sleep(int ms); -void wait(int ms); -QRegularExpression convertToRegex(const QString& string, bool useWildcards = false, bool exactMatch = false, - bool caseSensitive = false); - -template <typename RandomAccessIterator, typename T> -RandomAccessIterator binaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T& value) -{ - RandomAccessIterator it = std::lower_bound(begin, end, value); - - if ((it == end) || (value < *it)) { - return end; - } else { - return it; + QString humanReadableFileSize(qint64 bytes, quint32 precision = 2); + bool readFromDevice(QIODevice* device, QByteArray& data, int size = 16384); + bool readAllFromDevice(QIODevice* device, QByteArray& data); + QString imageReaderFilter(); + bool isHex(const QByteArray& ba); + bool isBase64(const QByteArray& ba); + void sleep(int ms); + void wait(int ms); + QRegularExpression convertToRegex(const QString& string, bool useWildcards = false, + bool exactMatch = false, bool caseSensitive = false); + + template <typename RandomAccessIterator, typename T> + RandomAccessIterator binaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T& value) + { + RandomAccessIterator it = std::lower_bound(begin, end, value); + + if ((it == end) || (value < *it)) { + return end; + } else { + return it; + } } -} } // namespace Tools diff --git a/src/crypto/Crypto.cpp b/src/crypto/Crypto.cpp index fffcddfbd..ab97322ca 100644 --- a/src/crypto/Crypto.cpp +++ b/src/crypto/Crypto.cpp @@ -144,8 +144,9 @@ bool Crypto::testSha512() QByteArray sha512Test = CryptoHash::hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", CryptoHash::Sha512); - if (sha512Test != QByteArray::fromHex("204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b" - "07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445")) { + if (sha512Test + != QByteArray::fromHex("204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b" + "07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445")) { raiseError("SHA-512 mismatch."); return false; } diff --git a/src/crypto/SymmetricCipher.cpp b/src/crypto/SymmetricCipher.cpp index 10077e7e5..3637161ee 100644 --- a/src/crypto/SymmetricCipher.cpp +++ b/src/crypto/SymmetricCipher.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "SymmetricCipher.h" diff --git a/src/crypto/SymmetricCipher.h b/src/crypto/SymmetricCipher.h index ede5ab1a4..e0e91aff1 100644 --- a/src/crypto/SymmetricCipher.h +++ b/src/crypto/SymmetricCipher.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_SYMMETRICCIPHER_H #define KEEPASSX_SYMMETRICCIPHER_H diff --git a/src/crypto/SymmetricCipherBackend.h b/src/crypto/SymmetricCipherBackend.h index 27a39177e..781e33484 100644 --- a/src/crypto/SymmetricCipherBackend.h +++ b/src/crypto/SymmetricCipherBackend.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_SYMMETRICCIPHERBACKEND_H #define KEEPASSX_SYMMETRICCIPHERBACKEND_H diff --git a/src/crypto/SymmetricCipherGcrypt.cpp b/src/crypto/SymmetricCipherGcrypt.cpp index e3bc88cbf..8466954d6 100644 --- a/src/crypto/SymmetricCipherGcrypt.cpp +++ b/src/crypto/SymmetricCipherGcrypt.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "SymmetricCipherGcrypt.h" diff --git a/src/crypto/SymmetricCipherGcrypt.h b/src/crypto/SymmetricCipherGcrypt.h index 6f806b90b..20feca10a 100644 --- a/src/crypto/SymmetricCipherGcrypt.h +++ b/src/crypto/SymmetricCipherGcrypt.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_SYMMETRICCIPHERGCRYPT_H #define KEEPASSX_SYMMETRICCIPHERGCRYPT_H diff --git a/src/crypto/kdf/Argon2Kdf.h b/src/crypto/kdf/Argon2Kdf.h index 2f029a570..73b7f8529 100644 --- a/src/crypto/kdf/Argon2Kdf.h +++ b/src/crypto/kdf/Argon2Kdf.h @@ -46,12 +46,12 @@ protected: private: Q_REQUIRED_RESULT static bool transformKeyRaw(const QByteArray& key, - const QByteArray& seed, - quint32 version, - quint32 rounds, - quint64 memory, - quint32 parallelism, - QByteArray& result); + const QByteArray& seed, + quint32 version, + quint32 rounds, + quint64 memory, + quint32 parallelism, + QByteArray& result); }; #endif // KEEPASSX_ARGON2KDF_H diff --git a/src/crypto/kdf/Kdf.h b/src/crypto/kdf/Kdf.h index 1dff11067..36b4772f2 100644 --- a/src/crypto/kdf/Kdf.h +++ b/src/crypto/kdf/Kdf.h @@ -18,8 +18,8 @@ #ifndef KEEPASSX_KDF_H #define KEEPASSX_KDF_H -#include <QVariant> #include <QUuid> +#include <QVariant> #define KDF_DEFAULT_SEED_SIZE 32 #define KDF_DEFAULT_ROUNDS 1000000ull diff --git a/src/format/Kdbx3Reader.cpp b/src/format/Kdbx3Reader.cpp index 2ef6820ca..4fec74718 100644 --- a/src/format/Kdbx3Reader.cpp +++ b/src/format/Kdbx3Reader.cpp @@ -42,8 +42,7 @@ bool Kdbx3Reader::readDatabaseImpl(QIODevice* device, // check if all required headers were present if (m_masterSeed.isEmpty() || m_encryptionIV.isEmpty() || m_streamStartBytes.isEmpty() - || m_protectedStreamKey.isEmpty() - || db->cipher().isNull()) { + || m_protectedStreamKey.isEmpty() || db->cipher().isNull()) { raiseError(tr("missing database headers")); return false; } diff --git a/src/format/Kdbx3Writer.cpp b/src/format/Kdbx3Writer.cpp index 20af01406..b2de41f44 100644 --- a/src/format/Kdbx3Writer.cpp +++ b/src/format/Kdbx3Writer.cpp @@ -66,9 +66,10 @@ bool Kdbx3Writer::writeDatabase(QIODevice* device, Database* db) writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, KeePass2::FILE_VERSION_3_1); CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toRfc4122())); - CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::CompressionFlags, - Endian::sizedIntToBytes<qint32>(db->compressionAlgorithm(), - KeePass2::BYTEORDER))); + CHECK_RETURN_FALSE( + writeHeaderField<quint16>(&header, + KeePass2::HeaderFieldID::CompressionFlags, + Endian::sizedIntToBytes<qint32>(db->compressionAlgorithm(), KeePass2::BYTEORDER))); auto kdf = db->kdf(); CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::MasterSeed, masterSeed)); CHECK_RETURN_FALSE(writeHeaderField<quint16>(&header, KeePass2::HeaderFieldID::TransformSeed, kdf->seed())); diff --git a/src/format/Kdbx4Writer.cpp b/src/format/Kdbx4Writer.cpp index a73cbd83a..33c0024ed 100644 --- a/src/format/Kdbx4Writer.cpp +++ b/src/format/Kdbx4Writer.cpp @@ -72,10 +72,12 @@ bool Kdbx4Writer::writeDatabase(QIODevice* device, Database* db) writeMagicNumbers(&header, KeePass2::SIGNATURE_1, KeePass2::SIGNATURE_2, KeePass2::FILE_VERSION_4); - CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toRfc4122())); - CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::CompressionFlags, - Endian::sizedIntToBytes(static_cast<int>(db->compressionAlgorithm()), - KeePass2::BYTEORDER))); + CHECK_RETURN_FALSE( + writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::CipherID, db->cipher().toRfc4122())); + CHECK_RETURN_FALSE(writeHeaderField<quint32>( + &header, + KeePass2::HeaderFieldID::CompressionFlags, + Endian::sizedIntToBytes(static_cast<int>(db->compressionAlgorithm()), KeePass2::BYTEORDER))); CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::MasterSeed, masterSeed)); CHECK_RETURN_FALSE(writeHeaderField<quint32>(&header, KeePass2::HeaderFieldID::EncryptionIV, encryptionIV)); diff --git a/src/format/KdbxXmlReader.cpp b/src/format/KdbxXmlReader.cpp index b64c28a22..163a9fa9d 100644 --- a/src/format/KdbxXmlReader.cpp +++ b/src/format/KdbxXmlReader.cpp @@ -44,7 +44,7 @@ KdbxXmlReader::KdbxXmlReader(quint32 version) * @param version KDBX version * @param binaryPool binary pool */ -KdbxXmlReader::KdbxXmlReader(quint32 version, QHash<QString, QByteArray> binaryPool) +KdbxXmlReader::KdbxXmlReader(quint32 version, QHash<QString, QByteArray> binaryPool) : m_kdbxVersion(version) , m_binaryPool(std::move(binaryPool)) { diff --git a/src/format/KdbxXmlReader.h b/src/format/KdbxXmlReader.h index dab6fc639..2ec9c9f66 100644 --- a/src/format/KdbxXmlReader.h +++ b/src/format/KdbxXmlReader.h @@ -21,7 +21,6 @@ #include "core/Database.h" #include "core/Metadata.h" #include "core/TimeInfo.h" -#include "core/Database.h" #include <QCoreApplication> #include <QPair> @@ -42,7 +41,7 @@ class KdbxXmlReader public: explicit KdbxXmlReader(quint32 version); - explicit KdbxXmlReader(quint32 version, QHash<QString, QByteArray> binaryPool); + explicit KdbxXmlReader(quint32 version, QHash<QString, QByteArray> binaryPool); virtual ~KdbxXmlReader() = default; virtual QSharedPointer<Database> readDatabase(const QString& filename); diff --git a/src/format/KdbxXmlWriter.cpp b/src/format/KdbxXmlWriter.cpp index 6bc4be51e..a95a60091 100644 --- a/src/format/KdbxXmlWriter.cpp +++ b/src/format/KdbxXmlWriter.cpp @@ -356,12 +356,14 @@ void KdbxXmlWriter::writeEntry(const Entry* entry) for (const QString& key : attributesKeyList) { m_xml.writeStartElement("String"); + // clang-format off bool protect = (((key == "Title") && m_meta->protectTitle()) || ((key == "UserName") && m_meta->protectUsername()) || ((key == "Password") && m_meta->protectPassword()) || ((key == "URL") && m_meta->protectUrl()) || ((key == "Notes") && m_meta->protectNotes()) || entry->attributes()->isProtected(key)); + // clang-format on writeString("Key", key); diff --git a/src/format/KeePass1.h b/src/format/KeePass1.h index fa220da03..caddee441 100644 --- a/src/format/KeePass1.h +++ b/src/format/KeePass1.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2012 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2012 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_KEEPASS1_H #define KEEPASSX_KEEPASS1_H @@ -35,6 +35,6 @@ namespace KeePass1 Rijndael = 2, Twofish = 8 }; -} +} // namespace KeePass1 #endif // KEEPASSX_KEEPASS1_H diff --git a/src/format/KeePass2.cpp b/src/format/KeePass2.cpp index 639255d27..fbc393030 100644 --- a/src/format/KeePass2.cpp +++ b/src/format/KeePass2.cpp @@ -23,14 +23,14 @@ #define UUID_LENGTH 16 -const QUuid KeePass2::CIPHER_AES128 = QUuid("61ab05a1-9464-41c3-8d74-3a563df8dd35"); -const QUuid KeePass2::CIPHER_AES256 = QUuid("31c1f2e6-bf71-4350-be58-05216afc5aff"); -const QUuid KeePass2::CIPHER_TWOFISH = QUuid("ad68f29f-576f-4bb9-a36a-d47af965346c"); +const QUuid KeePass2::CIPHER_AES128 = QUuid("61ab05a1-9464-41c3-8d74-3a563df8dd35"); +const QUuid KeePass2::CIPHER_AES256 = QUuid("31c1f2e6-bf71-4350-be58-05216afc5aff"); +const QUuid KeePass2::CIPHER_TWOFISH = QUuid("ad68f29f-576f-4bb9-a36a-d47af965346c"); const QUuid KeePass2::CIPHER_CHACHA20 = QUuid("d6038a2b-8b6f-4cb5-a524-339a31dbb59a"); -const QUuid KeePass2::KDF_AES_KDBX3 = QUuid("c9d9f39a-628a-4460-bf74-0d08c18a4fea"); -const QUuid KeePass2::KDF_AES_KDBX4 = QUuid("7c02bb82-79a7-4ac0-927d-114a00648238"); -const QUuid KeePass2::KDF_ARGON2 = QUuid("ef636ddf-8c29-444b-91f7-a9a403e30a0c"); +const QUuid KeePass2::KDF_AES_KDBX3 = QUuid("c9d9f39a-628a-4460-bf74-0d08c18a4fea"); +const QUuid KeePass2::KDF_AES_KDBX4 = QUuid("7c02bb82-79a7-4ac0-927d-114a00648238"); +const QUuid KeePass2::KDF_ARGON2 = QUuid("ef636ddf-8c29-444b-91f7-a9a403e30a0c"); const QByteArray KeePass2::INNER_STREAM_SALSA20_IV("\xe8\x30\x09\x4b\x97\x20\x5d\x2a"); @@ -50,14 +50,12 @@ const QString KeePass2::KDFPARAM_ARGON2_ASSOCDATA("A"); const QList<QPair<QUuid, QString>> KeePass2::CIPHERS{ qMakePair(KeePass2::CIPHER_AES256, QObject::tr("AES: 256-bit")), qMakePair(KeePass2::CIPHER_TWOFISH, QObject::tr("Twofish: 256-bit")), - qMakePair(KeePass2::CIPHER_CHACHA20, QObject::tr("ChaCha20: 256-bit")) -}; + qMakePair(KeePass2::CIPHER_CHACHA20, QObject::tr("ChaCha20: 256-bit"))}; const QList<QPair<QUuid, QString>> KeePass2::KDFS{ qMakePair(KeePass2::KDF_ARGON2, QObject::tr("Argon2 (KDBX 4 – recommended)")), qMakePair(KeePass2::KDF_AES_KDBX4, QObject::tr("AES-KDF (KDBX 4)")), - qMakePair(KeePass2::KDF_AES_KDBX3, QObject::tr("AES-KDF (KDBX 3.1)")) -}; + qMakePair(KeePass2::KDF_AES_KDBX3, QObject::tr("AES-KDF (KDBX 3.1)"))}; QByteArray KeePass2::hmacKey(const QByteArray& masterSeed, const QByteArray& transformedMasterKey) { diff --git a/src/format/KeePass2.h b/src/format/KeePass2.h index 195ce8c2b..d18db3578 100644 --- a/src/format/KeePass2.h +++ b/src/format/KeePass2.h @@ -21,9 +21,9 @@ #include <QList> #include <QMap> #include <QSharedPointer> +#include <QUuid> #include <QVariantMap> #include <QtGlobal> -#include <QUuid> #include "crypto/SymmetricCipher.h" #include "crypto/kdf/Kdf.h" @@ -46,14 +46,14 @@ namespace KeePass2 const QSysInfo::Endian BYTEORDER = QSysInfo::LittleEndian; -extern const QUuid CIPHER_AES128; -extern const QUuid CIPHER_AES256; -extern const QUuid CIPHER_TWOFISH; -extern const QUuid CIPHER_CHACHA20; + extern const QUuid CIPHER_AES128; + extern const QUuid CIPHER_AES256; + extern const QUuid CIPHER_TWOFISH; + extern const QUuid CIPHER_CHACHA20; -extern const QUuid KDF_AES_KDBX3; -extern const QUuid KDF_AES_KDBX4; -extern const QUuid KDF_ARGON2; + extern const QUuid KDF_AES_KDBX3; + extern const QUuid KDF_AES_KDBX4; + extern const QUuid KDF_ARGON2; extern const QByteArray INNER_STREAM_SALSA20_IV; @@ -68,8 +68,8 @@ extern const QUuid KDF_ARGON2; extern const QString KDFPARAM_ARGON2_SECRET; extern const QString KDFPARAM_ARGON2_ASSOCDATA; -extern const QList<QPair<QUuid, QString>> CIPHERS; -extern const QList<QPair<QUuid, QString>> KDFS; + extern const QList<QPair<QUuid, QString>> CIPHERS; + extern const QList<QPair<QUuid, QString>> KDFS; enum class HeaderFieldID { @@ -126,11 +126,11 @@ extern const QList<QPair<QUuid, QString>> KDFS; ByteArray = 0x42 }; -QByteArray hmacKey(const QByteArray& masterSeed, const QByteArray& transformedMasterKey); -QSharedPointer<Kdf> kdfFromParameters(const QVariantMap& p); -QVariantMap kdfToParameters(const QSharedPointer<Kdf>& kdf); -QSharedPointer<Kdf> uuidToKdf(const QUuid& uuid); -ProtectedStreamAlgo idToProtectedStreamAlgo(quint32 id); + QByteArray hmacKey(const QByteArray& masterSeed, const QByteArray& transformedMasterKey); + QSharedPointer<Kdf> kdfFromParameters(const QVariantMap& p); + QVariantMap kdfToParameters(const QSharedPointer<Kdf>& kdf); + QSharedPointer<Kdf> uuidToKdf(const QUuid& uuid); + ProtectedStreamAlgo idToProtectedStreamAlgo(quint32 id); } // namespace KeePass2 diff --git a/src/gui/AboutDialog.cpp b/src/gui/AboutDialog.cpp index 483e4dd2b..48546edb4 100644 --- a/src/gui/AboutDialog.cpp +++ b/src/gui/AboutDialog.cpp @@ -64,10 +64,9 @@ AboutDialog::AboutDialog(QWidget* parent) debugInfo.append(tr("Distribution: %1").arg(KEEPASSXC_DIST_TYPE).append("\n")); #endif - debugInfo.append("\n").append(QString("%1\n- Qt %2\n- %3\n\n") - .arg(tr("Libraries:"), - QString::fromLocal8Bit(qVersion()), - Crypto::backendVersion())); + debugInfo.append("\n").append( + QString("%1\n- Qt %2\n- %3\n\n") + .arg(tr("Libraries:"), QString::fromLocal8Bit(qVersion()), Crypto::backendVersion())); #if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) debugInfo.append(tr("Operating system: %1\nCPU architecture: %2\nKernel: %3 %4") diff --git a/src/gui/ApplicationSettingsWidget.h b/src/gui/ApplicationSettingsWidget.h index 5fedabfcd..f596b52c5 100644 --- a/src/gui/ApplicationSettingsWidget.h +++ b/src/gui/ApplicationSettingsWidget.h @@ -25,7 +25,7 @@ namespace Ui { class ApplicationSettingsWidgetGeneral; class ApplicationSettingsWidgetSecurity; -} +} // namespace Ui class ISettingsPage { diff --git a/src/gui/CategoryListWidget.cpp b/src/gui/CategoryListWidget.cpp index 50b02da81..c57b19bc0 100644 --- a/src/gui/CategoryListWidget.cpp +++ b/src/gui/CategoryListWidget.cpp @@ -38,8 +38,9 @@ CategoryListWidget::CategoryListWidget(QWidget* parent) connect(m_ui->scrollUp, SIGNAL(clicked()), SLOT(scrollCategoriesUp())); connect(m_ui->scrollDown, SIGNAL(clicked()), SLOT(scrollCategoriesDown())); connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(valueChanged(int)), SLOT(updateCategoryScrollButtons())); - connect( - m_ui->categoryList->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), SLOT(updateCategoryScrollButtons())); + // clang-format off + connect(m_ui->categoryList->verticalScrollBar(), SIGNAL(rangeChanged(int,int)), SLOT(updateCategoryScrollButtons())); + // clang-format on } CategoryListWidget::~CategoryListWidget() diff --git a/src/gui/DatabaseOpenWidget.cpp b/src/gui/DatabaseOpenWidget.cpp index b3427dc49..9c496aa31 100644 --- a/src/gui/DatabaseOpenWidget.cpp +++ b/src/gui/DatabaseOpenWidget.cpp @@ -105,9 +105,11 @@ void DatabaseOpenWidget::showEvent(QShowEvent* event) #ifdef WITH_XC_YUBIKEY // showEvent() may be called twice, so make sure we are only polling once if (!m_yubiKeyBeingPolled) { + // clang-format off connect(YubiKey::instance(), SIGNAL(detected(int,bool)), SLOT(yubikeyDetected(int,bool)), Qt::QueuedConnection); connect(YubiKey::instance(), SIGNAL(detectComplete()), SLOT(yubikeyDetectComplete()), Qt::QueuedConnection); connect(YubiKey::instance(), SIGNAL(notFound()), SLOT(noYubikeyFound()), Qt::QueuedConnection); + // clang-format on pollYubikey(); m_yubiKeyBeingPolled = true; @@ -190,7 +192,7 @@ void DatabaseOpenWidget::openDatabase() } if (!m_ui->editPassword->isPasswordVisible()) { - m_ui->editPassword->setShowPassword(false); + m_ui->editPassword->setShowPassword(false); } QCoreApplication::processEvents(); diff --git a/src/gui/DatabaseTabWidget.cpp b/src/gui/DatabaseTabWidget.cpp index c7d752bd2..b45c5a8a5 100644 --- a/src/gui/DatabaseTabWidget.cpp +++ b/src/gui/DatabaseTabWidget.cpp @@ -94,10 +94,12 @@ QSharedPointer<Database> DatabaseTabWidget::execNewDatabaseWizard() Q_ASSERT(db->key()); Q_ASSERT(db->kdf()); if (!db->key() || !db->kdf()) { - MessageBox::critical(this, tr("Database creation error"), - tr("The created database has no key or KDF, refusing to save it.\n" - "This is definitely a bug, please report it to the developers."), - QMessageBox::Ok, QMessageBox::Ok); + MessageBox::critical(this, + tr("Database creation error"), + tr("The created database has no key or KDF, refusing to save it.\n" + "This is definitely a bug, please report it to the developers."), + QMessageBox::Ok, + QMessageBox::Ok); return {}; } @@ -216,7 +218,7 @@ void DatabaseTabWidget::mergeDatabase() auto dbWidget = currentDatabaseWidget(); if (dbWidget && !dbWidget->isLocked()) { QString filter = QString("%1 (*.kdbx);;%2 (*)").arg(tr("KeePass 2 Database"), tr("All files")); - const QString fileName = fileDialog()->getOpenFileName(this, tr("Merge database"), "", filter); + const QString fileName = fileDialog()->getOpenFileName(this, tr("Merge database"), QString(), filter); if (!fileName.isEmpty()) { mergeDatabase(fileName); } diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 389d6fc4c..234f7e042 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -50,8 +50,8 @@ #include "gui/EntryPreviewWidget.h" #include "gui/KeePass1OpenWidget.h" #include "gui/MessageBox.h" -#include "gui/TotpSetupDialog.h" #include "gui/TotpDialog.h" +#include "gui/TotpSetupDialog.h" #include "gui/TotpExportSettingsDialog.h" #include "gui/entry/EditEntryWidget.h" #include "gui/entry/EntryView.h" @@ -155,6 +155,7 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent) addChildWidget(m_csvImportWizard); addChildWidget(m_keepass1OpenWidget); + // clang-format off connect(m_mainSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(mainSplitterSizesChanged())); connect(m_previewSplitter, SIGNAL(splitterMoved(int,int)), SIGNAL(previewSplitterSizesChanged())); connect(this, SIGNAL(currentModeChanged(DatabaseWidget::Mode)), m_previewView, SLOT(setDatabaseMode(DatabaseWidget::Mode))); @@ -177,7 +178,8 @@ DatabaseWidget::DatabaseWidget(QSharedPointer<Database> db, QWidget* parent) connect(&m_fileWatchTimer, SIGNAL(timeout()), this, SLOT(reloadDatabaseFile())); connect(&m_fileWatchUnblockTimer, SIGNAL(timeout()), this, SLOT(unblockAutoReload())); connect(this, SIGNAL(currentChanged(int)), this, SLOT(emitCurrentModeChanged())); - + // clang-format on + connectDatabaseSignals(); m_fileWatchTimer.setSingleShot(true); diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index 66038282d..6a5765933 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -18,6 +18,7 @@ #include "EditWidget.h" #include "ui_EditWidget.h" + #include <QPushButton> #include <QScrollArea> diff --git a/src/gui/EditWidgetIcons.cpp b/src/gui/EditWidgetIcons.cpp index 5d1a5f901..abb65c00d 100644 --- a/src/gui/EditWidgetIcons.cpp +++ b/src/gui/EditWidgetIcons.cpp @@ -31,6 +31,7 @@ #ifdef WITH_XC_NETWORKING #include <QtNetwork> +#include <QNetworkAccessManager> #endif IconStruct::IconStruct() @@ -44,6 +45,7 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent) , m_ui(new Ui::EditWidgetIcons()) , m_db(nullptr) #ifdef WITH_XC_NETWORKING + , m_netMgr(new QNetworkAccessManager(this)) , m_reply(nullptr) #endif , m_defaultIconModel(new DefaultIconModel(this)) @@ -54,6 +56,7 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent) m_ui->defaultIconsView->setModel(m_defaultIconModel); m_ui->customIconsView->setModel(m_customIconModel); + // clang-format off connect(m_ui->defaultIconsView, SIGNAL(clicked(QModelIndex)), this, SLOT(updateRadioButtonDefaultIcons())); connect(m_ui->customIconsView, SIGNAL(clicked(QModelIndex)), this, SLOT(updateRadioButtonCustomIcons())); connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SLOT(updateWidgetsDefaultIcons(bool))); @@ -64,14 +67,11 @@ EditWidgetIcons::EditWidgetIcons(QWidget* parent) connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated())); connect(m_ui->defaultIconsRadio, SIGNAL(toggled(bool)), this, SIGNAL(widgetUpdated())); - connect(m_ui->defaultIconsView->selectionModel(), - SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, - SIGNAL(widgetUpdated())); - connect(m_ui->customIconsView->selectionModel(), - SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, - SIGNAL(widgetUpdated())); + connect(m_ui->defaultIconsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SIGNAL(widgetUpdated())); + connect(m_ui->customIconsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SIGNAL(widgetUpdated())); + // clang-format on m_ui->faviconButton->setVisible(false); m_ui->addButton->setEnabled(true); @@ -156,7 +156,8 @@ void EditWidgetIcons::setUrl(const QString& url) } #ifdef WITH_XC_NETWORKING -namespace { +namespace +{ // Try to get the 2nd level domain of the host part of a QUrl. For example, // "foo.bar.example.com" would become "example.com", and "foo.bar.example.co.uk" // would become "example.co.uk". @@ -177,13 +178,13 @@ namespace { return url; } - QUrl getRedirectTarget(QNetworkReply *reply) + QUrl getRedirectTarget(QNetworkReply* reply) { QVariant var = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); QUrl url = convertVariantToUrl(var); return url; } -} +} // namespace #endif void EditWidgetIcons::downloadFavicon() @@ -264,9 +265,10 @@ void EditWidgetIcons::fetchFinished() return; } else { if (!fallbackEnabled) { - emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" + - tr("Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security"), - MessageWidget::Error); + emit messageEditEntry( + tr("Unable to fetch favicon.") + "\n" + + tr("Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security"), + MessageWidget::Error); } else { emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error); } @@ -294,7 +296,7 @@ void EditWidgetIcons::startFetchFavicon(const QUrl& url) QNetworkRequest request(url); - m_reply = m_netMgr.get(request); + m_reply = m_netMgr->get(request); connect(m_reply, &QNetworkReply::finished, this, &EditWidgetIcons::fetchFinished); connect(m_reply, &QIODevice::readyRead, this, &EditWidgetIcons::fetchReadyRead); #else @@ -339,8 +341,9 @@ void EditWidgetIcons::addCustomIconFromFile() if (!errornames.empty()) { // Show the first 8 icons that failed to load errornames = errornames.mid(0, 8); - emit messageEditEntry(msg + "\n" + tr("The following icon(s) failed:", "", errornames.size()) + - "\n" + errornames.join("\n"), MessageWidget::Error); + emit messageEditEntry(msg + "\n" + tr("The following icon(s) failed:", "", errornames.size()) + "\n" + + errornames.join("\n"), + MessageWidget::Error); } else if (numloaded > 0) { emit messageEditEntry(msg, MessageWidget::Positive); } else { diff --git a/src/gui/EditWidgetIcons.h b/src/gui/EditWidgetIcons.h index 677cbebef..5c02f31a1 100644 --- a/src/gui/EditWidgetIcons.h +++ b/src/gui/EditWidgetIcons.h @@ -21,9 +21,8 @@ #include <QSet> #include <QUrl> -#include <QWidget> -#include <QNetworkAccessManager> #include <QUuid> +#include <QWidget> #include "config-keepassx.h" #include "core/Global.h" @@ -33,6 +32,7 @@ class Database; class DefaultIconModel; class CustomIconModel; #ifdef WITH_XC_NETWORKING +class QNetworkAccessManager; class QNetworkReply; #endif @@ -95,8 +95,8 @@ private: QUrl m_fetchUrl; QList<QUrl> m_urlsToTry; QByteArray m_bytesReceived; - QNetworkAccessManager m_netMgr; - QNetworkReply *m_reply; + QNetworkAccessManager* m_netMgr; + QNetworkReply* m_reply; int m_redirects; #endif DefaultIconModel* const m_defaultIconModel; diff --git a/src/gui/EditWidgetProperties.cpp b/src/gui/EditWidgetProperties.cpp index b2de9d778..bc0f6e164 100644 --- a/src/gui/EditWidgetProperties.cpp +++ b/src/gui/EditWidgetProperties.cpp @@ -16,11 +16,11 @@ */ #include "EditWidgetProperties.h" - -#include <QUuid> +#include "ui_EditWidgetProperties.h" #include "MessageBox.h" -#include "ui_EditWidgetProperties.h" + +#include <QUuid> EditWidgetProperties::EditWidgetProperties(QWidget* parent) : QWidget(parent) @@ -32,9 +32,11 @@ EditWidgetProperties::EditWidgetProperties(QWidget* parent) m_ui->removeCustomDataButton->setEnabled(false); m_ui->customDataTable->setModel(m_customDataModel); + // clang-format off connect(m_ui->customDataTable->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(toggleRemoveButton(QItemSelection))); + // clang-format on connect(m_ui->removeCustomDataButton, SIGNAL(clicked()), SLOT(removeSelectedPluginData())); } @@ -66,12 +68,13 @@ const CustomData* EditWidgetProperties::customData() const void EditWidgetProperties::removeSelectedPluginData() { - if (QMessageBox::Yes != MessageBox::question(this, - tr("Delete plugin data?"), - tr("Do you really want to delete the selected plugin data?\n" - "This may cause the affected plugins to malfunction."), - QMessageBox::Yes | QMessageBox::Cancel, - QMessageBox::Cancel)) { + if (QMessageBox::Yes + != MessageBox::question(this, + tr("Delete plugin data?"), + tr("Do you really want to delete the selected plugin data?\n" + "This may cause the affected plugins to malfunction."), + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel)) { return; } @@ -97,8 +100,8 @@ void EditWidgetProperties::updateModel() m_customDataModel->setHorizontalHeaderLabels({tr("Key"), tr("Value")}); for (const QString& key : m_customData->keys()) { - m_customDataModel->appendRow(QList<QStandardItem*>() << new QStandardItem(key) - << new QStandardItem(m_customData->value(key))); + m_customDataModel->appendRow(QList<QStandardItem*>() + << new QStandardItem(key) << new QStandardItem(m_customData->value(key))); } m_ui->removeCustomDataButton->setEnabled(false); diff --git a/src/gui/KeePass1OpenWidget.cpp b/src/gui/KeePass1OpenWidget.cpp index d033979b8..834425ec1 100644 --- a/src/gui/KeePass1OpenWidget.cpp +++ b/src/gui/KeePass1OpenWidget.cpp @@ -16,6 +16,7 @@ */ #include "KeePass1OpenWidget.h" +#include "ui_DatabaseOpenWidget.h" #include <QFile> #include <QFileInfo> @@ -24,7 +25,6 @@ #include "core/Metadata.h" #include "format/KeePass1Reader.h" #include "gui/MessageBox.h" -#include "ui_DatabaseOpenWidget.h" KeePass1OpenWidget::KeePass1OpenWidget(QWidget* parent) : DatabaseOpenWidget(parent) diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 1cd700b43..55c261858 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -20,10 +20,10 @@ #include "ui_MainWindow.h" #include <QCloseEvent> +#include <QDesktopServices> #include <QMimeData> #include <QShortcut> #include <QTimer> -#include <QDesktopServices> #include "config-keepassx.h" @@ -56,8 +56,8 @@ #include <QtDBus/QtDBus> #endif -#include "gui/PasswordGeneratorWidget.h" #include "gui/ApplicationSettingsWidget.h" +#include "gui/PasswordGeneratorWidget.h" #include "touchid/TouchID.h" @@ -67,7 +67,8 @@ class BrowserPlugin : public ISettingsPage public: BrowserPlugin(DatabaseTabWidget* tabWidget) { - m_nativeMessagingHost = QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, browserSettings()->isEnabled())); + m_nativeMessagingHost = + QSharedPointer<NativeMessagingHost>(new NativeMessagingHost(tabWidget, browserSettings()->isEnabled())); } ~BrowserPlugin() @@ -105,8 +106,8 @@ public: } } - private: - QSharedPointer<NativeMessagingHost> m_nativeMessagingHost; +private: + QSharedPointer<NativeMessagingHost> m_nativeMessagingHost; }; #endif @@ -346,11 +347,13 @@ MainWindow::MainWindow() #ifdef Q_OS_MACOS setUnifiedTitleAndToolBarOnMac(true); #endif - + // clang-format off connect(m_ui->tabWidget, SIGNAL(messageGlobal(QString,MessageWidget::MessageType)), this, SLOT(displayGlobalMessage(QString,MessageWidget::MessageType))); + // clang-format on + connect(m_ui->tabWidget, SIGNAL(messageDismissGlobal()), this, SLOT(hideGlobalMessage())); m_screenLockListener = new ScreenLockListener(this); @@ -368,13 +371,15 @@ MainWindow::MainWindow() tr("WARNING: You are using an unstable build of KeePassXC!\n" "There is a high risk of corruption, maintain a backup of your databases.\n" "This version is not meant for production use."), - MessageWidget::Warning, -1); + MessageWidget::Warning, + -1); #elif (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) && QT_VERSION < QT_VERSION_CHECK(5, 6, 0)) if (!config()->get("QtErrorMessageShown", false).toBool()) { m_ui->globalMessageWidget->showMessage( tr("WARNING: Your Qt version may cause KeePassXC to crash with an On-Screen Keyboard!\n" "We recommend you use the AppImage available on our downloads page."), - MessageWidget::Warning, -1); + MessageWidget::Warning, + -1); config()->set("QtErrorMessageShown", true); } #endif @@ -671,10 +676,10 @@ void MainWindow::switchToSettings(bool enabled) void MainWindow::switchToPasswordGen(bool enabled) { if (enabled) { - m_ui->passwordGeneratorWidget->loadSettings(); - m_ui->passwordGeneratorWidget->regeneratePassword(); - m_ui->passwordGeneratorWidget->setStandaloneMode(true); - m_ui->stackedWidget->setCurrentIndex(PasswordGeneratorScreen); + m_ui->passwordGeneratorWidget->loadSettings(); + m_ui->passwordGeneratorWidget->regeneratePassword(); + m_ui->passwordGeneratorWidget->setStandaloneMode(true); + m_ui->stackedWidget->setCurrentIndex(PasswordGeneratorScreen); } else { m_ui->passwordGeneratorWidget->saveSettings(); switchToDatabases(); diff --git a/src/gui/PasswordEdit.cpp b/src/gui/PasswordEdit.cpp index 6ec044f9e..e341eddd4 100644 --- a/src/gui/PasswordEdit.cpp +++ b/src/gui/PasswordEdit.cpp @@ -71,8 +71,9 @@ void PasswordEdit::setShowPassword(bool show) emit showPasswordChanged(show); } -bool PasswordEdit::isPasswordVisible() const { - return isEnabled(); +bool PasswordEdit::isPasswordVisible() const +{ + return isEnabled(); } bool PasswordEdit::passwordsEqual() const diff --git a/src/gui/PasswordGeneratorWidget.cpp b/src/gui/PasswordGeneratorWidget.cpp index 048c39542..80ea007aa 100644 --- a/src/gui/PasswordGeneratorWidget.cpp +++ b/src/gui/PasswordGeneratorWidget.cpp @@ -338,10 +338,8 @@ void PasswordGeneratorWidget::selectSimpleMode() m_ui->checkBoxLower->setChecked(m_ui->checkBoxLowerAdv->isChecked()); m_ui->checkBoxNumbers->setChecked(m_ui->checkBoxNumbersAdv->isChecked()); m_ui->checkBoxSpecialChars->setChecked(m_ui->checkBoxBraces->isChecked() | m_ui->checkBoxPunctuation->isChecked() - | m_ui->checkBoxQuotes->isChecked() - | m_ui->checkBoxMath->isChecked() - | m_ui->checkBoxDashes->isChecked() - | m_ui->checkBoxLogograms->isChecked()); + | m_ui->checkBoxQuotes->isChecked() | m_ui->checkBoxMath->isChecked() + | m_ui->checkBoxDashes->isChecked() | m_ui->checkBoxLogograms->isChecked()); m_ui->checkBoxExtASCII->setChecked(m_ui->checkBoxExtASCIIAdv->isChecked()); m_ui->simpleBar->show(); } diff --git a/src/gui/TotpSetupDialog.cpp b/src/gui/TotpSetupDialog.cpp index babeb7840..ebbcbc9fe 100644 --- a/src/gui/TotpSetupDialog.cpp +++ b/src/gui/TotpSetupDialog.cpp @@ -17,9 +17,10 @@ */ #include "TotpSetupDialog.h" -#include "totp/totp.h" #include "ui_TotpSetupDialog.h" +#include "totp/totp.h" + TotpSetupDialog::TotpSetupDialog(QWidget* parent, Entry* entry) : QDialog(parent) , m_ui(new Ui::TotpSetupDialog()) diff --git a/src/gui/csvImport/CsvImportWidget.cpp b/src/gui/csvImport/CsvImportWidget.cpp index 3b623f73d..19b5732bc 100644 --- a/src/gui/csvImport/CsvImportWidget.cpp +++ b/src/gui/csvImport/CsvImportWidget.cpp @@ -40,7 +40,7 @@ CsvImportWidget::CsvImportWidget(QWidget* parent) , m_columnHeader(QStringList() << QObject::tr("Group") << QObject::tr("Title") << QObject::tr("Username") << QObject::tr("Password") << QObject::tr("URL") << QObject::tr("Notes") << QObject::tr("Last Modified") << QObject::tr("Created") - /* << QObject::tr("Future field1") */ ) + /* << QObject::tr("Future field1") */) { m_ui->setupUi(this); @@ -87,9 +87,11 @@ CsvImportWidget::CsvImportWidget(QWidget* parent) m_combos.append(combo); combo->setModel(m_comboModel); #if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0) - connect(combo, QOverload<int>::of(&QComboBox::currentIndexChanged), [=]{ comboChanged(combo, i); }); + connect(combo, QOverload<int>::of(&QComboBox::currentIndexChanged), [=] { comboChanged(combo, i); }); #else - connect(combo, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=]{ comboChanged(combo, i); }); + connect(combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=] { + comboChanged(combo, i); + }); #endif // layout labels and combo fields in column-first order diff --git a/src/gui/csvImport/CsvImportWizard.cpp b/src/gui/csvImport/CsvImportWizard.cpp index 9b255f941..356435ba9 100644 --- a/src/gui/csvImport/CsvImportWizard.cpp +++ b/src/gui/csvImport/CsvImportWizard.cpp @@ -42,7 +42,6 @@ void CsvImportWizard::load(const QString& filename, Database* database) m_parse->load(filename, database); } - void CsvImportWizard::parseFinished(bool accepted) { emit importFinished(accepted); diff --git a/src/gui/dbsettings/DatabaseSettingsDialog.cpp b/src/gui/dbsettings/DatabaseSettingsDialog.cpp index 75a3fb5ef..b35059ee1 100644 --- a/src/gui/dbsettings/DatabaseSettingsDialog.cpp +++ b/src/gui/dbsettings/DatabaseSettingsDialog.cpp @@ -18,16 +18,17 @@ #include "DatabaseSettingsDialog.h" #include "ui_DatabaseSettingsDialog.h" -#include "DatabaseSettingsWidgetGeneral.h" + #include "DatabaseSettingsWidgetEncryption.h" +#include "DatabaseSettingsWidgetGeneral.h" #include "DatabaseSettingsWidgetMasterKey.h" #ifdef WITH_XC_BROWSER #include "DatabaseSettingsWidgetBrowser.h" #endif #include "core/Config.h" -#include "core/FilePath.h" #include "core/Database.h" +#include "core/FilePath.h" #include "touchid/TouchID.h" DatabaseSettingsDialog::DatabaseSettingsDialog(QWidget* parent) @@ -57,12 +58,13 @@ DatabaseSettingsDialog::DatabaseSettingsDialog(QWidget* parent) m_ui->stackedWidget->setCurrentIndex(0); m_securityTabWidget->setCurrentIndex(0); - connect(m_securityTabWidget, SIGNAL(currentChanged(int)), SLOT(pageChanged())); + connect(m_securityTabWidget, SIGNAL(currentChanged(int)), SLOT(pageChanged())); connect(m_ui->categoryList, SIGNAL(categoryChanged(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int))); connect(m_ui->advancedSettingsToggle, SIGNAL(toggled(bool)), SLOT(toggleAdvancedMode(bool))); #ifdef WITH_XC_BROWSER - m_ui->categoryList->addCategory(tr("Browser Integration"), FilePath::instance()->icon("apps", "internet-web-browser")); + m_ui->categoryList->addCategory(tr("Browser Integration"), + FilePath::instance()->icon("apps", "internet-web-browser")); m_ui->stackedWidget->addWidget(m_browserWidget); #endif diff --git a/src/gui/dbsettings/DatabaseSettingsDialog.h b/src/gui/dbsettings/DatabaseSettingsDialog.h index 41fc508a9..dff8c0e3a 100644 --- a/src/gui/dbsettings/DatabaseSettingsDialog.h +++ b/src/gui/dbsettings/DatabaseSettingsDialog.h @@ -18,8 +18,8 @@ #ifndef KEEPASSX_DATABASESETTINGSWIDGET_H #define KEEPASSX_DATABASESETTINGSWIDGET_H -#include "gui/DialogyWidget.h" #include "config-keepassx.h" +#include "gui/DialogyWidget.h" #include <QPointer> #include <QScopedPointer> diff --git a/src/gui/dbsettings/DatabaseSettingsWidget.cpp b/src/gui/dbsettings/DatabaseSettingsWidget.cpp index 67b3ef375..7b438cc33 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidget.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidget.cpp @@ -18,8 +18,8 @@ #include "DatabaseSettingsWidget.h" #include "core/Database.h" -#include <QWidget> #include <QTimer> +#include <QWidget> DatabaseSettingsWidget::DatabaseSettingsWidget(QWidget* parent) : SettingsWidget(parent) diff --git a/src/gui/dbsettings/DatabaseSettingsWidget.h b/src/gui/dbsettings/DatabaseSettingsWidget.h index 6d58ddeb7..5a6e5c069 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidget.h +++ b/src/gui/dbsettings/DatabaseSettingsWidget.h @@ -48,4 +48,4 @@ protected: QSharedPointer<Database> m_db; }; -#endif //KEEPASSXC_DATABASESETTINGSWIDGET_H +#endif // KEEPASSXC_DATABASESETTINGSWIDGET_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.cpp index a91744cdb..9f2714ea3 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.cpp @@ -17,18 +17,21 @@ */ #include "DatabaseSettingsWidgetBrowser.h" +#include "ui_DatabaseSettingsWidgetBrowser.h" + #include <QProgressDialog> + +#include "browser/BrowserSettings.h" #include "core/Clock.h" #include "core/Database.h" #include "core/Entry.h" #include "core/Group.h" #include "core/Metadata.h" #include "gui/MessageBox.h" -#include "browser/BrowserSettings.h" -#include "ui_DatabaseSettingsWidgetBrowser.h" DatabaseSettingsWidgetBrowser::DatabaseSettingsWidgetBrowser(QWidget* parent) - : DatabaseSettingsWidget(parent), m_ui(new Ui::DatabaseSettingsWidgetBrowser()) + : DatabaseSettingsWidget(parent) + , m_ui(new Ui::DatabaseSettingsWidgetBrowser()) , m_customData(new CustomData(this)) , m_customDataModel(new QStandardItemModel(this)) , m_browserService(nullptr) @@ -38,8 +41,13 @@ DatabaseSettingsWidgetBrowser::DatabaseSettingsWidgetBrowser(QWidget* parent) m_ui->customDataTable->setModel(m_customDataModel); settingsWarning(); - connect(m_ui->customDataTable->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + + // clang-format off + connect(m_ui->customDataTable->selectionModel(), + SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(toggleRemoveButton(QItemSelection))); + // clang-format on + connect(m_ui->removeCustomDataButton, SIGNAL(clicked()), SLOT(removeSelectedKey())); connect(m_ui->convertToCustomData, SIGNAL(clicked()), this, SLOT(convertAttributesToCustomData())); connect(m_ui->convertToCustomData, SIGNAL(clicked()), this, SLOT(updateSharedKeyList())); @@ -83,11 +91,13 @@ bool DatabaseSettingsWidgetBrowser::save() void DatabaseSettingsWidgetBrowser::removeSelectedKey() { - if (QMessageBox::Yes != MessageBox::question(this, - tr("Delete the selected key?"), - tr("Do you really want to delete the selected key?\n" - "This may prevent connection to the browser plugin."), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) { + if (QMessageBox::Yes + != MessageBox::question(this, + tr("Delete the selected key?"), + tr("Do you really want to delete the selected key?\n" + "This may prevent connection to the browser plugin."), + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel)) { return; } @@ -116,9 +126,8 @@ void DatabaseSettingsWidgetBrowser::updateModel() if (key.startsWith(BrowserService::ASSOCIATE_KEY_PREFIX)) { QString strippedKey = key; strippedKey.remove(BrowserService::ASSOCIATE_KEY_PREFIX); - m_customDataModel->appendRow(QList<QStandardItem*>() - << new QStandardItem(strippedKey) - << new QStandardItem(customData()->value(key))); + m_customDataModel->appendRow(QList<QStandardItem*>() << new QStandardItem(strippedKey) + << new QStandardItem(customData()->value(key))); } } @@ -132,7 +141,8 @@ void DatabaseSettingsWidgetBrowser::settingsWarning() m_ui->removeSharedEncryptionKeys->setEnabled(false); m_ui->removeStoredPermissions->setEnabled(false); m_ui->customDataTable->setEnabled(false); - m_ui->warningWidget->showMessage(tr("Enable Browser Integration to access these settings."), MessageWidget::Warning); + m_ui->warningWidget->showMessage(tr("Enable Browser Integration to access these settings."), + MessageWidget::Warning); m_ui->warningWidget->setCloseButtonVisible(false); m_ui->warningWidget->setAutoHideTimeout(-1); } else { @@ -146,11 +156,13 @@ void DatabaseSettingsWidgetBrowser::settingsWarning() void DatabaseSettingsWidgetBrowser::removeSharedEncryptionKeys() { - if (QMessageBox::Yes != MessageBox::question(this, - tr("Disconnect all browsers"), - tr("Do you really want to disconnect all browsers?\n" - "This may prevent connection to the browser plugin."), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) { + if (QMessageBox::Yes + != MessageBox::question(this, + tr("Disconnect all browsers"), + tr("Do you really want to disconnect all browsers?\n" + "This may prevent connection to the browser plugin."), + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel)) { return; } @@ -182,11 +194,13 @@ void DatabaseSettingsWidgetBrowser::removeSharedEncryptionKeys() void DatabaseSettingsWidgetBrowser::removeStoredPermissions() { - if (QMessageBox::Yes != MessageBox::question(this, - tr("Forget all site-specific settings on entries"), - tr("Do you really want forget all site-specific settings on every entry?\n" - "Permissions to access entries will be revoked."), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) { + if (QMessageBox::Yes + != MessageBox::question(this, + tr("Forget all site-specific settings on entries"), + tr("Do you really want forget all site-specific settings on every entry?\n" + "Permissions to access entries will be revoked."), + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel)) { return; } @@ -226,11 +240,14 @@ void DatabaseSettingsWidgetBrowser::removeStoredPermissions() void DatabaseSettingsWidgetBrowser::convertAttributesToCustomData() { - if (QMessageBox::Yes != MessageBox::question(this, - tr("Move KeePassHTTP attributes to custom data"), - tr("Do you really want to move all legacy browser integration data to the latest standard?\n" - "This is necessary to maintain compatibility with the browser plugin."), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel)) { + if (QMessageBox::Yes + != MessageBox::question( + this, + tr("Move KeePassHTTP attributes to custom data"), + tr("Do you really want to move all legacy browser integration data to the latest standard?\n" + "This is necessary to maintain compatibility with the browser plugin."), + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel)) { return; } @@ -242,4 +259,3 @@ void DatabaseSettingsWidgetBrowser::updateSharedKeyList() { updateModel(); } - diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.h b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.h index 0c56ede57..d9d9885ca 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetBrowser.h @@ -21,18 +21,19 @@ #include "DatabaseSettingsWidget.h" +#include "browser/BrowserService.h" +#include "core/CustomData.h" +#include "gui/DatabaseTabWidget.h" + +#include <QItemSelection> #include <QPointer> #include <QScopedPointer> #include <QStandardItemModel> -#include <QItemSelection> -#include "core/CustomData.h" -#include "gui/DatabaseTabWidget.h" -#include "browser/BrowserService.h" class Database; namespace Ui { -class DatabaseSettingsWidgetBrowser; + class DatabaseSettingsWidgetBrowser; } class DatabaseSettingsWidgetBrowser : public DatabaseSettingsWidget @@ -45,7 +46,10 @@ public: ~DatabaseSettingsWidgetBrowser() override; CustomData* customData() const; - inline bool hasAdvancedMode() const override { return false; } + inline bool hasAdvancedMode() const override + { + return false; + } public slots: void initialize() override; @@ -75,4 +79,4 @@ private: BrowserService m_browserService; }; -#endif //KEEPASSXC_DATABASESETTINGSWIDGETBROWSER_H +#endif // KEEPASSXC_DATABASESETTINGSWIDGETBROWSER_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp index 63a1ccef8..f6ed2f577 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.cpp @@ -17,13 +17,14 @@ #include "DatabaseSettingsWidgetEncryption.h" #include "ui_DatabaseSettingsWidgetEncryption.h" + +#include "core/AsyncTask.h" #include "core/Database.h" -#include "core/Metadata.h" #include "core/Global.h" -#include "core/AsyncTask.h" -#include "gui/MessageBox.h" +#include "core/Metadata.h" #include "crypto/kdf/Argon2Kdf.h" #include "format/KeePass2.h" +#include "gui/MessageBox.h" #include <QApplication> #include <QPushButton> @@ -260,7 +261,7 @@ bool DatabaseSettingsWidgetEncryption::save() return false; } } else if ((kdf->uuid() == KeePass2::KDF_AES_KDBX3 || kdf->uuid() == KeePass2::KDF_AES_KDBX4) - && m_ui->transformRoundsSpinBox->value() < 100000) { + && m_ui->transformRoundsSpinBox->value() < 100000) { QMessageBox warning; warning.setIcon(QMessageBox::Warning); warning.setWindowTitle(tr("Number of rounds too low", "Key transformation rounds")); @@ -394,7 +395,7 @@ void DatabaseSettingsWidgetEncryption::updateFormatCompatibility(int index, bool m_ui->compatibilitySelection->blockSignals(block); } - if (retransform) { + if (retransform) { QUuid kdfUuid(m_ui->compatibilitySelection->itemData(index).toByteArray()); auto kdf = KeePass2::uuidToKdf(kdfUuid); m_db->setKdf(kdf); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h index 8b1e42e13..986a33b6a 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetEncryption.h @@ -26,10 +26,10 @@ class Database; namespace Ui { -class DatabaseSettingsWidgetEncryption; + class DatabaseSettingsWidgetEncryption; } -class DatabaseSettingsWidgetEncryption: public DatabaseSettingsWidget +class DatabaseSettingsWidgetEncryption : public DatabaseSettingsWidget { Q_OBJECT @@ -38,7 +38,10 @@ public: Q_DISABLE_COPY(DatabaseSettingsWidgetEncryption); ~DatabaseSettingsWidgetEncryption() override; - inline bool hasAdvancedMode() const override { return true; } + inline bool hasAdvancedMode() const override + { + return true; + } void setAdvancedMode(bool advanced) override; public slots: @@ -64,7 +67,11 @@ private slots: void markDirty(); private: - enum FormatSelection { KDBX4, KDBX3 }; + enum FormatSelection + { + KDBX4, + KDBX3 + }; static const char* CD_DECRYPTION_TIME_PREFERENCE_KEY; bool m_isDirty = false; @@ -72,4 +79,4 @@ private: const QScopedPointer<Ui::DatabaseSettingsWidgetEncryption> m_ui; }; -#endif //KEEPASSXC_DATABASESETTINGSWIDGETENCRYPTION_H +#endif // KEEPASSXC_DATABASESETTINGSWIDGETENCRYPTION_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp index c8d71762d..b96016fdc 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.cpp @@ -17,6 +17,7 @@ #include "DatabaseSettingsWidgetGeneral.h" #include "ui_DatabaseSettingsWidgetGeneral.h" + #include "core/Clock.h" #include "core/Database.h" #include "core/Entry.h" @@ -24,7 +25,8 @@ #include "core/Metadata.h" DatabaseSettingsWidgetGeneral::DatabaseSettingsWidgetGeneral(QWidget* parent) - : DatabaseSettingsWidget(parent), m_ui(new Ui::DatabaseSettingsWidgetGeneral()) + : DatabaseSettingsWidget(parent) + , m_ui(new Ui::DatabaseSettingsWidgetGeneral()) { m_ui->setupUi(this); @@ -53,7 +55,7 @@ void DatabaseSettingsWidgetGeneral::initialize() m_ui->historyMaxItemsSpinBox->setValue(Metadata::DefaultHistoryMaxItems); m_ui->historyMaxItemsCheckBox->setChecked(false); } - int historyMaxSizeMiB = qRound(meta->historyMaxSize()/qreal(1048576)); + int historyMaxSizeMiB = qRound(meta->historyMaxSize() / qreal(1048576)); if (historyMaxSizeMiB > 0) { m_ui->historyMaxSizeSpinBox->setValue(historyMaxSizeMiB); m_ui->historyMaxSizeCheckBox->setChecked(true); @@ -100,7 +102,7 @@ bool DatabaseSettingsWidgetGeneral::save() int historyMaxSize; if (m_ui->historyMaxSizeCheckBox->isChecked()) { - historyMaxSize = m_ui->historyMaxSizeSpinBox->value()*1048576; + historyMaxSize = m_ui->historyMaxSizeSpinBox->value() * 1048576; } else { historyMaxSize = -1; } diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.h b/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.h index 009b6b643..7fe65d9ab 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetGeneral.h @@ -26,7 +26,7 @@ class Database; namespace Ui { -class DatabaseSettingsWidgetGeneral; + class DatabaseSettingsWidgetGeneral; } class DatabaseSettingsWidgetGeneral : public DatabaseSettingsWidget @@ -38,7 +38,10 @@ public: Q_DISABLE_COPY(DatabaseSettingsWidgetGeneral); ~DatabaseSettingsWidgetGeneral() override; - inline bool hasAdvancedMode() const override { return false; } + inline bool hasAdvancedMode() const override + { + return false; + } public slots: void initialize() override; @@ -51,4 +54,4 @@ protected: const QScopedPointer<Ui::DatabaseSettingsWidgetGeneral> m_ui; }; -#endif //KEEPASSXC_DATABASESETTINGSWIDGETGENERAL_H +#endif // KEEPASSXC_DATABASESETTINGSWIDGETGENERAL_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp index 3cc37accb..b1f07211e 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.cpp @@ -16,18 +16,19 @@ */ #include "DatabaseSettingsWidgetMasterKey.h" + #include "core/Database.h" -#include "keys/PasswordKey.h" -#include "keys/FileKey.h" -#include "keys/YkChallengeResponseKey.h" #include "gui/MessageBox.h" -#include "gui/masterkey/PasswordEditWidget.h" #include "gui/masterkey/KeyFileEditWidget.h" +#include "gui/masterkey/PasswordEditWidget.h" #include "gui/masterkey/YubiKeyEditWidget.h" +#include "keys/FileKey.h" +#include "keys/PasswordKey.h" +#include "keys/YkChallengeResponseKey.h" -#include <QVBoxLayout> -#include <QSpacerItem> #include <QPushButton> +#include <QSpacerItem> +#include <QVBoxLayout> DatabaseSettingsWidgetMasterKey::DatabaseSettingsWidgetMasterKey(QWidget* parent) : DatabaseSettingsWidget(parent) @@ -82,7 +83,7 @@ void DatabaseSettingsWidgetMasterKey::load(QSharedPointer<Database> db) bool isDirty = false; bool hasAdditionalKeys = false; - for (const auto& key: m_db->key()->keys()) { + for (const auto& key : m_db->key()->keys()) { if (key->uuid() == PasswordKey::UUID) { m_passwordEditWidget->setComponentAdded(true); } else if (key->uuid() == FileKey::UUID) { @@ -92,7 +93,7 @@ void DatabaseSettingsWidgetMasterKey::load(QSharedPointer<Database> db) } #ifdef WITH_XC_YUBIKEY - for (const auto& key: m_db->key()->challengeResponseKeys()) { + for (const auto& key : m_db->key()->challengeResponseKeys()) { if (key->uuid() == YkChallengeResponseKey::UUID) { m_yubiKeyEditWidget->setComponentAdded(true); hasAdditionalKeys = true; @@ -128,7 +129,7 @@ bool DatabaseSettingsWidgetMasterKey::save() m_isDirty |= (m_yubiKeyEditWidget->visiblePage() == KeyComponentWidget::Page::Edit); #endif - if (m_db->key() && ! m_db->key()->keys().isEmpty() && !m_isDirty) { + if (m_db->key() && !m_db->key()->keys().isEmpty() && !m_isDirty) { // key unchanged return true; } @@ -139,7 +140,7 @@ bool DatabaseSettingsWidgetMasterKey::save() QSharedPointer<Key> fileKey; QSharedPointer<ChallengeResponseKey> ykCrKey; - for (const auto& key: m_db->key()->keys()) { + for (const auto& key : m_db->key()->keys()) { if (key->uuid() == PasswordKey::UUID) { passwordKey = key; } else if (key->uuid() == FileKey::UUID) { @@ -147,7 +148,7 @@ bool DatabaseSettingsWidgetMasterKey::save() } } - for (const auto& key: m_db->key()->challengeResponseKeys()) { + for (const auto& key : m_db->key()->challengeResponseKeys()) { if (key->uuid() == YkChallengeResponseKey::UUID) { ykCrKey = key; } @@ -168,18 +169,22 @@ bool DatabaseSettingsWidgetMasterKey::save() #endif if (newKey->keys().isEmpty() && newKey->challengeResponseKeys().isEmpty()) { - MessageBox::critical(this, tr("No encryption key added"), + MessageBox::critical(this, + tr("No encryption key added"), tr("You must add at least one encryption key to secure your database!"), - QMessageBox::Ok, QMessageBox::Ok); + QMessageBox::Ok, + QMessageBox::Ok); return false; } if (m_passwordEditWidget->visiblePage() == KeyComponentWidget::AddNew) { - auto answer = MessageBox::warning(this, tr("No password set"), + auto answer = MessageBox::warning(this, + tr("No password set"), tr("WARNING! You have not set a password. Using a database without " "a password is strongly discouraged!\n\n" "Are you sure you want to continue without a password?"), - QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel); + QMessageBox::Yes | QMessageBox::Cancel, + QMessageBox::Cancel); if (answer != QMessageBox::Yes) { return false; } @@ -210,7 +215,8 @@ void DatabaseSettingsWidgetMasterKey::setAdditionalKeyOptionsVisible(bool show) } bool DatabaseSettingsWidgetMasterKey::addToCompositeKey(KeyComponentWidget* widget, - QSharedPointer<CompositeKey>& newKey, QSharedPointer<Key>& oldKey) + QSharedPointer<CompositeKey>& newKey, + QSharedPointer<Key>& oldKey) { if (widget->visiblePage() == KeyComponentWidget::Edit) { QString error = tr("Unknown error"); @@ -226,7 +232,8 @@ bool DatabaseSettingsWidgetMasterKey::addToCompositeKey(KeyComponentWidget* widg } bool DatabaseSettingsWidgetMasterKey::addToCompositeKey(KeyComponentWidget* widget, - QSharedPointer<CompositeKey>& newKey, QSharedPointer<ChallengeResponseKey>& oldKey) + QSharedPointer<CompositeKey>& newKey, + QSharedPointer<ChallengeResponseKey>& oldKey) { if (widget->visiblePage() == KeyComponentWidget::Edit) { QString error = tr("Unknown error"); diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.h b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.h index 7ab0b085f..1a3d6ed3f 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetMasterKey.h @@ -18,8 +18,9 @@ #ifndef KEEPASSXC_DATABASESETTINGSPAGECHANGEMASTERKEY_H #define KEEPASSXC_DATABASESETTINGSPAGECHANGEMASTERKEY_H -#include "config-keepassx.h" #include "DatabaseSettingsWidget.h" +#include "config-keepassx.h" + #include <QPointer> class Database; @@ -32,7 +33,7 @@ class KeyFileEditWidget; class YubiKeyEditWidget; class QPushButton; -class DatabaseSettingsWidgetMasterKey: public DatabaseSettingsWidget +class DatabaseSettingsWidgetMasterKey : public DatabaseSettingsWidget { Q_OBJECT @@ -43,7 +44,10 @@ public: void load(QSharedPointer<Database> db) override; - inline bool hasAdvancedMode() const override { return false; } + inline bool hasAdvancedMode() const override + { + return false; + } public slots: void initialize() override; @@ -58,9 +62,12 @@ private slots: private: void setAdditionalKeyOptionsVisible(bool show); + // clang-format off bool addToCompositeKey(KeyComponentWidget* widget, QSharedPointer<CompositeKey>& newKey, QSharedPointer<Key>& oldKey); + // clang-format on + bool addToCompositeKey(KeyComponentWidget* widget, QSharedPointer<CompositeKey>& newKey, QSharedPointer<ChallengeResponseKey>& oldKey); @@ -75,4 +82,4 @@ private: #endif }; -#endif //KEEPASSXC_DATABASESETTINGSPAGECHANGEMASTERKEY_H +#endif // KEEPASSXC_DATABASESETTINGSPAGECHANGEMASTERKEY_H diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp b/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp index 6805d7b65..0a1dccb5f 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp +++ b/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.cpp @@ -17,6 +17,7 @@ #include "DatabaseSettingsWidgetMetaDataSimple.h" #include "ui_DatabaseSettingsWidgetMetaDataSimple.h" + #include "core/Database.h" #include "core/Metadata.h" diff --git a/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.h b/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.h index bc32c1ee0..c357305d8 100644 --- a/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.h +++ b/src/gui/dbsettings/DatabaseSettingsWidgetMetaDataSimple.h @@ -26,19 +26,22 @@ class Database; namespace Ui { -class DatabaseSettingsWidgetMetaDataSimple; + class DatabaseSettingsWidgetMetaDataSimple; } class DatabaseSettingWidgetMetaData : public DatabaseSettingsWidget { -Q_OBJECT + Q_OBJECT public: explicit DatabaseSettingWidgetMetaData(QWidget* parent = nullptr); Q_DISABLE_COPY(DatabaseSettingWidgetMetaData); ~DatabaseSettingWidgetMetaData() override; - inline bool hasAdvancedMode() const override { return false; } + inline bool hasAdvancedMode() const override + { + return false; + } public slots: void initialize() override; @@ -52,4 +55,4 @@ private: const QScopedPointer<Ui::DatabaseSettingsWidgetMetaDataSimple> m_ui; }; -#endif //KEEPASSXC_DATABASESETTINGSWIDGEMETADATA_H +#endif // KEEPASSXC_DATABASESETTINGSWIDGEMETADATA_H diff --git a/src/gui/entry/AutoTypeMatchView.cpp b/src/gui/entry/AutoTypeMatchView.cpp index 087f2cc64..9c4e81d92 100644 --- a/src/gui/entry/AutoTypeMatchView.cpp +++ b/src/gui/entry/AutoTypeMatchView.cpp @@ -18,11 +18,11 @@ #include "AutoTypeMatchView.h" +#include "gui/SortFilterHideProxyModel.h" + #include <QHeaderView> #include <QKeyEvent> -#include "gui/SortFilterHideProxyModel.h" - AutoTypeMatchView::AutoTypeMatchView(QWidget* parent) : QTreeView(parent) , m_model(new AutoTypeMatchModel(this)) @@ -43,8 +43,10 @@ AutoTypeMatchView::AutoTypeMatchView(QWidget* parent) header()->setDefaultSectionSize(150); connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(emitMatchActivated(QModelIndex))); + // clang-format off connect( selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SIGNAL(matchSelectionChanged())); + // clang-format on } void AutoTypeMatchView::keyPressEvent(QKeyEvent* event) diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index 75e5294ba..335ac1aa4 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -102,9 +102,12 @@ EditEntryWidget::EditEntryWidget(QWidget* parent) connect(this, SIGNAL(accepted()), SLOT(acceptEntry())); connect(this, SIGNAL(rejected()), SLOT(cancel())); connect(this, SIGNAL(apply()), SLOT(commitEntry())); + // clang-format off connect(m_iconsWidget, SIGNAL(messageEditEntry(QString,MessageWidget::MessageType)), SLOT(showMessage(QString,MessageWidget::MessageType))); + // clang-format on + connect(m_iconsWidget, SIGNAL(messageEditEntryDismiss()), SLOT(hideMessage())); m_mainUi->passwordGenerator->layout()->setContentsMargins(0, 0, 0, 0); @@ -166,6 +169,8 @@ void EditEntryWidget::setupAdvanced() m_attributesModel->setEntryAttributes(m_entryAttributes); m_advancedUi->attributesView->setModel(m_attributesModel); + + // clang-format off connect(m_advancedUi->addAttributeButton, SIGNAL(clicked()), SLOT(insertAttribute())); connect(m_advancedUi->editAttributeButton, SIGNAL(clicked()), SLOT(editCurrentAttribute())); connect(m_advancedUi->removeAttributeButton, SIGNAL(clicked()), SLOT(removeCurrentAttribute())); @@ -176,6 +181,7 @@ void EditEntryWidget::setupAdvanced() SLOT(updateCurrentAttribute())); connect(m_advancedUi->fgColorButton, SIGNAL(clicked()), SLOT(pickColor())); connect(m_advancedUi->bgColorButton, SIGNAL(clicked()), SLOT(pickColor())); + // clang-format on } void EditEntryWidget::setupIcon() @@ -193,26 +199,27 @@ void EditEntryWidget::setupAutoType() m_autoTypeAssocModel->setAutoTypeAssociations(m_autoTypeAssoc); m_autoTypeUi->assocView->setModel(m_autoTypeAssocModel); m_autoTypeUi->assocView->setColumnHidden(1, true); + + // clang-format off connect(m_autoTypeUi->enableButton, SIGNAL(toggled(bool)), SLOT(updateAutoTypeEnabled())); - connect( - m_autoTypeUi->customSequenceButton, SIGNAL(toggled(bool)), m_autoTypeUi->sequenceEdit, SLOT(setEnabled(bool))); - connect(m_autoTypeUi->customWindowSequenceButton, - SIGNAL(toggled(bool)), - m_autoTypeUi->windowSequenceEdit, - SLOT(setEnabled(bool))); + connect(m_autoTypeUi->customSequenceButton, SIGNAL(toggled(bool)), + m_autoTypeUi->sequenceEdit, SLOT(setEnabled(bool))); + connect(m_autoTypeUi->customWindowSequenceButton, SIGNAL(toggled(bool)), + m_autoTypeUi->windowSequenceEdit, SLOT(setEnabled(bool))); connect(m_autoTypeUi->assocAddButton, SIGNAL(clicked()), SLOT(insertAutoTypeAssoc())); connect(m_autoTypeUi->assocRemoveButton, SIGNAL(clicked()), SLOT(removeAutoTypeAssoc())); connect(m_autoTypeUi->assocView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), SLOT(updateAutoTypeEnabled())); - connect(m_autoTypeAssocModel, SIGNAL(modelReset()), SLOT(updateAutoTypeEnabled())); connect(m_autoTypeUi->assocView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), SLOT(loadCurrentAssoc(QModelIndex))); + connect(m_autoTypeAssocModel, SIGNAL(modelReset()), SLOT(updateAutoTypeEnabled())); connect(m_autoTypeAssocModel, SIGNAL(modelReset()), SLOT(clearCurrentAssoc())); connect(m_autoTypeUi->windowTitleCombo, SIGNAL(editTextChanged(QString)), SLOT(applyCurrentAssoc())); connect(m_autoTypeUi->customWindowSequenceButton, SIGNAL(toggled(bool)), SLOT(applyCurrentAssoc())); connect(m_autoTypeUi->windowSequenceEdit, SIGNAL(textChanged(QString)), SLOT(applyCurrentAssoc())); + // clang-format on } void EditEntryWidget::setupProperties() @@ -234,14 +241,17 @@ void EditEntryWidget::setupHistory() m_historyUi->historyView->setModel(m_sortModel); m_historyUi->historyView->setRootIsDecorated(false); + // clang-format off connect(m_historyUi->historyView, SIGNAL(activated(QModelIndex)), SLOT(histEntryActivated(QModelIndex))); connect(m_historyUi->historyView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(updateHistoryButtons(QModelIndex,QModelIndex))); + connect(m_historyUi->showButton, SIGNAL(clicked()), SLOT(showHistoryEntry())); connect(m_historyUi->restoreButton, SIGNAL(clicked()), SLOT(restoreHistoryEntry())); connect(m_historyUi->deleteButton, SIGNAL(clicked()), SLOT(deleteHistoryEntry())); connect(m_historyUi->deleteAllButton, SIGNAL(clicked()), SLOT(deleteAllHistoryEntries())); + // clang-format on } void EditEntryWidget::setupEntryUpdate() @@ -253,7 +263,7 @@ void EditEntryWidget::setupEntryUpdate() connect(m_mainUi->passwordRepeatEdit, SIGNAL(textChanged(QString)), this, SLOT(setUnsavedChanges())); connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString)), this, SLOT(setUnsavedChanges())); #ifdef WITH_XC_NETWORKING - connect(m_mainUi->urlEdit, SIGNAL(textChanged(const QString&)), this, SLOT(updateFaviconButtonEnable(const QString&))); + connect(m_mainUi->urlEdit, SIGNAL(textChanged(QString&)), this, SLOT(updateFaviconButtonEnable(QString&))); #endif connect(m_mainUi->expireCheck, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); connect(m_mainUi->notesEnabled, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); @@ -280,7 +290,7 @@ void EditEntryWidget::setupEntryUpdate() connect(m_autoTypeUi->windowTitleCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setUnsavedChanges())); connect(m_autoTypeUi->windowTitleCombo, SIGNAL(editTextChanged(QString)), this, SLOT(setUnsavedChanges())); -// Properties and History tabs don't need extra connections + // Properties and History tabs don't need extra connections #ifdef WITH_XC_SSHAGENT // SSH Agent tab @@ -288,13 +298,12 @@ void EditEntryWidget::setupEntryUpdate() connect(m_sshAgentUi->attachmentRadioButton, SIGNAL(toggled(bool)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->externalFileRadioButton, SIGNAL(toggled(bool)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->attachmentComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setUnsavedChanges())); - connect( - m_sshAgentUi->attachmentComboBox, SIGNAL(editTextChanged(QString)), this, SLOT(setUnsavedChanges())); + connect(m_sshAgentUi->attachmentComboBox, SIGNAL(editTextChanged(QString)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->externalFileEdit, SIGNAL(textChanged(QString)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->addKeyToAgentCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->removeKeyFromAgentCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); - connect( - m_sshAgentUi->requireUserConfirmationCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); + connect(m_sshAgentUi->requireUserConfirmationCheckBox, SIGNAL(stateChanged(int)), + this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->lifetimeCheckBox, SIGNAL(stateChanged(int)), this, SLOT(setUnsavedChanges())); connect(m_sshAgentUi->lifetimeSpinBox, SIGNAL(valueChanged(int)), this, SLOT(setUnsavedChanges())); } @@ -427,11 +436,8 @@ void EditEntryWidget::updateSSHAgentKeyInfo() } if (!key.fingerprint().isEmpty()) { - m_sshAgentUi->fingerprintTextLabel->setText( - key.fingerprint(QCryptographicHash::Md5) + - "\n" + - key.fingerprint(QCryptographicHash::Sha256) - ); + m_sshAgentUi->fingerprintTextLabel->setText(key.fingerprint(QCryptographicHash::Md5) + "\n" + + key.fingerprint(QCryptographicHash::Sha256)); } else { m_sshAgentUi->fingerprintTextLabel->setText(tr("(encrypted)")); } @@ -613,11 +619,8 @@ void EditEntryWidget::decryptPrivateKey() m_sshAgentUi->commentTextLabel->setText(tr("n/a")); } - m_sshAgentUi->fingerprintTextLabel->setText( - key.fingerprint(QCryptographicHash::Md5) + - "\n" + - key.fingerprint(QCryptographicHash::Sha256) - ); + m_sshAgentUi->fingerprintTextLabel->setText(key.fingerprint(QCryptographicHash::Md5) + "\n" + + key.fingerprint(QCryptographicHash::Sha256)); m_sshAgentUi->publicKeyEdit->document()->setPlainText(key.publicKey()); m_sshAgentUi->copyToClipboardButton->setEnabled(true); } diff --git a/src/gui/entry/EditEntryWidget.h b/src/gui/entry/EditEntryWidget.h index b0f5d8c94..9473f76ac 100644 --- a/src/gui/entry/EditEntryWidget.h +++ b/src/gui/entry/EditEntryWidget.h @@ -19,6 +19,7 @@ #ifndef KEEPASSX_EDITENTRYWIDGET_H #define KEEPASSX_EDITENTRYWIDGET_H +#include <QButtonGroup> #include <QModelIndex> #include <QScopedPointer> #include <QButtonGroup> @@ -52,7 +53,7 @@ namespace Ui class EditEntryWidgetMain; class EditEntryWidgetHistory; class EditWidget; -} +} // namespace Ui class EditEntryWidget : public EditWidget { diff --git a/src/gui/entry/EntryAttachmentsWidget.cpp b/src/gui/entry/EntryAttachmentsWidget.cpp index 6f42a1994..e7a72c51e 100644 --- a/src/gui/entry/EntryAttachmentsWidget.cpp +++ b/src/gui/entry/EntryAttachmentsWidget.cpp @@ -43,9 +43,12 @@ EntryAttachmentsWidget::EntryAttachmentsWidget(QWidget* parent) connect(this, SIGNAL(readOnlyChanged(bool)), SLOT(updateButtonsEnabled())); connect(m_attachmentsModel, SIGNAL(modelReset()), SLOT(updateButtonsEnabled())); + + // clang-format off connect(m_ui->attachmentsView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(updateButtonsEnabled())); + // clang-format on connect(m_ui->attachmentsView, SIGNAL(doubleClicked(QModelIndex)), SLOT(openAttachment(QModelIndex))); connect(m_ui->saveAttachmentButton, SIGNAL(clicked()), SLOT(saveSelectedAttachments())); diff --git a/src/gui/entry/EntryAttributesModel.cpp b/src/gui/entry/EntryAttributesModel.cpp index 373fcc6c7..bfdb592cd 100644 --- a/src/gui/entry/EntryAttributesModel.cpp +++ b/src/gui/entry/EntryAttributesModel.cpp @@ -46,9 +46,15 @@ void EntryAttributesModel::setEntryAttributes(EntryAttributes* entryAttributes) connect(m_entryAttributes, SIGNAL(added(QString)), SLOT(attributeAdd())); connect(m_entryAttributes, SIGNAL(aboutToBeRemoved(QString)), SLOT(attributeAboutToRemove(QString))); connect(m_entryAttributes, SIGNAL(removed(QString)), SLOT(attributeRemove())); + // clang-format off connect( m_entryAttributes, SIGNAL(aboutToRename(QString,QString)), SLOT(attributeAboutToRename(QString,QString))); + // clang-format on + + // clang-format off connect(m_entryAttributes, SIGNAL(renamed(QString,QString)), SLOT(attributeRename(QString,QString))); + // clang-format on + connect(m_entryAttributes, SIGNAL(aboutToBeReset()), SLOT(aboutToReset())); connect(m_entryAttributes, SIGNAL(reset()), SLOT(reset())); } diff --git a/src/gui/entry/EntryView.cpp b/src/gui/entry/EntryView.cpp index fa237163e..0a620a687 100644 --- a/src/gui/entry/EntryView.cpp +++ b/src/gui/entry/EntryView.cpp @@ -49,10 +49,12 @@ EntryView::EntryView(QWidget* parent) // QAbstractItemView::startDrag() uses this property as the default drag action setDefaultDropAction(Qt::MoveAction); + // clang-format off connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(emitEntryActivated(QModelIndex))); connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(emitEntrySelectionChanged())); connect(m_model, SIGNAL(usernamesHiddenChanged()), SIGNAL(viewStateChanged())); connect(m_model, SIGNAL(passwordsHiddenChanged()), SIGNAL(viewStateChanged())); + // clang-format on m_headerMenu = new QMenu(this); m_headerMenu->setTitle(tr("Customize View")); @@ -93,10 +95,21 @@ EntryView::EntryView(QWidget* parent) header()->setContextMenuPolicy(Qt::CustomContextMenu); connect(header(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(showHeaderMenu(QPoint))); + // clang-format off connect(header(), SIGNAL(sectionCountChanged(int,int)), SIGNAL(viewStateChanged())); + // clang-format on + + // clang-format off connect(header(), SIGNAL(sectionMoved(int,int,int)), SIGNAL(viewStateChanged())); + // clang-format on + + // clang-format off connect(header(), SIGNAL(sectionResized(int,int,int)), SIGNAL(viewStateChanged())); + // clang-format on + + // clang-format off connect(header(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), SIGNAL(viewStateChanged())); + // clang-format on resetFixedColumns(); diff --git a/src/gui/group/EditGroupWidget.cpp b/src/gui/group/EditGroupWidget.cpp index 5143f4fc1..ec0b604a4 100644 --- a/src/gui/group/EditGroupWidget.cpp +++ b/src/gui/group/EditGroupWidget.cpp @@ -47,9 +47,12 @@ EditGroupWidget::EditGroupWidget(QWidget* parent) connect(this, SIGNAL(accepted()), SLOT(save())); connect(this, SIGNAL(rejected()), SLOT(cancel())); + // clang-format off connect(m_editGroupWidgetIcons, SIGNAL(messageEditEntry(QString,MessageWidget::MessageType)), SLOT(showMessage(QString,MessageWidget::MessageType))); + // clang-format on + connect(m_editGroupWidgetIcons, SIGNAL(messageEditEntryDismiss()), SLOT(hideMessage())); } diff --git a/src/gui/group/EditGroupWidget.h b/src/gui/group/EditGroupWidget.h index 992af0072..f229e4594 100644 --- a/src/gui/group/EditGroupWidget.h +++ b/src/gui/group/EditGroupWidget.h @@ -31,7 +31,7 @@ namespace Ui { class EditGroupWidgetMain; class EditWidget; -} +} // namespace Ui class EditGroupWidget : public EditWidget { diff --git a/src/gui/group/GroupModel.cpp b/src/gui/group/GroupModel.cpp index bb579be03..da84e3d69 100644 --- a/src/gui/group/GroupModel.cpp +++ b/src/gui/group/GroupModel.cpp @@ -39,6 +39,7 @@ void GroupModel::changeDatabase(Database* newDb) m_db = newDb; + // clang-format off connect(m_db, SIGNAL(groupDataChanged(Group*)), SLOT(groupDataChanged(Group*))); connect(m_db, SIGNAL(groupAboutToAdd(Group*,int)), SLOT(groupAboutToAdd(Group*,int))); connect(m_db, SIGNAL(groupAdded()), SLOT(groupAdded())); @@ -46,6 +47,7 @@ void GroupModel::changeDatabase(Database* newDb) connect(m_db, SIGNAL(groupRemoved()), SLOT(groupRemoved())); connect(m_db, SIGNAL(groupAboutToMove(Group*,Group*,int)), SLOT(groupAboutToMove(Group*,Group*,int))); connect(m_db, SIGNAL(groupMoved()), SLOT(groupMoved())); + // clang-format on endResetModel(); } diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp index 5d7cba96a..567048631 100644 --- a/src/gui/group/GroupView.cpp +++ b/src/gui/group/GroupView.cpp @@ -34,11 +34,13 @@ GroupView::GroupView(Database* db, QWidget* parent) setHeaderHidden(true); setUniformRowHeights(true); + // clang-format off connect(this, SIGNAL(expanded(QModelIndex)), SLOT(expandedChanged(QModelIndex))); connect(this, SIGNAL(collapsed(QModelIndex)), SLOT(expandedChanged(QModelIndex))); connect(m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), SLOT(syncExpandedState(QModelIndex,int,int))); connect(m_model, SIGNAL(modelReset()), SLOT(modelReset())); connect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(emitGroupChanged())); + // clang-format on modelReset(); diff --git a/src/gui/masterkey/KeyComponentWidget.cpp b/src/gui/masterkey/KeyComponentWidget.cpp index 72367ecbe..7d795aca1 100644 --- a/src/gui/masterkey/KeyComponentWidget.cpp +++ b/src/gui/masterkey/KeyComponentWidget.cpp @@ -17,6 +17,7 @@ #include "KeyComponentWidget.h" #include "ui_KeyComponentWidget.h" + #include <QStackedWidget> #include <QTimer> @@ -124,7 +125,8 @@ void KeyComponentWidget::updateComponentName(const QString& name) m_ui->addButton->setText(tr("Add %1", "Add a key component").arg(name)); m_ui->changeButton->setText(tr("Change %1", "Change a key component").arg(name)); m_ui->removeButton->setText(tr("Remove %1", "Remove a key component").arg(name)); - m_ui->changeOrRemoveLabel->setText(tr("%1 set, click to change or remove", "Change or remove a key component").arg(name)); + m_ui->changeOrRemoveLabel->setText( + tr("%1 set, click to change or remove", "Change or remove a key component").arg(name)); } void KeyComponentWidget::updateComponentDescription(const QString& description) diff --git a/src/gui/masterkey/KeyComponentWidget.h b/src/gui/masterkey/KeyComponentWidget.h index 5d5188d6e..cf2ae4947 100644 --- a/src/gui/masterkey/KeyComponentWidget.h +++ b/src/gui/masterkey/KeyComponentWidget.h @@ -18,12 +18,12 @@ #ifndef KEEPASSXC_KEYCOMPONENTWIDGET_H #define KEEPASSXC_KEYCOMPONENTWIDGET_H -#include <QWidget> #include <QScopedPointer> +#include <QWidget> namespace Ui { -class KeyComponentWidget; + class KeyComponentWidget; } class CompositeKey; class QStackedWidget; @@ -31,12 +31,14 @@ class QStackedWidget; class KeyComponentWidget : public QWidget { Q_OBJECT + // clang-format off Q_PROPERTY(QString componentName READ m_componentName READ componentName WRITE setComponentName NOTIFY nameChanged) Q_PROPERTY(QString componentDescription READ m_componentDescription READ componentDescription WRITE setComponentDescription NOTIFY descriptionChanged) Q_PROPERTY(bool componentAdded READ m_isComponentAdded READ componentAdded WRITE setComponentAdded NOTIFY componentAddChanged) + // clang-format on public: enum Page @@ -127,4 +129,4 @@ private: const QScopedPointer<Ui::KeyComponentWidget> m_ui; }; -#endif //KEEPASSXC_KEYCOMPONENTWIDGET_H +#endif // KEEPASSXC_KEYCOMPONENTWIDGET_H diff --git a/src/gui/masterkey/KeyFileEditWidget.cpp b/src/gui/masterkey/KeyFileEditWidget.cpp index c694e2c5a..ff56f2cb4 100644 --- a/src/gui/masterkey/KeyFileEditWidget.cpp +++ b/src/gui/masterkey/KeyFileEditWidget.cpp @@ -17,8 +17,9 @@ #include "KeyFileEditWidget.h" #include "ui_KeyFileEditWidget.h" -#include "gui/MainWindow.h" + #include "gui/FileDialog.h" +#include "gui/MainWindow.h" #include "gui/MessageBox.h" #include "keys/CompositeKey.h" #include "keys/FileKey.h" @@ -100,8 +101,10 @@ void KeyFileEditWidget::createKeyFile() QString errorMsg; bool created = FileKey::create(fileName, &errorMsg); if (!created) { - MessageBox::critical(getMainWindow(), tr("Error creating key file"), - tr("Unable to create key file: %1").arg(errorMsg), QMessageBox::Button::Ok); + MessageBox::critical(getMainWindow(), + tr("Error creating key file"), + tr("Unable to create key file: %1").arg(errorMsg), + QMessageBox::Button::Ok); } else { m_compUi->keyFileCombo->setEditText(fileName); } diff --git a/src/gui/masterkey/KeyFileEditWidget.h b/src/gui/masterkey/KeyFileEditWidget.h index aa6c71a58..76cb31fa4 100644 --- a/src/gui/masterkey/KeyFileEditWidget.h +++ b/src/gui/masterkey/KeyFileEditWidget.h @@ -23,12 +23,12 @@ namespace Ui { -class KeyFileEditWidget; + class KeyFileEditWidget; } class KeyFileEditWidget : public KeyComponentWidget { -Q_OBJECT + Q_OBJECT public: explicit KeyFileEditWidget(QWidget* parent = nullptr); @@ -51,4 +51,4 @@ private: QPointer<QWidget> m_compEditWidget; }; -#endif //KEEPASSXC_KEYFILEEDITWIDGET_H +#endif // KEEPASSXC_KEYFILEEDITWIDGET_H diff --git a/src/gui/masterkey/PasswordEditWidget.cpp b/src/gui/masterkey/PasswordEditWidget.cpp index 4006a0b1e..d9d293c43 100644 --- a/src/gui/masterkey/PasswordEditWidget.cpp +++ b/src/gui/masterkey/PasswordEditWidget.cpp @@ -17,10 +17,11 @@ #include "PasswordEditWidget.h" #include "ui_PasswordEditWidget.h" + #include "core/FilePath.h" #include "gui/PasswordGeneratorWidget.h" -#include "keys/PasswordKey.h" #include "keys/CompositeKey.h" +#include "keys/PasswordKey.h" #include <QDialog> @@ -67,7 +68,10 @@ QWidget* PasswordEditWidget::componentEditWidget() m_compUi->passwordGeneratorButton->setIcon(filePath()->icon("actions", "password-generator", false)); m_compUi->repeatPasswordEdit->enableVerifyMode(m_compUi->enterPasswordEdit); - connect(m_compUi->togglePasswordButton, SIGNAL(toggled(bool)), m_compUi->enterPasswordEdit, SLOT(setShowPassword(bool))); + connect(m_compUi->togglePasswordButton, + SIGNAL(toggled(bool)), + m_compUi->enterPasswordEdit, + SLOT(setShowPassword(bool))); connect(m_compUi->passwordGeneratorButton, SIGNAL(clicked(bool)), SLOT(showPasswordGenerator())); return m_compEditWidget; diff --git a/src/gui/masterkey/PasswordEditWidget.h b/src/gui/masterkey/PasswordEditWidget.h index ac10c5122..eefe8855e 100644 --- a/src/gui/masterkey/PasswordEditWidget.h +++ b/src/gui/masterkey/PasswordEditWidget.h @@ -23,7 +23,7 @@ namespace Ui { -class PasswordEditWidget; + class PasswordEditWidget; } class PasswordEditWidget : public KeyComponentWidget @@ -53,4 +53,4 @@ private: QPointer<QWidget> m_compEditWidget; }; -#endif //KEEPASSXC_PASSWORDEDITWIDGET_H +#endif // KEEPASSXC_PASSWORDEDITWIDGET_H diff --git a/src/gui/masterkey/YubiKeyEditWidget.cpp b/src/gui/masterkey/YubiKeyEditWidget.cpp index 27e0a4cf0..96b06833d 100644 --- a/src/gui/masterkey/YubiKeyEditWidget.cpp +++ b/src/gui/masterkey/YubiKeyEditWidget.cpp @@ -17,11 +17,12 @@ #include "YubiKeyEditWidget.h" #include "ui_YubiKeyEditWidget.h" -#include "gui/MessageBox.h" + +#include "config-keepassx.h" #include "gui/MainWindow.h" +#include "gui/MessageBox.h" #include "keys/CompositeKey.h" #include "keys/YkChallengeResponseKey.h" -#include "config-keepassx.h" #include <QtConcurrent> @@ -30,10 +31,11 @@ YubiKeyEditWidget::YubiKeyEditWidget(QWidget* parent) , m_compUi(new Ui::YubiKeyEditWidget()) { setComponentName(tr("YubiKey Challenge-Response")); - setComponentDescription(tr("<p>If you own a <a href=\"https://www.yubico.com/\">YubiKey</a>, you can use it " - "for additional security.</p><p>The YubiKey requires one of its slots to be programmed as " - "<a href=\"https://www.yubico.com/products/services-software/personalization-tools/challenge-response/\">" - "HMAC-SHA1 Challenge-Response</a>.</p>")); + setComponentDescription( + tr("<p>If you own a <a href=\"https://www.yubico.com/\">YubiKey</a>, you can use it " + "for additional security.</p><p>The YubiKey requires one of its slots to be programmed as " + "<a href=\"https://www.yubico.com/products/services-software/personalization-tools/challenge-response/\">" + "HMAC-SHA1 Challenge-Response</a>.</p>")); } YubiKeyEditWidget::~YubiKeyEditWidget() @@ -75,7 +77,10 @@ QWidget* YubiKeyEditWidget::componentEditWidget() #ifdef WITH_XC_YUBIKEY connect(m_compUi->buttonRedetectYubikey, SIGNAL(clicked()), SLOT(pollYubikey())); + // clang-format off connect(YubiKey::instance(), SIGNAL(detected(int,bool)), SLOT(yubikeyDetected(int,bool)), Qt::QueuedConnection); + // clang-format on + connect(YubiKey::instance(), SIGNAL(notFound()), SLOT(noYubikeyFound()), Qt::QueuedConnection); pollYubikey(); diff --git a/src/gui/masterkey/YubiKeyEditWidget.h b/src/gui/masterkey/YubiKeyEditWidget.h index 82fc8b35a..8d7498034 100644 --- a/src/gui/masterkey/YubiKeyEditWidget.h +++ b/src/gui/masterkey/YubiKeyEditWidget.h @@ -23,7 +23,7 @@ namespace Ui { -class YubiKeyEditWidget; + class YubiKeyEditWidget; } class YkChallengeResponseKey; @@ -57,4 +57,4 @@ private: bool m_isDetected = false; }; -#endif //KEEPASSXC_YUBIKEYEDITWIDGET_H +#endif // KEEPASSXC_YUBIKEYEDITWIDGET_H diff --git a/src/gui/settings/SettingsWidget.h b/src/gui/settings/SettingsWidget.h index 4630a776e..8c55c5221 100644 --- a/src/gui/settings/SettingsWidget.h +++ b/src/gui/settings/SettingsWidget.h @@ -62,7 +62,7 @@ public slots: /** * Discard settings. */ - virtual void discard() {}; + virtual void discard(){}; signals: void editFinished(bool saved); @@ -72,4 +72,4 @@ private: bool m_advancedMode = false; }; -#endif //KEEPASSXC_SETTINGSWIDGET_H +#endif // KEEPASSXC_SETTINGSWIDGET_H diff --git a/src/gui/wizard/NewDatabaseWizard.cpp b/src/gui/wizard/NewDatabaseWizard.cpp index 004d92f31..be5277ac5 100644 --- a/src/gui/wizard/NewDatabaseWizard.cpp +++ b/src/gui/wizard/NewDatabaseWizard.cpp @@ -16,14 +16,14 @@ */ #include "NewDatabaseWizard.h" -#include "NewDatabaseWizardPageMetaData.h" #include "NewDatabaseWizardPageEncryption.h" #include "NewDatabaseWizardPageMasterKey.h" +#include "NewDatabaseWizardPageMetaData.h" -#include "core/Global.h" #include "core/Database.h" -#include "core/Group.h" #include "core/FilePath.h" +#include "core/Global.h" +#include "core/Group.h" #include "format/KeePass2.h" #include <QVBoxLayout> @@ -35,11 +35,13 @@ NewDatabaseWizard::NewDatabaseWizard(QWidget* parent) setWizardStyle(QWizard::MacStyle); setOption(QWizard::WizardOption::HaveHelpButton, false); + // clang-format off m_pages << new NewDatabaseWizardPageMetaData() << new NewDatabaseWizardPageEncryption() << new NewDatabaseWizardPageMasterKey(); + // clang-format on - for (const auto& page: asConst(m_pages)) { + for (const auto& page : asConst(m_pages)) { addPage(page); } diff --git a/src/gui/wizard/NewDatabaseWizard.h b/src/gui/wizard/NewDatabaseWizard.h index 802dc061e..fd18f7b22 100644 --- a/src/gui/wizard/NewDatabaseWizard.h +++ b/src/gui/wizard/NewDatabaseWizard.h @@ -30,7 +30,7 @@ class NewDatabaseWizardPage; */ class NewDatabaseWizard : public QWizard { -Q_OBJECT + Q_OBJECT public: explicit NewDatabaseWizard(QWidget* parent = nullptr); @@ -47,4 +47,4 @@ private: QList<QPointer<NewDatabaseWizardPage>> m_pages; }; -#endif //KEEPASSXC_NEWDATABASEWIZARD_H +#endif // KEEPASSXC_NEWDATABASEWIZARD_H diff --git a/src/gui/wizard/NewDatabaseWizardPage.cpp b/src/gui/wizard/NewDatabaseWizardPage.cpp index b49b7b384..5b64a6b3d 100644 --- a/src/gui/wizard/NewDatabaseWizardPage.cpp +++ b/src/gui/wizard/NewDatabaseWizardPage.cpp @@ -19,6 +19,7 @@ #include "NewDatabaseWizardPage.h" #include "ui_NewDatabaseWizardPage.h" + #include "core/Database.h" #include "gui/dbsettings/DatabaseSettingsWidget.h" diff --git a/src/gui/wizard/NewDatabaseWizardPage.h b/src/gui/wizard/NewDatabaseWizardPage.h index 785527e23..ea5158a00 100644 --- a/src/gui/wizard/NewDatabaseWizardPage.h +++ b/src/gui/wizard/NewDatabaseWizardPage.h @@ -26,7 +26,7 @@ class Database; class DatabaseSettingsWidget; namespace Ui { -class NewDatabaseWizardPage; + class NewDatabaseWizardPage; } /** @@ -34,7 +34,7 @@ class NewDatabaseWizardPage; */ class NewDatabaseWizardPage : public QWizardPage { -Q_OBJECT + Q_OBJECT public: explicit NewDatabaseWizardPage(QWidget* parent = nullptr); @@ -58,4 +58,4 @@ protected: const QScopedPointer<Ui::NewDatabaseWizardPage> m_ui; }; -#endif //KEEPASSXC_NEWDATABASEWIZARDPAGE_H +#endif // KEEPASSXC_NEWDATABASEWIZARDPAGE_H diff --git a/src/gui/wizard/NewDatabaseWizardPageEncryption.h b/src/gui/wizard/NewDatabaseWizardPageEncryption.h index c10e84dba..af22851ff 100644 --- a/src/gui/wizard/NewDatabaseWizardPageEncryption.h +++ b/src/gui/wizard/NewDatabaseWizardPageEncryption.h @@ -22,7 +22,7 @@ class NewDatabaseWizardPageEncryption : public NewDatabaseWizardPage { -Q_OBJECT + Q_OBJECT public: explicit NewDatabaseWizardPageEncryption(QWidget* parent = nullptr); @@ -30,4 +30,4 @@ public: ~NewDatabaseWizardPageEncryption() override; }; -#endif //KEEPASSXC_NEWDATABASEWIZARDPAGEENCRYPTION_H +#endif // KEEPASSXC_NEWDATABASEWIZARDPAGEENCRYPTION_H diff --git a/src/gui/wizard/NewDatabaseWizardPageMasterKey.h b/src/gui/wizard/NewDatabaseWizardPageMasterKey.h index c6fa53cea..3b5072846 100644 --- a/src/gui/wizard/NewDatabaseWizardPageMasterKey.h +++ b/src/gui/wizard/NewDatabaseWizardPageMasterKey.h @@ -22,7 +22,7 @@ class NewDatabaseWizardPageMasterKey : public NewDatabaseWizardPage { -Q_OBJECT + Q_OBJECT public: explicit NewDatabaseWizardPageMasterKey(QWidget* parent = nullptr); @@ -33,4 +33,4 @@ private slots: void updateWindowSize(); }; -#endif //KEEPASSXC_NEWDATABASEWIZARDPAGEMASTERKEY_H +#endif // KEEPASSXC_NEWDATABASEWIZARDPAGEMASTERKEY_H diff --git a/src/gui/wizard/NewDatabaseWizardPageMetaData.h b/src/gui/wizard/NewDatabaseWizardPageMetaData.h index 44e8f1941..01b6fc47c 100644 --- a/src/gui/wizard/NewDatabaseWizardPageMetaData.h +++ b/src/gui/wizard/NewDatabaseWizardPageMetaData.h @@ -27,7 +27,7 @@ class Database; class NewDatabaseWizardPageMetaData : public NewDatabaseWizardPage { -Q_OBJECT + Q_OBJECT public: explicit NewDatabaseWizardPageMetaData(QWidget* parent = nullptr); @@ -35,4 +35,4 @@ public: ~NewDatabaseWizardPageMetaData() override; }; -#endif //KEEPASSXC_NEWDATABASEWIZARDPAGEMETADATA_H +#endif // KEEPASSXC_NEWDATABASEWIZARDPAGEMETADATA_H diff --git a/src/keys/ChallengeResponseKey.h b/src/keys/ChallengeResponseKey.h index 2f7e7f4ca..8d1fa5774 100644 --- a/src/keys/ChallengeResponseKey.h +++ b/src/keys/ChallengeResponseKey.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_CHALLENGE_RESPONSE_KEY_H #define KEEPASSX_CHALLENGE_RESPONSE_KEY_H @@ -25,9 +25,14 @@ class ChallengeResponseKey { public: - explicit ChallengeResponseKey(const QUuid& uuid) : m_uuid(uuid) {} + explicit ChallengeResponseKey(const QUuid& uuid) + : m_uuid(uuid) + { + } Q_DISABLE_COPY(ChallengeResponseKey); - virtual ~ChallengeResponseKey() {} + virtual ~ChallengeResponseKey() + { + } virtual QByteArray rawKey() const = 0; virtual bool challenge(const QByteArray& challenge) = 0; virtual QUuid uuid() const diff --git a/src/keys/CompositeKey.cpp b/src/keys/CompositeKey.cpp index 10e86318b..3eb4691cd 100644 --- a/src/keys/CompositeKey.cpp +++ b/src/keys/CompositeKey.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "CompositeKey.h" #include <QFile> diff --git a/src/keys/CompositeKey.h b/src/keys/CompositeKey.h index f32f3a1a1..c0c77f2f4 100644 --- a/src/keys/CompositeKey.h +++ b/src/keys/CompositeKey.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_COMPOSITEKEY_H #define KEEPASSX_COMPOSITEKEY_H @@ -45,7 +45,7 @@ public: void addKey(const QSharedPointer<Key>& key); const QList<QSharedPointer<Key>>& keys() const; - void addChallengeResponseKey(const QSharedPointer<ChallengeResponseKey>& key);\ + void addChallengeResponseKey(const QSharedPointer<ChallengeResponseKey>& key); const QList<QSharedPointer<ChallengeResponseKey>>& challengeResponseKeys() const; private: diff --git a/src/keys/FileKey.cpp b/src/keys/FileKey.cpp index 6751b7877..9d1e8f50f 100644 --- a/src/keys/FileKey.cpp +++ b/src/keys/FileKey.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* Copyright (C) 2011 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * Copyright (C) 2011 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "FileKey.h" diff --git a/src/keys/FileKey.h b/src/keys/FileKey.h index 295fe5565..d7486467b 100644 --- a/src/keys/FileKey.h +++ b/src/keys/FileKey.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* Copyright (C) 2011 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * Copyright (C) 2011 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_FILEKEY_H #define KEEPASSX_FILEKEY_H diff --git a/src/keys/Key.h b/src/keys/Key.h index db7864ec3..985f383d2 100644 --- a/src/keys/Key.h +++ b/src/keys/Key.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2018 KeePassXC Team <team@keepassxc.org> + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_KEY_H #define KEEPASSX_KEY_H @@ -25,7 +25,8 @@ class Key { public: - explicit Key(const QUuid& uuid) : m_uuid(uuid) {}; + explicit Key(const QUuid& uuid) + : m_uuid(uuid){}; Q_DISABLE_COPY(Key); virtual ~Key() = default; virtual QByteArray rawKey() const = 0; diff --git a/src/keys/PasswordKey.cpp b/src/keys/PasswordKey.cpp index 9fecc7637..35ecb9989 100644 --- a/src/keys/PasswordKey.cpp +++ b/src/keys/PasswordKey.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "PasswordKey.h" diff --git a/src/keys/PasswordKey.h b/src/keys/PasswordKey.h index 46c47e6d3..68ab79895 100644 --- a/src/keys/PasswordKey.h +++ b/src/keys/PasswordKey.h @@ -1,25 +1,25 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_PASSWORDKEY_H #define KEEPASSX_PASSWORDKEY_H -#include <QString> #include <QSharedPointer> +#include <QString> #include "keys/Key.h" @@ -34,6 +34,7 @@ public: void setPassword(const QString& password); static QSharedPointer<PasswordKey> fromRawKey(const QByteArray& rawKey); + private: QByteArray m_key; }; diff --git a/src/keys/YkChallengeResponseKey.cpp b/src/keys/YkChallengeResponseKey.cpp index 830e0c0e0..ee413aeac 100644 --- a/src/keys/YkChallengeResponseKey.cpp +++ b/src/keys/YkChallengeResponseKey.cpp @@ -1,20 +1,21 @@ /* -* Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + #include "keys/YkChallengeResponseKey.h" #include "keys/drivers/YubiKey.h" diff --git a/src/keys/YkChallengeResponseKey.h b/src/keys/YkChallengeResponseKey.h index fccd90811..b8467e7a6 100644 --- a/src/keys/YkChallengeResponseKey.h +++ b/src/keys/YkChallengeResponseKey.h @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + */ #ifndef KEEPASSX_YK_CHALLENGERESPONSEKEY_H #define KEEPASSX_YK_CHALLENGERESPONSEKEY_H diff --git a/src/keys/drivers/YubiKey.cpp b/src/keys/drivers/YubiKey.cpp index bd09fb9f6..6a9843b44 100644 --- a/src/keys/drivers/YubiKey.cpp +++ b/src/keys/drivers/YubiKey.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include <stdio.h> diff --git a/src/keys/drivers/YubiKey.h b/src/keys/drivers/YubiKey.h index 14cb43394..420e650b5 100644 --- a/src/keys/drivers/YubiKey.h +++ b/src/keys/drivers/YubiKey.h @@ -1,20 +1,20 @@ /* -* Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_YUBIKEY_H #define KEEPASSX_YUBIKEY_H diff --git a/src/keys/drivers/YubiKeyStub.cpp b/src/keys/drivers/YubiKeyStub.cpp index 3cff04965..f0647ab8a 100644 --- a/src/keys/drivers/YubiKeyStub.cpp +++ b/src/keys/drivers/YubiKeyStub.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2014 Kyle Manna <kyle@kylemanna.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include <stdio.h> diff --git a/src/main.cpp b/src/main.cpp index c811fe62c..81192f977 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,19 +16,19 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <QCommandLineParser> #include <QFile> #include <QTextStream> -#include <QCommandLineParser> +#include "cli/Utils.h" #include "config-keepassx.h" #include "core/Bootstrap.h" -#include "core/Tools.h" #include "core/Config.h" +#include "core/Tools.h" #include "crypto/Crypto.h" #include "gui/Application.h" #include "gui/MainWindow.h" #include "gui/MessageBox.h" -#include "cli/Utils.h" #if defined(WITH_ASAN) && defined(WITH_LSAN) #include <sanitizer/lsan_interface.h> @@ -58,19 +58,24 @@ int main(int argc, char** argv) Bootstrap::bootstrapApplication(); QCommandLineParser parser; - parser.setApplicationDescription(QCoreApplication::translate("main", "KeePassXC - cross-platform password manager")); - parser.addPositionalArgument("filename", - QCoreApplication::translate("main", "filenames of the password databases to open (*.kdbx)"), "[filename(s)]"); + parser.setApplicationDescription( + QCoreApplication::translate("main", "KeePassXC - cross-platform password manager")); + parser.addPositionalArgument( + "filename", + QCoreApplication::translate("main", "filenames of the password databases to open (*.kdbx)"), + "[filename(s)]"); QCommandLineOption configOption( "config", QCoreApplication::translate("main", "path to a custom config file"), "config"); QCommandLineOption keyfileOption( "keyfile", QCoreApplication::translate("main", "key file of the database"), "keyfile"); QCommandLineOption pwstdinOption("pw-stdin", - QCoreApplication::translate("main", "read password of the database from stdin")); + QCoreApplication::translate("main", "read password of the database from stdin")); // This is needed under Windows where clients send --parent-window parameter with Native Messaging connect method - QCommandLineOption parentWindowOption( - QStringList() << "pw" << "parent-window", QCoreApplication::translate("main", "Parent window handle"), "handle"); + QCommandLineOption parentWindowOption(QStringList() << "pw" + << "parent-window", + QCoreApplication::translate("main", "Parent window handle"), + "handle"); QCommandLineOption helpOption = parser.addHelpOption(); QCommandLineOption versionOption = parser.addVersionOption(); @@ -80,19 +85,21 @@ int main(int argc, char** argv) parser.addOption(parentWindowOption); parser.process(app); - + // Don't try and do anything with the application if we're only showing the help / version if (parser.isSet(versionOption) || parser.isSet(helpOption)) { return 0; } - + const QStringList fileNames = parser.positionalArguments(); if (app.isAlreadyRunning()) { if (!fileNames.isEmpty()) { app.sendFileNamesToRunningInstance(fileNames); } - qWarning() << QCoreApplication::translate("Main", "Another instance of KeePassXC is already running.").toUtf8().constData(); + qWarning() << QCoreApplication::translate("Main", "Another instance of KeePassXC is already running.") + .toUtf8() + .constData(); return 0; } diff --git a/src/proxy/NativeMessagingHost.cpp b/src/proxy/NativeMessagingHost.cpp index 0f9d82eaa..60f5d79ed 100644 --- a/src/proxy/NativeMessagingHost.cpp +++ b/src/proxy/NativeMessagingHost.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "NativeMessagingHost.h" #include <QCoreApplication> @@ -22,12 +22,13 @@ #include <Winsock2.h> #endif -NativeMessagingHost::NativeMessagingHost() : NativeMessagingBase(true) +NativeMessagingHost::NativeMessagingHost() + : NativeMessagingBase(true) { m_localSocket = new QLocalSocket(); m_localSocket->connectToServer(getLocalServerPath()); m_localSocket->setReadBufferSize(NATIVE_MSG_MAX_LENGTH); - + int socketDesc = m_localSocket->socketDescriptor(); if (socketDesc) { int max = NATIVE_MSG_MAX_LENGTH; @@ -101,7 +102,7 @@ bool NativeMessagingHost::readStdIn(const quint32 length) m_localSocket->write(arr.constData(), arr.length()); m_localSocket->flush(); } - + return true; } diff --git a/src/proxy/NativeMessagingHost.h b/src/proxy/NativeMessagingHost.h index 67fd5e531..083e12d48 100644 --- a/src/proxy/NativeMessagingHost.h +++ b/src/proxy/NativeMessagingHost.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef NATIVEMESSAGINGHOST_H #define NATIVEMESSAGINGHOST_H diff --git a/src/proxy/keepassxc-proxy.cpp b/src/proxy/keepassxc-proxy.cpp index d75f841c0..0d0fbfb23 100644 --- a/src/proxy/keepassxc-proxy.cpp +++ b/src/proxy/keepassxc-proxy.cpp @@ -1,20 +1,20 @@ /* -* Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 Sami Vänttinen <sami.vanttinen@protonmail.com> + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "NativeMessagingHost.h" #include <QCoreApplication> diff --git a/src/sshagent/ASN1Key.cpp b/src/sshagent/ASN1Key.cpp index dc6da2adc..7d71d81a1 100644 --- a/src/sshagent/ASN1Key.cpp +++ b/src/sshagent/ASN1Key.cpp @@ -112,7 +112,7 @@ namespace return QByteArray::fromHex(QString(iqmp_hex).toLatin1()); } -} +} // namespace bool ASN1Key::parseDSA(QByteArray& ba, OpenSSHKey& key) { diff --git a/src/sshagent/ASN1Key.h b/src/sshagent/ASN1Key.h index 59f8d4e81..5e235fb0d 100644 --- a/src/sshagent/ASN1Key.h +++ b/src/sshagent/ASN1Key.h @@ -26,6 +26,6 @@ namespace ASN1Key { bool parseDSA(QByteArray& ba, OpenSSHKey& key); bool parseRSA(QByteArray& ba, OpenSSHKey& key); -} +} // namespace ASN1Key #endif // ASN1KEY_H diff --git a/src/sshagent/AgentSettingsPage.h b/src/sshagent/AgentSettingsPage.h index 09d898048..015dfb9ac 100644 --- a/src/sshagent/AgentSettingsPage.h +++ b/src/sshagent/AgentSettingsPage.h @@ -19,8 +19,8 @@ #ifndef AGENTSETTINGSPAGE_H #define AGENTSETTINGSPAGE_H -#include "gui/DatabaseTabWidget.h" #include "gui/ApplicationSettingsWidget.h" +#include "gui/DatabaseTabWidget.h" class AgentSettingsPage : public ISettingsPage { diff --git a/src/sshagent/AgentSettingsWidget.cpp b/src/sshagent/AgentSettingsWidget.cpp index 10a09f9da..6d69e4b61 100644 --- a/src/sshagent/AgentSettingsWidget.cpp +++ b/src/sshagent/AgentSettingsWidget.cpp @@ -17,9 +17,10 @@ */ #include "AgentSettingsWidget.h" -#include "core/Config.h" #include "ui_AgentSettingsWidget.h" +#include "core/Config.h" + AgentSettingsWidget::AgentSettingsWidget(QWidget* parent) : QWidget(parent) , m_ui(new Ui::AgentSettingsWidget()) diff --git a/src/sshagent/KeeAgentSettings.cpp b/src/sshagent/KeeAgentSettings.cpp index ac6a381bf..8c2278005 100644 --- a/src/sshagent/KeeAgentSettings.cpp +++ b/src/sshagent/KeeAgentSettings.cpp @@ -34,6 +34,7 @@ KeeAgentSettings::KeeAgentSettings() bool KeeAgentSettings::operator==(KeeAgentSettings& other) { + // clang-format off return (m_allowUseOfSshKey == other.m_allowUseOfSshKey && m_addAtDatabaseOpen == other.m_addAtDatabaseOpen && m_removeAtDatabaseClose == other.m_removeAtDatabaseClose && m_useConfirmConstraintWhenAdding == other.m_useConfirmConstraintWhenAdding @@ -43,6 +44,7 @@ bool KeeAgentSettings::operator==(KeeAgentSettings& other) && m_attachmentName == other.m_attachmentName && m_saveAttachmentToTempFile == other.m_saveAttachmentToTempFile && m_fileName == other.m_fileName); + // clang-format on } bool KeeAgentSettings::operator!=(KeeAgentSettings& other) diff --git a/src/sshagent/OpenSSHKey.cpp b/src/sshagent/OpenSSHKey.cpp index 9d1301a05..8abbee367 100644 --- a/src/sshagent/OpenSSHKey.cpp +++ b/src/sshagent/OpenSSHKey.cpp @@ -390,7 +390,7 @@ bool OpenSSHKey::openPrivateKey(const QString& passphrase) hash.addData(m_cipherIV.data(), 8); mdBuf = hash.result(); keyData.append(mdBuf); - } while(keyData.size() < cipher->keySize()); + } while (keyData.size() < cipher->keySize()); if (keyData.size() > cipher->keySize()) { // If our key size isn't a multiple of 16 (e.g. AES-192 or something), diff --git a/src/streams/HashedBlockStream.cpp b/src/streams/HashedBlockStream.cpp index 753bdecc6..879960223 100644 --- a/src/streams/HashedBlockStream.cpp +++ b/src/streams/HashedBlockStream.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "HashedBlockStream.h" diff --git a/src/streams/HashedBlockStream.h b/src/streams/HashedBlockStream.h index 60a15a8c9..e107c2cce 100644 --- a/src/streams/HashedBlockStream.h +++ b/src/streams/HashedBlockStream.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_HASHEDBLOCKSTREAM_H #define KEEPASSX_HASHEDBLOCKSTREAM_H diff --git a/src/streams/HmacBlockStream.cpp b/src/streams/HmacBlockStream.cpp index 30c7bac5e..ccfefcba7 100644 --- a/src/streams/HmacBlockStream.cpp +++ b/src/streams/HmacBlockStream.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "HmacBlockStream.h" diff --git a/src/streams/HmacBlockStream.h b/src/streams/HmacBlockStream.h index a2ad062e3..18f5e5301 100644 --- a/src/streams/HmacBlockStream.h +++ b/src/streams/HmacBlockStream.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_HMACBLOCKSTREAM_H #define KEEPASSX_HMACBLOCKSTREAM_H diff --git a/src/streams/LayeredStream.cpp b/src/streams/LayeredStream.cpp index 9b1545850..af62dae95 100644 --- a/src/streams/LayeredStream.cpp +++ b/src/streams/LayeredStream.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "LayeredStream.h" diff --git a/src/streams/LayeredStream.h b/src/streams/LayeredStream.h index 4ca7aba9a..0e1156d70 100644 --- a/src/streams/LayeredStream.h +++ b/src/streams/LayeredStream.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2010 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2010 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_LAYEREDSTREAM_H #define KEEPASSX_LAYEREDSTREAM_H diff --git a/src/streams/StoreDataStream.cpp b/src/streams/StoreDataStream.cpp index 18d7db980..428592e50 100644 --- a/src/streams/StoreDataStream.cpp +++ b/src/streams/StoreDataStream.cpp @@ -1,19 +1,19 @@ /* -* Copyright (C) 2012 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2012 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #include "StoreDataStream.h" diff --git a/src/streams/StoreDataStream.h b/src/streams/StoreDataStream.h index 9f39d6a7c..e08f46c61 100644 --- a/src/streams/StoreDataStream.h +++ b/src/streams/StoreDataStream.h @@ -1,19 +1,19 @@ /* -* Copyright (C) 2012 Felix Geyer <debfx@fobos.de> -* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 2 or (at your option) -* version 3 of the License. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ + * Copyright (C) 2012 Felix Geyer <debfx@fobos.de> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 or (at your option) + * version 3 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ #ifndef KEEPASSX_STOREDATASTREAM_H #define KEEPASSX_STOREDATASTREAM_H diff --git a/src/totp/totp.cpp b/src/totp/totp.cpp index f1146441a..fef8e0b7e 100644 --- a/src/totp/totp.cpp +++ b/src/totp/totp.cpp @@ -30,7 +30,7 @@ #include <QtEndian> #include <cmath> -static QList<Totp::Encoder> encoders { +static QList<Totp::Encoder> encoders{ {"", "", "0123456789", Totp::DEFAULT_DIGITS, Totp::DEFAULT_STEP, false}, {"steam", Totp::STEAM_SHORTNAME, "23456789BCDFGHJKMNPQRTVWXY", Totp::STEAM_DIGITS, Totp::DEFAULT_STEP, true}, }; @@ -88,16 +88,18 @@ QSharedPointer<Totp::Settings> Totp::parseSettings(const QString& rawSettings, c return settings; } -QSharedPointer<Totp::Settings> Totp::createSettings(const QString& key, const uint digits, const uint step, - const QString& encoderShortName) +QSharedPointer<Totp::Settings> +Totp::createSettings(const QString& key, const uint digits, const uint step, const QString& encoderShortName) { bool isCustom = digits != DEFAULT_DIGITS || step != DEFAULT_STEP; - return QSharedPointer<Totp::Settings>(new Totp::Settings { - getEncoderByShortName(encoderShortName), key, false, isCustom, digits, step - }); + return QSharedPointer<Totp::Settings>( + new Totp::Settings{getEncoderByShortName(encoderShortName), key, false, isCustom, digits, step}); } -QString Totp::writeSettings(const QSharedPointer<Totp::Settings>& settings, const QString& title, const QString& username, bool forceOtp) +QString Totp::writeSettings(const QSharedPointer<Totp::Settings>& settings, + const QString& title, + const QString& username, + bool forceOtp) { if (settings.isNull()) { return {}; @@ -106,11 +108,11 @@ QString Totp::writeSettings(const QSharedPointer<Totp::Settings>& settings, cons // OTP Url output if (settings->otpUrl || forceOtp) { auto urlstring = QString("otpauth://totp/%1:%2?secret=%3&period=%4&digits=%5&issuer=%1") - .arg(title.isEmpty() ? "KeePassXC" : QString(QUrl::toPercentEncoding(title)), - username.isEmpty() ? "none" : QString(QUrl::toPercentEncoding(username)), - QString(Base32::sanitizeInput(settings->key.toLatin1()))) - .arg(settings->step) - .arg(settings->digits); + .arg(title.isEmpty() ? "KeePassXC" : QString(QUrl::toPercentEncoding(title)), + username.isEmpty() ? "none" : QString(QUrl::toPercentEncoding(username)), + QString(Base32::sanitizeInput(settings->key.toLatin1()))) + .arg(settings->step) + .arg(settings->digits); if (!settings->encoder.name.isEmpty()) { urlstring.append("&encoder=").append(settings->encoder.name); diff --git a/src/totp/totp.h b/src/totp/totp.h index 0697281bf..9c90ec5a9 100644 --- a/src/totp/totp.h +++ b/src/totp/totp.h @@ -21,54 +21,57 @@ #include <QMap> #include <QString> -#include <QtCore/qglobal.h> #include <QtCore/QSharedPointer> +#include <QtCore/qglobal.h> class QUrl; -namespace Totp { - -struct Encoder +namespace Totp { - QString name; - QString shortName; - QString alphabet; - uint digits; - uint step; - bool reverse; -}; -struct Settings -{ - Totp::Encoder encoder; - QString key; - bool otpUrl; - bool custom; - uint digits; - uint step; -}; + struct Encoder + { + QString name; + QString shortName; + QString alphabet; + uint digits; + uint step; + bool reverse; + }; + + struct Settings + { + Totp::Encoder encoder; + QString key; + bool otpUrl; + bool custom; + uint digits; + uint step; + }; -constexpr uint DEFAULT_STEP = 30u; -constexpr uint DEFAULT_DIGITS = 6u; -constexpr uint STEAM_DIGITS = 5u; -static const QString STEAM_SHORTNAME = "S"; + constexpr uint DEFAULT_STEP = 30u; + constexpr uint DEFAULT_DIGITS = 6u; + constexpr uint STEAM_DIGITS = 5u; + static const QString STEAM_SHORTNAME = "S"; -static const QString ATTRIBUTE_OTP = "otp"; -static const QString ATTRIBUTE_SEED = "TOTP Seed"; -static const QString ATTRIBUTE_SETTINGS = "TOTP Settings"; + static const QString ATTRIBUTE_OTP = "otp"; + static const QString ATTRIBUTE_SEED = "TOTP Seed"; + static const QString ATTRIBUTE_SETTINGS = "TOTP Settings"; -QSharedPointer<Totp::Settings> parseSettings(const QString& rawSettings, const QString& key = {}); -QSharedPointer<Totp::Settings> createSettings(const QString& key, const uint digits, const uint step, - const QString& encoderShortName = {}); -QString writeSettings(const QSharedPointer<Totp::Settings>& settings, const QString& title = {}, - const QString& username = {}, bool forceOtp = false); + QSharedPointer<Totp::Settings> parseSettings(const QString& rawSettings, const QString& key = {}); + QSharedPointer<Totp::Settings> + createSettings(const QString& key, const uint digits, const uint step, const QString& encoderShortName = {}); + QString writeSettings(const QSharedPointer<Totp::Settings>& settings, + const QString& title = {}, + const QString& username = {}, + bool forceOtp = false); -QString generateTotp(const QSharedPointer<Totp::Settings>& settings, const quint64 time = 0ull); + QString generateTotp(const QSharedPointer<Totp::Settings>& settings, const quint64 time = 0ull); -Encoder& defaultEncoder(); -Encoder& steamEncoder(); -Encoder& getEncoderByShortName(const QString& shortName); -Encoder& getEncoderByName(const QString& name); -} + Encoder& defaultEncoder(); + Encoder& steamEncoder(); + Encoder& getEncoderByShortName(const QString& shortName); + Encoder& getEncoderByName(const QString& name); +} // namespace Totp #endif // QTOTP_H diff --git a/src/touchid/TouchID.h b/src/touchid/TouchID.h index 115943a27..d37522054 100644 --- a/src/touchid/TouchID.h +++ b/src/touchid/TouchID.h @@ -5,10 +5,10 @@ #define TOUCHID_AVAILABLE 1 #define TOUCHID_NOT_AVAILABLE 0 -#include <QHash> -#include <QString> #include <QByteArray> +#include <QHash> #include <QSharedPointer> +#include <QString> class TouchID { @@ -16,7 +16,9 @@ public: static TouchID& getInstance(); private: - TouchID() {} + TouchID() + { + } // TouchID(TouchID const&); // Don't Implement // void operator=(TouchID const&); // Don't implement |