File indexing completed on 2025-05-04 04:59:03

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "checksignature.h"
0008 
0009 #include <QCommandLineParser>
0010 #include <QCoreApplication>
0011 #include <QDebug>
0012 #include <QFile>
0013 #include <QStandardPaths>
0014 
0015 CheckSignature::CheckSignature(const QString &fileName, QObject *parent)
0016     : QObject(parent)
0017 {
0018     mQcaInitializer = new QCA::Initializer(QCA::Practical, 64);
0019     auto job = new MessageViewer::DKIMCheckSignatureJob(this);
0020     connect(job, &MessageViewer::DKIMCheckSignatureJob::result, this, &CheckSignature::slotResult);
0021 
0022     auto msg = new KMime::Message;
0023     QFile file(fileName);
0024     if (file.open(QIODevice::ReadOnly)) {
0025         msg->setContent(file.readAll());
0026     } else {
0027         qWarning() << "Couldn't read" << fileName;
0028     }
0029     msg->parse();
0030     job->setMessage(KMime::Message::Ptr(msg));
0031     job->start();
0032 }
0033 
0034 CheckSignature::~CheckSignature()
0035 {
0036     delete mQcaInitializer;
0037 }
0038 
0039 void CheckSignature::slotResult(const MessageViewer::DKIMCheckSignatureJob::CheckSignatureResult &checkResult)
0040 {
0041     qDebug() << "result : status " << checkResult.status << " error : " << checkResult.error << " warning " << checkResult.warning;
0042 }
0043 
0044 int main(int argc, char **argv)
0045 {
0046     QCoreApplication app(argc, argv);
0047     QStandardPaths::setTestModeEnabled(true);
0048     QCommandLineParser parser;
0049     parser.addVersionOption();
0050     parser.addHelpOption();
0051     parser.addOption(QCommandLineOption(QStringList() << QStringLiteral("+[file]"), QStringLiteral("File containing an email")));
0052 
0053     parser.process(app);
0054 
0055     QString filename;
0056     if (!parser.positionalArguments().isEmpty()) {
0057         filename = parser.positionalArguments().at(0);
0058     }
0059     (void)new CheckSignature(filename);
0060 
0061     app.exec();
0062     return 0;
0063 }
0064 
0065 #include "moc_checksignature.cpp"