File indexing completed on 2024-04-14 05:43:30

0001 /*
0002     SPDX-FileCopyrightText: 2012-2022 Rolf Eike Beer <kde@opensource.sf-tec.de>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "kgpgsigntext.h"
0007 
0008 #include "kgpgsettings.h"
0009 
0010 KGpgSignText::KGpgSignText(QObject *parent, const QString &signId, const QString &text, const SignOptions &options, const QStringList &extraOptions)
0011     : KGpgTextOrFileTransaction(parent, text),
0012     m_fileIndex(-1),
0013     m_options(options),
0014     m_signId(signId),
0015     m_extraOptions(extraOptions)
0016 {
0017 }
0018 
0019 KGpgSignText::KGpgSignText(QObject *parent, const QString &signId, const QList<QUrl> &files, const SignOptions &options, const QStringList &extraOptions)
0020     : KGpgTextOrFileTransaction(parent, files),
0021     m_fileIndex(0),
0022     m_options(options),
0023     m_signId(signId),
0024     m_extraOptions(extraOptions)
0025 {
0026     /* GnuPG can only handle one file at a time when signing */
0027     Q_ASSERT(files.count() == 1);
0028 }
0029 
0030 QStringList
0031 KGpgSignText::command() const
0032 {
0033     QStringList ret = m_extraOptions;
0034 
0035     const QList<QUrl> &files = getInputFiles();
0036     QString fileName;
0037 
0038     if (!files.isEmpty())
0039         fileName = files.first().path();
0040 
0041     ret << QLatin1String("-u") << m_signId;
0042 
0043     if (m_options & AsciiArmored) {
0044         if (fileName.isEmpty())
0045             ret << QLatin1String("--clearsign");
0046         else
0047             ret << QLatin1String("--armor");
0048     }
0049     if (KGpgSettings::pgpCompatibility())
0050         ret << QLatin1String("--pgp6");
0051 
0052     if (!fileName.isEmpty()) {
0053         if (m_options & DetachedSignature)
0054             ret << QLatin1String("--detach-sign") <<
0055                     QLatin1String("--output") << fileName + QLatin1String(".sig");
0056     }
0057 
0058     return ret;
0059 }
0060 
0061 QStringList
0062 KGpgSignText::signedText() const
0063 {
0064     QStringList result;
0065 
0066     for (const QString &line : getMessages())
0067         if (!line.startsWith(QLatin1String("[GNUPG:] "))) {
0068             result.append(line);
0069         }
0070 
0071     return result;
0072 }