diff --git a/src/utils/validation.cpp b/src/utils/validation.cpp index 7c954fef9..f5017aec5 100644 --- a/src/utils/validation.cpp +++ b/src/utils/validation.cpp @@ -1,113 +1,113 @@ /* -*- mode: c++; c-basic-offset:4 -*- utils/validation.cpp This file is part of Kleopatra, the KDE keymanager SPDX-FileCopyrightText: 2008 Klarälvdalens Datakonsult AB SPDX-License-Identifier: GPL-2.0-or-later */ #include #include "validation.h" #include #include #include "kleopatra_debug.h" #include using namespace Kleo; namespace { template class EmptyIsAcceptableValidator : public Validator { public: using Validator::Validator; QValidator::State validate(QString &str, int &pos) const override { if (str.trimmed().isEmpty()) { return QValidator::Acceptable; } return Validator::validate(str, pos); } }; class EMailValidator : public QValidator { public: explicit EMailValidator(QObject *parent = nullptr) : QValidator(parent) {} State validate(QString &str, int &pos) const override { Q_UNUSED(pos) if (KEmailAddress::isValidSimpleAddress(str)) { return Acceptable; } return Intermediate; } }; QValidator *regularExpressionValidator(Validation::Flags flags, const QString ®exp, QObject *parent) { if (flags & Validation::Required) { return new QRegularExpressionValidator{QRegularExpression{regexp}, parent}; } else { return new EmptyIsAcceptableValidator{QRegularExpression{regexp}, parent}; } } } QValidator *Validation::email(Flags flags, QObject *parent) { if (flags & Required) { return new EMailValidator{parent}; } else { return new EmptyIsAcceptableValidator{parent}; } } QValidator *Validation::email(const QString &addRX, Flags flags, QObject *parent) { return new MultiValidator{email(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; } QValidator *Validation::pgpName(Flags flags, QObject *parent) { // this regular expression is modeled after gnupg/g10/keygen.c:ask_user_id: - static const auto name_rx = QRegularExpression{QStringLiteral("[^0-9<>][^<>@]{3,}")}; + static const auto name_rx = QRegularExpression{QStringLiteral("[^0-9<>][^<>@]{4,}")}; if (flags & Required) { return new QRegularExpressionValidator{name_rx, parent}; } else { return new EmptyIsAcceptableValidator{name_rx, parent}; } } QValidator *Validation::pgpName(const QString &addRX, Flags flags, QObject *parent) { return new MultiValidator{pgpName(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; } QValidator *Validation::pgpComment(Flags flags, QObject *parent) { // this regular expression is modeled after gnupg/g10/keygen.c:ask_user_id: static const auto comment_rx = QRegularExpression{QStringLiteral("[^()]*")}; if (flags & Required) { return new QRegularExpressionValidator{comment_rx, parent}; } else { return new EmptyIsAcceptableValidator{comment_rx, parent}; } } QValidator *Validation::pgpComment(const QString &addRX, Flags flags, QObject *parent) { return new MultiValidator{pgpComment(flags), regularExpressionValidator(flags, addRX, nullptr), parent}; }